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);
}
}
}