using MediatR; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Threading.Tasks; using UserManagement.Api.Helpers; using UserManagement.Data.Dto; using UserManagement.MediatR.Commands; using UserManagement.MediatR.Queries; namespace UserManagement.API.Controllers.Email { [Route("api/[controller]")] [ApiController] public class EmailSMTPSettingController : BaseController { IMediator _mediator; public EmailSMTPSettingController(IMediator mediator) { _mediator = mediator; } /// /// Create an Email SMTP Configuration. /// /// /// [HttpPost] [Produces("application/json", "application/xml", Type = typeof(EmailSMTPSettingDto))] [ClaimCheck("email_smtp_add")] public async Task AddEmailSMTPSetting(AddEmailSMTPSettingCommand addEmailSMTPSettingCommand) { var result = await _mediator.Send(addEmailSMTPSettingCommand); return ReturnFormattedResponse(result); } /// /// Get Email SMTP Configuration. /// /// [HttpGet("{id}")] [Produces("application/json", "application/xml", Type = typeof(EmailSMTPSettingDto))] [ClaimCheck("email_smtp_edit")] public async Task GetEmailSMTPSetting(Guid id) { var query = new GetEmailSMTPSettingQuery() { Id = id }; var result = await _mediator.Send(query); return ReturnFormattedResponse(result); } /// /// Get Email SMTP Configuration list. /// /// [HttpGet] [Produces("application/json", "application/xml", Type = typeof(List))] [ClaimCheck("email_smtp_list")] public async Task GetEmailSMTPSettings() { var query = new GetEmailSMTPSettingsQuery() { }; var result = await _mediator.Send(query); return Ok(result); } /// /// Update an Email SMTP Configuration. /// /// /// /// [HttpPut("{id}")] [Produces("application/json", "application/xml", Type = typeof(EmailSMTPSettingDto))] [ClaimCheck("email_smtp_edit")] public async Task UpdateEmailSMTPSetting(Guid id, UpdateEmailSMTPSettingCommand updateEmailSMTPSettingCommand) { updateEmailSMTPSettingCommand.Id = id; var result = await _mediator.Send(updateEmailSMTPSettingCommand); return ReturnFormattedResponse(result); } /// /// Delete an Email SMTP Configuration. /// /// /// [HttpDelete("{id}")] [Produces("application/json", "application/xml", Type = typeof(EmailSMTPSettingDto))] [ClaimCheck("email_smtp_delete")] public async Task DeleteEmailSMTPSetting(Guid id) { var deleteEmailSMTPSettingCommand = new DeleteEmailSMTPSettingCommand() { Id = id }; var result = await _mediator.Send(deleteEmailSMTPSettingCommand); return ReturnFormattedResponse(result); } } }