feat: implementado todo lo de auditoria tocaria testearlo nomás

This commit is contained in:
2025-01-27 20:13:15 -03:00
parent 7b1e70999f
commit 17fae0e777
20 changed files with 204 additions and 115 deletions

View File

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

View File

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

View File

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

View File

@@ -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

View File

@@ -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

View File

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

View File

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

View File

@@ -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<LogDetalle> ProcesarCambios(IEnumerable<Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry> cambios,
DateTime fechaActual, long dniUsuario) {
var logDetalles = new List<LogDetalle>();
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;
}
}

View File

@@ -0,0 +1,6 @@
namespace Modelo.Facade;
public class FiltroCambios {
public IEnumerable<Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry> FiltrarCambios(IEnumerable<Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry> cambios) {
return cambios.Where(c => c.Entity.GetType().Name != "EntidadExcluida");
}
}

View File

@@ -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<LogDetalle> detalles) {
var con = _context;
con.Logs.Add(log);
con.LogDetalles.AddRange(detalles);
con.SaveChanges();
}
}

View File

@@ -0,0 +1,6 @@
namespace Modelo.Facade;
public class ValidadorDeCambios {
public bool ValidarCambio(string valorAnterior, string valorNuevo) {
return !string.IsNullOrEmpty(valorNuevo) && valorAnterior != valorNuevo;
}
}

View File

@@ -1,4 +1,6 @@
using Entidades;
using Microsoft.EntityFrameworkCore;
using Modelo.Facade;
namespace Modelo;
@@ -9,6 +11,12 @@ public abstract class RepositorioBase<S>
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

View File

@@ -27,7 +27,7 @@ public class RepositorioCanons: RepositorioBase<RepositorioCanons> {
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<RepositorioCanons> {
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<RepositorioCanons> {
con.Canons.Add(c);
cont.Idcanons.Add(c);
}
GenerarLog(con, dni, $"Crear Canones");
return Guardar(con);
}
}

View File

@@ -14,7 +14,7 @@ public class RepositorioContratos: RepositorioBase<RepositorioContratos> {
}
}
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<RepositorioContratos> {
con.Contratos.Add(c);
con.Notificaciones.Add(n);
GenerarLog(con, dni, $"CargaPrecontrato");
return Guardar(con);
}
public bool CargaGarantes(List<Garante> gar, string emailInquilino, int idpropiedad) {
public bool CargaGarantes(List<Garante> 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<RepositorioContratos> {
con.Garantes.Add(i);
contr.Idgarantes.Add(i);
}
GenerarLog(con, dni, $"Alta Garantes");
return Guardar(con);
}
@@ -75,7 +75,7 @@ public class RepositorioContratos: RepositorioBase<RepositorioContratos> {
}
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<RepositorioContratos> {
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<RepositorioContratos> {
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<RepositorioContratos> {
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<RepositorioContratos> {
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<RepositorioContratos> {
con.Ventas.Add(v);
con.Contratos.Add(c);
con.Notificaciones.Add(n);
GenerarLog(con, dni, $"Carga Precontrato con opcion venta");
return Guardar(con);
}

View File

@@ -4,18 +4,20 @@ using Microsoft.EntityFrameworkCore;
namespace Modelo;
public class RepositorioDefectos: RepositorioBase<RepositorioDefectos> {
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);
}

View File

@@ -4,19 +4,6 @@ using Microsoft.EntityFrameworkCore;
namespace Modelo;
public class RepositorioGrupos: RepositorioBase<RepositorioGrupos> {
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<Permiso> ListarPermisosDeGrupo(string grupo) {
var con = Context;

View File

@@ -49,18 +49,4 @@ public class RepositorioPermisos: RepositorioBase<RepositorioPermisos> {
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
}

View File

@@ -70,7 +70,7 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
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<RepositorioPropiedades> {
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<RepositorioPropiedades> {
}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<int> idserv) {
public bool BajaServiciosAPropiedad(int idprop, List<int> 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<RepositorioPropiedades> {
prop.IdServicios.Remove(servicio);
}
}
GenerarLog(con, dni, $"Baja servicios a propiedad: {prop.Id}");
return Guardar(con);
}

View File

@@ -28,6 +28,7 @@ public class RepositorioUsuarios: RepositorioBase<RepositorioUsuarios> {
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<RepositorioUsuarios> {
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<RepositorioUsuarios> {
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<RepositorioUsuarios> {
}
cli.Idgrupos.Add(gru);
GenerarLog(con, cli.Dni, $"Añadir grupo: {gru.Nombre}");
return Guardar(con);
}
@@ -150,6 +154,7 @@ public class RepositorioUsuarios: RepositorioBase<RepositorioUsuarios> {
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<RepositorioUsuarios> {
} else {
cli.Habilitado = 0;
}
GenerarLog(con, cli.Dni, $"Baja cliente id: {cli.Dni}");
return Guardar(con);
}

View File

@@ -51,7 +51,7 @@ public class RepositorioVentas: RepositorioBase<RepositorioVentas> {
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<RepositorioVentas> {
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);
}
}