api para obtener datos de los logs

This commit is contained in:
2025-01-28 01:30:50 -03:00
parent 17fae0e777
commit c7880b03b3
4 changed files with 87 additions and 0 deletions

View File

@@ -0,0 +1,52 @@
using Entidades.Dto;
using Microsoft.AspNetCore.Mvc;
using Modelo;
namespace AlquilaFacil.Controllers;
[ApiController]
public class LogsController: ControllerBase {
[HttpGet("/api/Logs")]
public IActionResult ObtenerLogs([FromHeader(Name = "Auth")] string Auth, long pag=1) {
if (String.IsNullOrEmpty(Auth)) return Unauthorized();
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Informes");
if (validacion1 == false) return Unauthorized();
if (pag<=0) return BadRequest(new { message = "no puede haber una pagina 0 o menor"});
pag-=1;
var l = RepositorioLogs.Singleton.ObtenerLogsPaginado(pag);
List<LogDto> ll = new();
foreach (var i in l) {
ll.Add(new LogDto{
Fecha = i.Fecha,
Accion = i.Accion,
Dniusuario = i.Dniusuario,
});
}
return Ok(ll);
}
[HttpGet("/api/Logs/detalle")]
public IActionResult ObtenerLogs([FromHeader(Name = "Auth")] string Auth, [FromQuery]DateTime fecha, [FromQuery]long idusuario) {
if (String.IsNullOrEmpty(Auth)) return Unauthorized();
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Informes");
if (validacion1 == false) return Unauthorized();
if (idusuario<=0) return BadRequest(new { message = "no puede haber un id 0 o menor"});
var l = RepositorioLogs.Singleton.ObtenerDetallesLogs(fecha, idusuario);
List<LogDetalleDto> ll = new();
foreach (var i in l) {
ll.Add(new LogDetalleDto{
Fecha = i.Fecha,
Dniusuario = i.Dniusuario,
NombreTabla = i.NombreTabla,
Columna = i.Columna,
ValorAnterior = i.ValorAnterior,
ValorNuevo = i.ValorNuevo,
});
}
return Ok(ll);
}
}

View File

@@ -0,0 +1,9 @@
namespace Entidades.Dto;
public class LogDetalleDto {
public DateTime Fecha { get; set; }
public long Dniusuario { get; set; }
public string NombreTabla { get; set; } = null!;
public string Columna { get; set; } = null!;
public string? ValorAnterior { get; set; }
public string? ValorNuevo { get; set; }
}

7
Entidades/Logs/LogDto.cs Normal file
View File

@@ -0,0 +1,7 @@
namespace Entidades.Dto;
public class LogDto {
public DateTime Fecha { get; set; }
public long Dniusuario { get; set; }
public string Accion { get; set; } = null!;
}

19
Modelo/RepositorioLogs.cs Normal file
View File

@@ -0,0 +1,19 @@
using System.Linq;
using Entidades;
using Microsoft.EntityFrameworkCore;
namespace Modelo;
public class RepositorioLogs: RepositorioBase<RepositorioLogs> {
public ICollection<LogDetalle> ObtenerDetallesLogs(DateTime fecha, long idusuario) {
var con = Context;
var d = con.Logs.Include(x=>x.LogDetalles)
.FirstOrDefault(x => x.Fecha == fecha && x.Dniusuario == idusuario);
return d.LogDetalles;
}
public IQueryable<Log>? ObtenerLogsPaginado(int pag) {
var con = Context;
var l = con.Logs.Skip(10*pag).Take(10);
return l;
}
}