using MediatR; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Text.Json; using System.Threading.Tasks; using UserManagement.Api.Helpers; using UserManagement.Data.Dto; using UserManagement.MediatR.Commands; using UserManagement.MediatR.Queries; namespace UserManagement.API.Controllers.EmailTemplate { [Route("api/[controller]")] [ApiController] public class EmailTemplateController : BaseController { public IMediator _mediator { get; set; } private readonly ILogger _logger; /// /// Role /// /// /// public EmailTemplateController( IMediator mediator, ILogger logger) { _mediator = mediator; _logger = logger; } /// /// Create Email Template /// /// /// [HttpPost] [Produces("application/json", "application/xml", Type = typeof(EmailTemplateDto))] [ClaimCheck("email_template_add")] public async Task AddEmailTemplate(AddEmailTemplateCommand addEmailTemplateCommand) { var result = await _mediator.Send(addEmailTemplateCommand); if (result.StatusCode != 200) { _logger.LogError(result.StatusCode, JsonSerializer.Serialize(result), ""); return StatusCode(result.StatusCode, result); } if (!result.Success) { return ReturnFormattedResponse(result); } return CreatedAtAction("GetEmailTemplate", new { id = result.Data.Id }, result.Data); } /// /// Update Exist AppSetting By Id /// /// /// /// [HttpPut("{id}")] [Produces("application/json", "application/xml", Type = typeof(AppSettingDto))] [ClaimCheck("email_template_edit")] public async Task UpdateEmailTemplate(Guid id, UpdateEmailTemplateCommand updateEmailTemplateCommand) { updateEmailTemplateCommand.Id = id; var result = await _mediator.Send(updateEmailTemplateCommand); return ReturnFormattedResponse(result); } /// /// Get Email Template By Id /// /// /// [HttpGet("{id}", Name = "GetEmailTemplate")] [Produces("application/json", "application/xml", Type = typeof(EmailTemplateDto))] [ClaimCheck("email_template_edit")] public async Task GetEmailTemplate(Guid id) { _logger.LogTrace("GetAppSetting"); var getEmailTemplateQuery = new GetEmailTemplateQuery { Id = id }; var result = await _mediator.Send(getEmailTemplateQuery); return ReturnFormattedResponse(result); } /// /// Get All Email Templates /// /// [HttpGet(Name = "GetEmailTemplates")] [Produces("application/json", "application/xml", Type = typeof(List))] [ClaimCheck("email_template_list")] public async Task GetEmailTemplates() { var getAllEmailTemplateQuery = new GetAllEmailTemplateQuery { }; var result = await _mediator.Send(getAllEmailTemplateQuery); return ReturnFormattedResponse(result); } /// /// Delete Email Template By Id /// /// /// [HttpDelete("{Id}")] [ClaimCheck("email_template_delete")] public async Task DelterEmailTemplate(Guid Id) { var deleteEmailTemplateCommand = new DeleteEmailTemplateCommand { Id = Id }; var result = await _mediator.Send(deleteEmailTemplateCommand); return ReturnFormattedResponse(result); } } }