using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Threading.Tasks;
using UserManagement.Api.Helpers;
using UserManagement.Data.Dto;
using UserManagement.Data.Resources;
using UserManagement.MediatR.Commands;
using UserManagement.MediatR.Queries;
using UserManagement.Repository;
namespace UserManagement.API.Controllers
{
[Route("api/[controller]")]
[ApiController]
[Authorize]
public class NLogController(IMediator mediator) : BaseController
{
private readonly IMediator _mediator = mediator;
///
/// Get System Logs
///
///
///
[HttpGet]
[Produces("application/json", "application/xml", Type = typeof(NLogList))]
[ClaimCheck("system_logs_list")]
public async Task GetNLogs([FromQuery] NLogResource nLogResource)
{
var getAllLoginAuditQuery = new GetNLogsQuery
{
NLogResource = nLogResource
};
var result = await _mediator.Send(getAllLoginAuditQuery);
var paginationMetadata = new
{
totalCount = result.TotalCount,
pageSize = result.PageSize,
skip = result.Skip,
totalPages = result.TotalPages
};
Response.Headers.Append("X-Pagination",
Newtonsoft.Json.JsonConvert.SerializeObject(paginationMetadata));
return Ok(result);
}
///
/// Get Log By Id
///
///
///
[HttpGet("{id}")]
[Produces("application/json", "application/xml", Type = typeof(NLogDto))]
public async Task GetNLog(Guid id)
{
var getLogQuery = new GetLogQuery { Id = id };
var result = await _mediator.Send(getLogQuery);
return ReturnFormattedResponse(result);
}
///
/// Create Log.
///
///
///
[HttpPost]
[Produces("application/json", "application/xml", Type = typeof(NLogDto))]
public async Task CreatNLog(AddLogCommand addLogCommand)
{
var result = await _mediator.Send(addLogCommand);
return ReturnFormattedResponse(result);
}
}
}