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.AppSetting { /// /// App Setting /// [Route("api/[controller]")] [ApiController] public class AppSettingController : BaseController { public IMediator _mediator { get; set; } private readonly ILogger _logger; /// /// App Setting /// /// /// public AppSettingController( IMediator mediator, ILogger logger) { _mediator = mediator; _logger = logger; } /// /// Create Appsetting /// /// /// [HttpPost] [Produces("application/json", "application/xml", Type = typeof(AppSettingDto))] [ClaimCheck("app_settings_add")] public async Task AddAppSetting(AddAppSettingCommand addAppSettingCommand) { var result = await _mediator.Send(addAppSettingCommand); return ReturnFormattedResponse(result); } /// /// Update Exist AppSetting By Id /// /// /// /// [HttpPut("{id}")] [Produces("application/json", "application/xml", Type = typeof(AppSettingDto))] [ClaimCheck("app_settings_edit")] public async Task UpdateAppSetting(Guid id, UpdateAppSettingCommand updateAppSettingCommand) { updateAppSettingCommand.Id = id; var result = await _mediator.Send(updateAppSettingCommand); return ReturnFormattedResponse(result); } /// /// Get AppSetting By Id /// /// /// [HttpGet("{id}", Name = "GetAppSetting")] [Produces("application/json", "application/xml", Type = typeof(AppSettingDto))] [ClaimCheck("app_settings_list")] public async Task GetAppSetting(Guid id) { _logger.LogTrace("GetAppSetting"); var getAppSettingQuery = new GetAppSettingQuery { Id = id }; var result = await _mediator.Send(getAppSettingQuery); return ReturnFormattedResponse(result); } /// /// Get AppSetting By Key /// /// /// [HttpGet("key/{id}", Name = "GetAppSettingByKey")] [Produces("application/json", "application/xml", Type = typeof(AppSettingDto))] [ClaimCheck("app_settings_list")] public async Task GetAppSettingByKey(string key) { _logger.LogTrace("GetAppSettingByKey"); var getAppSettingByKeyQuery = new GetAppSettingByKeyQuery { Key = key }; var result = await _mediator.Send(getAppSettingByKeyQuery); return ReturnFormattedResponse(result); } /// /// Get All AppSettings /// /// [HttpGet(Name = "GetAppSettings")] [Produces("application/json", "application/xml", Type = typeof(List))] [ClaimCheck("app_settings_list")] public async Task GetAppSettings() { var getAllAppSettingQuery = new GetAllAppSettingQuery { }; var result = await _mediator.Send(getAllAppSettingQuery); return ReturnFormattedResponse(result); } /// /// Delete AppSetting By Id /// /// /// [HttpDelete("{Id}")] [ClaimCheck("app_settings_add")] public async Task DeleteAppSetting(Guid Id) { var deleteAppSettingCommand = new DeleteAppSettingCommand { Id = Id }; var result = await _mediator.Send(deleteAppSettingCommand); return ReturnFormattedResponse(result); } } }