diff --git a/Aspnet/Controllers/AdminController.cs b/Aspnet/Controllers/AdminController.cs index 759c19d..409aaae 100644 --- a/Aspnet/Controllers/AdminController.cs +++ b/Aspnet/Controllers/AdminController.cs @@ -117,8 +117,11 @@ public class AdminController: ControllerBase if (validacion1 == false) return Unauthorized(); if (id <= 0) return BadRequest(new { message = "Falto indicar id Propiedad"}); + + Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); + if (cli == null) return Unauthorized(); - var ret = RepositorioPropiedades.Singleton.BajaPropiedad(id); + var ret = RepositorioPropiedades.Singleton.BajaPropiedad(id, cli.Dni); return ret ? Ok(new {message = "Se cambio el estado de la propiedad"}): BadRequest(new { message = "No se pudo dar de baja"}); } diff --git a/Aspnet/Controllers/ContratoController.cs b/Aspnet/Controllers/ContratoController.cs index 6c6e822..23d34f7 100644 --- a/Aspnet/Controllers/ContratoController.cs +++ b/Aspnet/Controllers/ContratoController.cs @@ -85,7 +85,7 @@ public class ContratoController: ControllerBase { Fecha = c.Fecha, }; - bool ret = RepositorioCanons.Singleton.SetRecibo(c, re); + bool ret = RepositorioCanons.Singleton.SetRecibo(c, re, cli.Dni); return ret ? Ok(new { message = "Se guardo correctamente"}):BadRequest(new { message = "No se pudo guardar"}); @@ -114,7 +114,7 @@ public class ContratoController: ControllerBase { Fecha = c.Fecha, }; - bool ret = RepositorioCanons.Singleton.SetRecibo(c, re); + bool ret = RepositorioCanons.Singleton.SetRecibo(c, re, cli.Dni); return ret ? Ok(new { message = "Se guardo correctamente"}):BadRequest(new { message = "No se pudo guardar"}); } @@ -133,7 +133,7 @@ public class ContratoController: ControllerBase { if (cont == null) return BadRequest(new { message = "no hay un contrato por esa id"}); if (cli.Dni != cont.Dnipropietario) return BadRequest(new {message = "No sos el propietario o intenta volviendote a logear"}); - var ret = RepositorioCanons.Singleton.CrearCanons(dto.aumento, dto.idcontrato); + var ret = RepositorioCanons.Singleton.CrearCanons(dto.aumento, dto.idcontrato, cli.Dni); return ret ? Ok(new { message = "Se crearon los canons correctamente"}):BadRequest(new { message = "No se pudo guardar"}); } @@ -352,14 +352,14 @@ public class ContratoController: ControllerBase { bool ret; if (dto.TieneOpcionVenta==false){ - ret = RepositorioContratos.Singleton.CargaPrecontrato(precontrato, notificacion); + ret = RepositorioContratos.Singleton.CargaPrecontrato(cli.Dni, precontrato, notificacion); } else { Venta v = new Venta{ Idestado = 1, Iddivisa = dto.iddivisa, Monto = dto.MontoOpcion, }; - ret = RepositorioContratos.Singleton.CargaPrecontratoOpcionVenta(precontrato, notificacion, v); + ret = RepositorioContratos.Singleton.CargaPrecontratoOpcionVenta(precontrato, notificacion, v, cli.Dni); } if (ret) { @@ -411,7 +411,7 @@ public class ContratoController: ControllerBase { var contr = RepositorioContratos.Singleton.ObtenerContrato(dto.EmailInquilino, dto.Idpropiedad); if (contr == null) return BadRequest(new { message = "No existe el contrato o ya fue activado"}); - var ret = RepositorioContratos.Singleton.CargaGarantes(gar, dto.EmailInquilino, dto.Idpropiedad); + var ret = RepositorioContratos.Singleton.CargaGarantes(gar, dto.EmailInquilino, dto.Idpropiedad, cli.Dni); if (ret) { Console.WriteLine(dto.fecha); RepositorioNotificaciones.Singleton.MarcarComoLeido(cli.Dni, dto.fecha); @@ -440,6 +440,9 @@ public class ContratoController: ControllerBase { var validacion2 = ValidarCancelarDto(dto); if (validacion2 != "") return BadRequest(new {message = validacion2}); + Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); + if (cli==null) return Unauthorized(); + Cliente? pro = RepositorioPropietario.Singleton.ObtenerPropietarioPorEmail(dto.EmailPropietario); if (pro == null) return BadRequest(new {message = "No Existe Usuario con ese email"}); if (pro.Token != Auth) return BadRequest(new {message = "El token de auth no corresponde al token el usuario propietario"}); @@ -451,10 +454,10 @@ public class ContratoController: ControllerBase { var inq = RepositorioInquilinos.Singleton.ObtenerInquilinoPorEmail(dto.EmailInquilino); if (inq == null) return BadRequest(new {message = "No hay un inquilino por ese email"}); - var ret = RepositorioContratos.Singleton.CancelarPrecontrato(dto.EmailInquilino, dto.idpropiedad); + var ret = RepositorioContratos.Singleton.CancelarPrecontrato(dto.EmailInquilino, dto.idpropiedad, cli.Dni); if (ret) { prop.Idestado = 1; - ret = RepositorioPropiedades.Singleton.PatchPropiedad(prop); + ret = RepositorioPropiedades.Singleton.PatchPropiedad(prop, pro.Dni); if (ret){ RepositorioNotificaciones.Singleton.MarcarComoLeido(pro.Dni, dto.fecha); var noti = new NotificacioneBuilder() @@ -549,7 +552,7 @@ public class ContratoController: ControllerBase { bool ret = await subirContrato(contrato, nuevoNombreArchivo); if(ret == false) return BadRequest(new {message = "No se pudo subir el archivo"}); - ret = RepositorioContratos.Singleton.AddUrl(contr.Id, nuevoNombreArchivo); + ret = RepositorioContratos.Singleton.AddUrl(contr.Id, nuevoNombreArchivo, cli.Dni); if (ret == false) return BadRequest(new { message = "No se pudo guardar la url del contrato" }); var noti = new NotificacioneBuilder() @@ -670,7 +673,7 @@ public class ContratoController: ControllerBase { if (cli == null) return BadRequest(new { message = "No hay un cliente por ese token"}); if (cli.Dni != contr.Dniinquilino) return BadRequest(new { message = "El token no corresponde con el del inquilino"}); - bool ret = RepositorioContratos.Singleton.AceptarContrato(dto.Idcontrato); + bool ret = RepositorioContratos.Singleton.AceptarContrato(dto.Idcontrato, cli.Dni); if (ret == false) return BadRequest(new { message ="fallo al aceptar el contrato"}); RepositorioNotificaciones.Singleton.MarcarComoLeido(cli.Dni, dto.Fecha); @@ -707,7 +710,7 @@ public class ContratoController: ControllerBase { if (cli == null) return BadRequest(new { message = "No hay un cliente por ese token"}); if (cli.Dni != contr.Dniinquilino) return BadRequest(new { message = "El token no corresponde con el del inquilino"}); - var ret = RepositorioContratos.Singleton.CancelarPrecontrato(dto.Idcontrato); + var ret = RepositorioContratos.Singleton.CancelarPrecontrato(dto.Idcontrato, cli.Dni); if (ret == false) return BadRequest(new {message = "Fallo al intentar cancelar el precontrato"}); RepositorioNotificaciones.Singleton.MarcarComoLeido(cli.Dni, dto.Fecha); diff --git a/Aspnet/Controllers/DefectoController.cs b/Aspnet/Controllers/DefectoController.cs index a7f9fef..6096e7c 100644 --- a/Aspnet/Controllers/DefectoController.cs +++ b/Aspnet/Controllers/DefectoController.cs @@ -53,6 +53,9 @@ public class DefectoController: ControllerBase { var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino"); if (validacion1 == false) return Unauthorized(); + Cliente? cli =RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); + if (cli == null) return Unauthorized(); + string r = ValidarDto(data); if (r != "") return BadRequest(new { message = r }); @@ -65,7 +68,7 @@ public class DefectoController: ControllerBase { Idestado = 1, }; - var b = RepositorioDefectos.Singleton.AltaDefecto(defecto); + var b = RepositorioDefectos.Singleton.AltaDefecto(defecto, cli.Dni); return b ?Ok(new { message = "Se cargo el Defecto en el sistema"}):BadRequest(new { message ="No se pudo cargar el defecto en el sistema"}); } @@ -86,8 +89,11 @@ public class DefectoController: ControllerBase { var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario"); if (validacion1 == false) return Unauthorized(); + Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); + if (cli==null) return Unauthorized(); + if (iddefecto<=0) return BadRequest(new { message = "No hay canones con id 0 o menor"}); - bool ret = RepositorioDefectos.Singleton.MarcarPago(iddefecto); + bool ret = RepositorioDefectos.Singleton.MarcarPago(iddefecto, cli.Dni); return ret ? Ok(new { message = "Se marco como pagado" }):BadRequest(new { message = "Fallo el acceso a la base de datos o no se encontro el defecto" }); diff --git a/Aspnet/Controllers/GruposController.cs b/Aspnet/Controllers/GruposController.cs deleted file mode 100644 index be028f2..0000000 --- a/Aspnet/Controllers/GruposController.cs +++ /dev/null @@ -1,22 +0,0 @@ -#if DEBUG -using Microsoft.AspNetCore.Mvc; -using Modelo; -namespace AlquilaFacil.Controllers; - -[ApiController] -public class GruposController: ControllerBase { - [HttpPost("api/admin/grupos")] - public IActionResult CrearGrupo([FromBody] AdminGrupo grupo, [FromHeader(Name = "Auth")] string Auth) { - if (!string.IsNullOrEmpty(Auth)) return BadRequest(); - var ret2 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 10); - if (ret2 == false) return BadRequest(ret2); - - if (String.IsNullOrEmpty(grupo.descripcion)) return BadRequest(); - - bool ret = RepositorioGrupos.Singleton.CrearGrupo(grupo.descripcion); - return (ret) ? Ok(ret) : BadRequest(); - } -} - -public record AdminGrupo(string descripcion); -#endif \ No newline at end of file diff --git a/Aspnet/Controllers/PermisosController.cs b/Aspnet/Controllers/PermisosController.cs deleted file mode 100644 index a63f9a1..0000000 --- a/Aspnet/Controllers/PermisosController.cs +++ /dev/null @@ -1,23 +0,0 @@ -#if DEBUG -using System.Text.Json; -using Microsoft.AspNetCore.Mvc; -using Modelo; -namespace AlquilaFacil.Controllers; - -[ApiController] -public class PermisosController: ControllerBase { - [HttpPost("api/admin/permisos")] - public IActionResult CrearPermisos([FromBody] AdminPermiso permiso, [FromHeader(Name = "Auth")] string Auth) { - if (!string.IsNullOrEmpty(Auth)) return BadRequest(); - var ret2 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 11); - if (ret2 == false) return BadRequest(ret2); - - if (String.IsNullOrEmpty(permiso.descripcion)) return BadRequest(); - - bool ret = RepositorioPermisos.Singleton.CrearPermiso(permiso.descripcion); - return (ret) ? Ok(ret) : BadRequest(); - } -} - -public record AdminPermiso(string descripcion); -#endif \ No newline at end of file diff --git a/Aspnet/Controllers/PropiedadesController.cs b/Aspnet/Controllers/PropiedadesController.cs index 26f34b6..8b3ed9b 100644 --- a/Aspnet/Controllers/PropiedadesController.cs +++ b/Aspnet/Controllers/PropiedadesController.cs @@ -146,7 +146,7 @@ public class PropiedadesController: ControllerBase { Iddivisa = propiedad.Iddivisa, }; - bool ret = RepositorioPropiedades.Singleton.PatchPropiedad(Prop); + bool ret = RepositorioPropiedades.Singleton.PatchPropiedad(Prop, cli.Dni); return (ret)? Ok(new {message = "Fue modificado Correctamente"}): BadRequest(new {message = "Fallo al modificar la base de datos"}); @@ -203,11 +203,13 @@ public class PropiedadesController: ControllerBase { if (servicio.idServicios.Count() < 1) return BadRequest(new {message ="Falta añadir servicios"}); if (servicio.idServicios.Any(x => x<= 0)) return BadRequest(new {message ="No tienen haber ids negativas o cero de servicio"}); + Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); + var serv = RepositorioServicios.Singleton.ObtenerServiciosPorPropiedad(servicio.propiedadid); var repetidos = serv.Intersect(servicio.idServicios); - bool ret = RepositorioPropiedades.Singleton.BajaServiciosAPropiedad(servicio.propiedadid, servicio.idServicios); + bool ret = RepositorioPropiedades.Singleton.BajaServiciosAPropiedad(servicio.propiedadid, servicio.idServicios, cli.Dni); return ret ? Ok(new {message ="Se Eliminaron los servicios seleccionados de la propiedad"}) : BadRequest(new {message ="Fallo al eliminarse los servicios de la propiedad"}); diff --git a/Aspnet/Controllers/VentaController.cs b/Aspnet/Controllers/VentaController.cs index b9857dd..b9cb319 100644 --- a/Aspnet/Controllers/VentaController.cs +++ b/Aspnet/Controllers/VentaController.cs @@ -36,7 +36,7 @@ public class VentaController:ControllerBase { venta.Idpropiedad = cont.Idpropiedad; venta.Fechainicio = DateTime.Now; - bool ret = RepositorioVentas.Singleton.PatchVenta(venta); + bool ret = RepositorioVentas.Singleton.PatchVenta(venta, cli.Dni); return ret? Ok(new { message = "Se ejercio la opcion de venta"}): @@ -72,7 +72,7 @@ public class VentaController:ControllerBase { bool ret = await subirContrato(file, nuevoNombreArchivo); if(ret == false) return BadRequest(new {message = "No se pudo subir el archivo"}); - ret = RepositorioVentas.Singleton.SetUrlRecibo(venta.Id, nuevoNombreArchivo); + ret = RepositorioVentas.Singleton.SetUrlRecibo(venta.Id, nuevoNombreArchivo, cli.Dni); if (ret == false) return BadRequest(new { message = "no se pudo guardar el nombre del archivo subido"}); return Ok(new { message = "Se Subio el Recibo"}); diff --git a/Modelo/Facade/AuditoriaFacade.cs b/Modelo/Facade/AuditoriaFacade.cs new file mode 100644 index 0000000..d455c70 --- /dev/null +++ b/Modelo/Facade/AuditoriaFacade.cs @@ -0,0 +1,98 @@ +using Entidades; +using Microsoft.EntityFrameworkCore; + +namespace Modelo.Facade; +public class AuditoriaFacade { + private readonly AlquilaFacilContext _context; + private readonly FiltroCambios _filtradoDeCambios=new(); + private readonly ValidadorDeCambios _validadorDeCambios=new(); + private readonly PersistenciaLog _persistenciaDeLog=new(); + + public AuditoriaFacade(AlquilaFacilContext context) { + _context = context; + } + + public void GenerarLog(long dniUsuario, string v) { + var cambios = _filtradoDeCambios.FiltrarCambios(_context.ChangeTracker.Entries()); + + var fechaActual = DateTime.Now; + + var log = new Log{ + Fecha = fechaActual, + Dniusuario = dniUsuario, + Accion = v + }; + + log.LogDetalles = ProcesarCambios(cambios, fechaActual, dniUsuario); + + _persistenciaDeLog.GuardarLog(log, log.LogDetalles); + } + + private List ProcesarCambios(IEnumerable cambios, + DateTime fechaActual, long dniUsuario) { + + var logDetalles = new List(); + foreach (var cambio in cambios) { + var nombreTabla = cambio.Entity.GetType().Name; + Console.WriteLine($"Entidad: {cambio.Entity.GetType().Name}, Estado: {cambio.State}"); + + switch (cambio.State) { + case EntityState.Modified: + foreach (var propiedad in cambio.OriginalValues.Properties) { + if (propiedad.Name == "Token") break; + var valorAnterior = cambio.OriginalValues[propiedad]?.ToString(); + var valorNuevo = cambio.CurrentValues[propiedad]?.ToString(); + + if (_validadorDeCambios.ValidarCambio(valorAnterior??"", valorNuevo??"")) { + logDetalles.Add(new LogDetalle { + Fecha = fechaActual, + Dniusuario = dniUsuario, + NombreTabla = nombreTabla, + Columna = propiedad.Name, + ValorAnterior = valorAnterior, + ValorNuevo = valorNuevo + }); + } + } + break; + + case EntityState.Added: + foreach (var propiedad in cambio.CurrentValues.Properties) { + if (propiedad.Name == "Token") break; + var valorNuevo = cambio.CurrentValues[propiedad]?.ToString(); + + logDetalles.Add(new LogDetalle { + Fecha = fechaActual, + Dniusuario = dniUsuario, + NombreTabla = nombreTabla, + Columna = propiedad.Name, + ValorAnterior = null, + ValorNuevo = valorNuevo + }); + } + break; + + case EntityState.Deleted: + foreach (var propiedad in cambio.OriginalValues.Properties) { + if (propiedad.Name == "Token") break; + var valorAnterior = cambio.OriginalValues[propiedad]?.ToString(); + + logDetalles.Add(new LogDetalle { + Fecha = fechaActual, + Dniusuario = dniUsuario, + NombreTabla = nombreTabla, + Columna = propiedad.Name, + ValorAnterior = valorAnterior, + ValorNuevo = null + }); + } + break; + + default: + Console.WriteLine($"Estado no manejado: {cambio.State}"); + break; + } + } + return logDetalles; + } +} diff --git a/Modelo/Facade/FiltroCambios.cs b/Modelo/Facade/FiltroCambios.cs new file mode 100644 index 0000000..7aa6d1c --- /dev/null +++ b/Modelo/Facade/FiltroCambios.cs @@ -0,0 +1,6 @@ +namespace Modelo.Facade; +public class FiltroCambios { + public IEnumerable FiltrarCambios(IEnumerable cambios) { + return cambios.Where(c => c.Entity.GetType().Name != "EntidadExcluida"); + } +} diff --git a/Modelo/Facade/PersistenciaLog.cs b/Modelo/Facade/PersistenciaLog.cs new file mode 100644 index 0000000..7b51b5d --- /dev/null +++ b/Modelo/Facade/PersistenciaLog.cs @@ -0,0 +1,11 @@ +using Entidades; +namespace Modelo.Facade; +public class PersistenciaLog { + private AlquilaFacilContext _context {get{return new AlquilaFacilContext();}} + public void GuardarLog(Log log, IEnumerable detalles) { + var con = _context; + con.Logs.Add(log); + con.LogDetalles.AddRange(detalles); + con.SaveChanges(); + } +} diff --git a/Modelo/Facade/ValidadorCambios.cs b/Modelo/Facade/ValidadorCambios.cs new file mode 100644 index 0000000..f49a25f --- /dev/null +++ b/Modelo/Facade/ValidadorCambios.cs @@ -0,0 +1,6 @@ +namespace Modelo.Facade; +public class ValidadorDeCambios { + public bool ValidarCambio(string valorAnterior, string valorNuevo) { + return !string.IsNullOrEmpty(valorNuevo) && valorAnterior != valorNuevo; + } +} diff --git a/Modelo/RepositorioBase.cs b/Modelo/RepositorioBase.cs index 11eeabc..26a4142 100644 --- a/Modelo/RepositorioBase.cs +++ b/Modelo/RepositorioBase.cs @@ -1,4 +1,6 @@ using Entidades; +using Microsoft.EntityFrameworkCore; +using Modelo.Facade; namespace Modelo; @@ -9,6 +11,12 @@ public abstract class RepositorioBase private static readonly S instance = new(); public static S Singleton { get { return instance; }} + public void GenerarLog(AlquilaFacilContext context, long dni, string accion) { + var Auditoria = new AuditoriaFacade(context); + + Auditoria.GenerarLog(dni, accion??""); + return; + } public bool Guardar(AlquilaFacilContext context) { bool ret = false; try diff --git a/Modelo/RepositorioCanons.cs b/Modelo/RepositorioCanons.cs index f1811da..ecb8ce2 100644 --- a/Modelo/RepositorioCanons.cs +++ b/Modelo/RepositorioCanons.cs @@ -27,7 +27,7 @@ public class RepositorioCanons: RepositorioBase { return cc; } - public bool SetRecibo(Canon c, Recibo re) { + public bool SetRecibo(Canon c, Recibo re, long dni) { var con = Context; var cc = con.Canons .Include(x=>x.Idcontratos) @@ -51,10 +51,12 @@ public class RepositorioCanons: RepositorioBase { ccc.IdpropiedadNavigation.Idestado = 3; } + GenerarLog(con, dni, $"Set Recibo"); + return Guardar(con); } - public bool CrearCanons(decimal aumento, long idcontrato) { + public bool CrearCanons(decimal aumento, long idcontrato, long dni) { var con = Context; aumento/=100; @@ -86,6 +88,8 @@ public class RepositorioCanons: RepositorioBase { con.Canons.Add(c); cont.Idcanons.Add(c); } + GenerarLog(con, dni, $"Crear Canones"); + return Guardar(con); } } \ No newline at end of file diff --git a/Modelo/RepositorioContratos.cs b/Modelo/RepositorioContratos.cs index efdc58c..8016950 100644 --- a/Modelo/RepositorioContratos.cs +++ b/Modelo/RepositorioContratos.cs @@ -14,7 +14,7 @@ public class RepositorioContratos: RepositorioBase { } } - public bool CargaPrecontrato( Contrato? c = null, Notificacione? n = null) { + public bool CargaPrecontrato(long dni, Contrato? c = null, Notificacione? n = null) { if (c == null || c.Habilitado == 1) return false; if (n == null) return false; var con = Context; @@ -29,10 +29,10 @@ public class RepositorioContratos: RepositorioBase { con.Contratos.Add(c); con.Notificaciones.Add(n); - + GenerarLog(con, dni, $"CargaPrecontrato"); return Guardar(con); } - public bool CargaGarantes(List gar, string emailInquilino, int idpropiedad) { + public bool CargaGarantes(List gar, string emailInquilino, int idpropiedad, long dni) { var con = Context; Contrato? contr = con.Contratos.Include(x=>x.DniinquilinoNavigation).Include(x=>x.Idgarantes) .FirstOrDefault(x=>x.Idpropiedad == idpropiedad && @@ -48,7 +48,7 @@ public class RepositorioContratos: RepositorioBase { con.Garantes.Add(i); contr.Idgarantes.Add(i); } - + GenerarLog(con, dni, $"Alta Garantes"); return Guardar(con); } @@ -75,7 +75,7 @@ public class RepositorioContratos: RepositorioBase { } - public bool CancelarPrecontrato(string emailInquilino, int idpropiedad) { + public bool CancelarPrecontrato(string emailInquilino, int idpropiedad, long dni) { var con = Context; Contrato? contr = con.Contratos.Include(x=>x.DniinquilinoNavigation) .FirstOrDefault(x=>x.Idpropiedad == idpropiedad && @@ -86,6 +86,7 @@ public class RepositorioContratos: RepositorioBase { if (contr == null || contr.IdpropiedadNavigation == null) return false; contr.Cancelado = 1; contr.IdpropiedadNavigation.Idestado = 1; + GenerarLog(con, dni, $"Cancelar Precontrato"); return Guardar(con); } @@ -101,16 +102,17 @@ public class RepositorioContratos: RepositorioBase { return contr; } - public bool AddUrl(long id, string nuevoNombreArchivo) { + public bool AddUrl(long id, string nuevoNombreArchivo, long dni) { var con = Context; Contrato? contrato = con.Contratos .FirstOrDefault(x=>x.Id == id); if (contrato == null) return false; contrato.UrlContrato = nuevoNombreArchivo; + GenerarLog(con, dni, $"Añadido contrato"); return Guardar(con); } - public bool AceptarContrato(long idcontrato) { + public bool AceptarContrato(long idcontrato, long dni) { var con = Context; Contrato? cont = con.Contratos .Include(x=>x.Idcanons) @@ -151,15 +153,18 @@ public class RepositorioContratos: RepositorioBase { cont.Idcanons.Add(can); } } + GenerarLog(con, dni, $"Aceptado contrato"); return Guardar(con); } - public bool CancelarPrecontrato(long idcontrato) { + public bool CancelarPrecontrato(long idcontrato, long dni) { var con = Context; Contrato? cont = con.Contratos.Include(x=>x.IdpropiedadNavigation).FirstOrDefault(x=>x.Id ==idcontrato && x.Habilitado ==0); if (cont == null|| cont.IdpropiedadNavigation==null) return false; cont.Cancelado = 1; cont.IdpropiedadNavigation.Idestado = 1; + GenerarLog(con, dni, $"Cancelar Precontrato"); + return Guardar(con); } @@ -214,7 +219,7 @@ public class RepositorioContratos: RepositorioBase { return Guardar(con); } - public bool CargaPrecontratoOpcionVenta(Contrato c, Notificacione n, Venta v) { + public bool CargaPrecontratoOpcionVenta(Contrato c, Notificacione n, Venta v, long dni) { if (c == null || c.Habilitado == 1) return false; if (n == null) return false; var con = Context; @@ -233,6 +238,7 @@ public class RepositorioContratos: RepositorioBase { con.Ventas.Add(v); con.Contratos.Add(c); con.Notificaciones.Add(n); + GenerarLog(con, dni, $"Carga Precontrato con opcion venta"); return Guardar(con); } diff --git a/Modelo/RepositorioDefectos.cs b/Modelo/RepositorioDefectos.cs index df62251..fbbf099 100644 --- a/Modelo/RepositorioDefectos.cs +++ b/Modelo/RepositorioDefectos.cs @@ -4,18 +4,20 @@ using Microsoft.EntityFrameworkCore; namespace Modelo; public class RepositorioDefectos: RepositorioBase { - public bool AltaDefecto(Defecto defecto){ + public bool AltaDefecto(Defecto defecto, long dni){ var con = Context; defecto.Id = con.Defectos.Any()? con.Defectos.Count()+1 : 1; con.Defectos.Add(defecto); + GenerarLog(con, dni, $"Alta Defecto: {defecto.Id}"); return Guardar(con); } - public bool MarcarPago(long iddefecto){ + public bool MarcarPago(long iddefecto, long dni){ var con = Context; var d = con.Defectos.FirstOrDefault(x=>x.Id == iddefecto); if (d == null)return false; d.Idestado = 2; + GenerarLog(con, dni, $"Marcado Pago Defecto: {iddefecto}"); return Guardar(con); } diff --git a/Modelo/RepositorioGrupos.cs b/Modelo/RepositorioGrupos.cs index 81cc13d..2f5a476 100644 --- a/Modelo/RepositorioGrupos.cs +++ b/Modelo/RepositorioGrupos.cs @@ -4,19 +4,6 @@ using Microsoft.EntityFrameworkCore; namespace Modelo; public class RepositorioGrupos: RepositorioBase { - public bool CrearGrupo(string descripcion) - { - var con = Context; - - int mx = con.Grupos.Max(grupo => grupo.Id); - Grupo gru = new Grupo{ - Id = mx+1, - Nombre = descripcion, - }; - con.Grupos.Add(gru); - - return Guardar(con); - } public IQueryable ListarPermisosDeGrupo(string grupo) { var con = Context; diff --git a/Modelo/RepositorioPermisos.cs b/Modelo/RepositorioPermisos.cs index e92a993..a5d4445 100644 --- a/Modelo/RepositorioPermisos.cs +++ b/Modelo/RepositorioPermisos.cs @@ -49,18 +49,4 @@ public class RepositorioPermisos: RepositorioBase { return tienePermiso; } - -#if DEBUG - public bool CrearPermiso(string descripcion) { - var con = Context; - int mx = con.Permisos.Max(x => x.Id); - - Permiso per = new Permiso{ - Id = mx+1, - Descripcion = descripcion - }; - con.Permisos.Add(per); - return Guardar(con); - } -#endif } \ No newline at end of file diff --git a/Modelo/RepositorioPropiedades.cs b/Modelo/RepositorioPropiedades.cs index 62ba127..3439afe 100644 --- a/Modelo/RepositorioPropiedades.cs +++ b/Modelo/RepositorioPropiedades.cs @@ -70,7 +70,7 @@ public class RepositorioPropiedades: RepositorioBase { return (int)filasInsertadasParam.Value == 1? true: false; } - public bool PatchPropiedad(Propiedade prop) { + public bool PatchPropiedad(Propiedade prop, long dni) { var con = Context; Propiedade? propi = con.Propiedades.Include(x=>x.IdServicios).FirstOrDefault(x=>x.Id == prop.Id); @@ -90,7 +90,7 @@ public class RepositorioPropiedades: RepositorioBase { if (servi == null) return false; propi.IdServicios.Add(servi); } - + GenerarLog(con, dni, $"Se modificó: {prop.Id}"); return Guardar(con); } @@ -156,23 +156,23 @@ public class RepositorioPropiedades: RepositorioBase { }else{ prop.Idestado = 1; } - + GenerarLog(con, cli.Dni, $"Baja propiedad: {prop.Id}"); return Guardar(con); } - public bool BajaPropiedad(int id) { + public bool BajaPropiedad(int id, long dni) { var con = Context; Propiedade? prop = con.Propiedades.FirstOrDefault(x=>x.Id == id); if (prop == null||prop.Dnipropietario == 0) return false; prop.Idestado = prop.Idestado == 3 ? 1 : 3; - + GenerarLog(con, dni, $"Baja propiedad: {prop.Id}"); return Guardar(con); } - public bool BajaServiciosAPropiedad(int idprop, List idserv) { + public bool BajaServiciosAPropiedad(int idprop, List idserv, long dni) { var con = Context; Propiedade? prop = con.Propiedades.Include(x=>x.IdServicios).FirstOrDefault(x => x.Id == idprop); if (prop == null) return false; @@ -186,7 +186,7 @@ public class RepositorioPropiedades: RepositorioBase { prop.IdServicios.Remove(servicio); } } - + GenerarLog(con, dni, $"Baja servicios a propiedad: {prop.Id}"); return Guardar(con); } diff --git a/Modelo/RepositorioUsuarios.cs b/Modelo/RepositorioUsuarios.cs index f0dd6af..2b2684f 100644 --- a/Modelo/RepositorioUsuarios.cs +++ b/Modelo/RepositorioUsuarios.cs @@ -28,6 +28,7 @@ public class RepositorioUsuarios: RepositorioBase { if (cli.Dni == 0) return false; cli.Idgrupos.Add(grupo); + GenerarLog(con, cli.Dni, $"Alta Inquilino: {cli.Dni}"); return Guardar(con); } @@ -52,6 +53,7 @@ public class RepositorioUsuarios: RepositorioBase { if (cli.Dni == 0) return false; cli.Idgrupos.Add(grupo); + GenerarLog(con, cli.Dni, $"Alta Propietario: {cli.Dni}"); return Guardar(con); } @@ -67,7 +69,8 @@ public class RepositorioUsuarios: RepositorioBase { public bool CheckUsuario(LoginDto logindto) { - + if (logindto.Contraseña ==null)return false; + string Contraseña = HacerHash(logindto.Contraseña); Cliente? usu = Context.Clientes.FirstOrDefault(a => a.Email == logindto.Email); @@ -137,6 +140,7 @@ public class RepositorioUsuarios: RepositorioBase { } cli.Idgrupos.Add(gru); + GenerarLog(con, cli.Dni, $"Añadir grupo: {gru.Nombre}"); return Guardar(con); } @@ -150,6 +154,7 @@ public class RepositorioUsuarios: RepositorioBase { return false; } cli.Idgrupos.Remove(gru); + GenerarLog(con, cli.Dni, $"Eliminar de grupo: {gru.Nombre}"); return Guardar(con); } @@ -164,7 +169,7 @@ public class RepositorioUsuarios: RepositorioBase { } else { cli.Habilitado = 0; } - + GenerarLog(con, cli.Dni, $"Baja cliente id: {cli.Dni}"); return Guardar(con); } diff --git a/Modelo/RepositorioVentas.cs b/Modelo/RepositorioVentas.cs index 4ab7596..647cce6 100644 --- a/Modelo/RepositorioVentas.cs +++ b/Modelo/RepositorioVentas.cs @@ -51,7 +51,7 @@ public class RepositorioVentas: RepositorioBase { return venta; } - public bool PatchVenta(Venta venta) { + public bool PatchVenta(Venta venta, long dni) { var con = Context; var a = con.Ventas.FirstOrDefault(x=>x.Id == venta.Id); @@ -60,15 +60,16 @@ public class RepositorioVentas: RepositorioBase { a.Idpropiedad = venta.Idpropiedad; a.Fechainicio = venta.Fechainicio; a.Idestado=2; - + GenerarLog(con, dni, $"Se Ejercio la opcion de venta para la propiedad: {venta.Idpropiedad}"); return Guardar(con); } - public bool SetUrlRecibo(long id, string nuevoNombreArchivo) { + public bool SetUrlRecibo(long id, string nuevoNombreArchivo, long dni) { var con = Context; var venta = con.Ventas.FirstOrDefault(x=>x.Id == id); if (venta==null) return false; venta.UrlRecibo = nuevoNombreArchivo; + GenerarLog(con, dni, $"Se seteo el recibo con nombre: {nuevoNombreArchivo}"); return Guardar(con); } } \ No newline at end of file