From 5f56b32afafb5ed1d41966de3c159371741bf60c Mon Sep 17 00:00:00 2001 From: fede Date: Fri, 10 Jan 2025 04:47:22 -0300 Subject: [PATCH] algun avance tengo --- Aspnet/Controllers/ContratoController.cs | 46 +++++++++++++++---- Entidades/Dto/CancelarPrecontratoDto.cs | 8 ++++ .../Componentes/ModalCheckYContrato.svelte | 21 +++++++++ Front/src/paginas/Notificaciones.svelte | 10 +++- Modelo/RepositorioContratos.cs | 18 +++++++- Modelo/RepositorioPropiedades.cs | 4 +- Modelo/RepositorioPropietario.cs | 7 +-- 7 files changed, 95 insertions(+), 19 deletions(-) create mode 100644 Entidades/Dto/CancelarPrecontratoDto.cs create mode 100644 Front/src/Componentes/ModalCheckYContrato.svelte diff --git a/Aspnet/Controllers/ContratoController.cs b/Aspnet/Controllers/ContratoController.cs index 132cf39..9d0adec 100644 --- a/Aspnet/Controllers/ContratoController.cs +++ b/Aspnet/Controllers/ContratoController.cs @@ -105,30 +105,55 @@ public class ContratoController: ControllerBase { gar.Add(g); } + 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); if (ret) { Console.WriteLine(dto.fecha); - ret = RepositorioNotificaciones.Singleton.MarcarComoLeido(cli.Dni, dto.fecha); - + RepositorioNotificaciones.Singleton.MarcarComoLeido(cli.Dni, dto.fecha); + var noti = new NotificacioneBuilder() .SetIdpropiedad(dto.Idpropiedad) - .SetAccion("Comprobar Garantes") - .SetMensaje($"") + .SetAccion("Check y Contrato") + .SetMensaje($"El inquilino cargó los datos de garantes comprobá y carga el contrato: {contr.Id}") .SetLeido(false) .SetDniremitente(cli.Dni) - .SetDnicliente() + .SetDnicliente(propi.Dni) .SetFecha(DateTime.Now) - - .Build() + .Build(); + ret = RepositorioNotificaciones.Singleton.AltaNotificacion(noti); } - - return ret ? Ok(new {message = "Se Añadieron los Garantes"}):BadRequest(new { message = "Fallo la carga"}); } + [HttpPut("api/contratos/cancelar")] + public IActionResult CancelarPrecontrato([FromHeader(Name = "Auth")]string Auth, CancelarPrecontratoDto dto) { + if (String.IsNullOrWhiteSpace(Auth)) return BadRequest(""); + var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario"); + if (validacion1 == false) return Unauthorized(); - private string ValidarDtoGarante(GaranteDto g){ + var validacion2 = ValidarCancelarDto(dto); + if (validacion2 != "") return BadRequest(new {message = validacion2}); + + 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"}); + + + } + + private string ValidarCancelarDto(CancelarPrecontratoDto dto) { + if (dto == null) return "dto nulo"; + string ret = ""; + + if (dto.EmailInquilino =="") ret += "No puede tener un EmailInquilino Vacio\n"; + if (dto.EmailPropietario =="") ret += "No puede tener un EmailPropietario Vacio\n"; + if (dto.idpropiedad <= 0 ) ret += "No puede tener id propiedad igual o menor a 0\n"; + if (dto.fecha == DateTime.MinValue) ret += "Falta fecha\n"; + } + private string ValidarDtoGarante(GaranteDto g) { string ret = ""; if (g == null) return "dto nulo"; @@ -156,6 +181,7 @@ public class ContratoController: ControllerBase { if (dto == null) return "dto nulo"; if (dto.CantidadGarantes<0) ret += "la cantidad de garantes necesarios no pueden ser menor a 0\n"; + if (dto.CantidadGarantes>10) ret += "Hay un maximo de 10 garantes\n"; if (dto.EmailInquilino == "") ret += "el email del inquilino no puede ser nulo\n"; if (dto.EmailPropietario == "") ret += "el email del propietario no puede estar vacio\n"; if (dto.IdPropiedad <= 0) ret += "la id de propiedad no puede ser igual o menor a 0\n"; diff --git a/Entidades/Dto/CancelarPrecontratoDto.cs b/Entidades/Dto/CancelarPrecontratoDto.cs new file mode 100644 index 0000000..3372b09 --- /dev/null +++ b/Entidades/Dto/CancelarPrecontratoDto.cs @@ -0,0 +1,8 @@ +namespace Entidades.Dto; +public class CancelarPrecontratoDto { + public string EmailPropietario { get; set; } =""; + public string EmailInquilino { get; set; } =""; + public DateTime fecha { get; set; } + + public int idpropiedad { get; set; } = 0; +} \ No newline at end of file diff --git a/Front/src/Componentes/ModalCheckYContrato.svelte b/Front/src/Componentes/ModalCheckYContrato.svelte new file mode 100644 index 0000000..f91ca8c --- /dev/null +++ b/Front/src/Componentes/ModalCheckYContrato.svelte @@ -0,0 +1,21 @@ + + diff --git a/Front/src/paginas/Notificaciones.svelte b/Front/src/paginas/Notificaciones.svelte index 85196bf..2375fed 100644 --- a/Front/src/paginas/Notificaciones.svelte +++ b/Front/src/paginas/Notificaciones.svelte @@ -182,8 +182,16 @@ if (responce.ok){ let data = await responce.json(); - + modaldata = data.message; + if (mostrarleidos) { + Leidos(); + } else { + SinLeer(); + } + return; } + let dataaa = await responce.json(); + modaldata = dataaa.message; } catch { modaldata = "no se pudo comunicar con el Servidor"; } diff --git a/Modelo/RepositorioContratos.cs b/Modelo/RepositorioContratos.cs index 351bdc0..a0dd438 100644 --- a/Modelo/RepositorioContratos.cs +++ b/Modelo/RepositorioContratos.cs @@ -35,7 +35,8 @@ public class RepositorioContratos: RepositorioBase { Contrato? contr = con.Contratos.Include(x=>x.DniinquilinoNavigation).Include(x=>x.Idgarantes) .FirstOrDefault(x=>x.Idpropiedad == idpropiedad && x.DniinquilinoNavigation.Email == emailInquilino && - x.Habilitado == 0); + x.Habilitado == 0 && + x.Cancelado == 0); if (contr == null) return false; int inicial = (con.Garantes.Any()? con.Garantes.Max(x=>x.Id): 0) + 1; @@ -54,8 +55,21 @@ public class RepositorioContratos: RepositorioBase { Contrato? contr = con.Contratos.Include(x=>x.DniinquilinoNavigation) .FirstOrDefault(x=>x.Idpropiedad == idpropiedad && x.DniinquilinoNavigation.Email == emailInquilino && - x.Habilitado == 0); + x.Habilitado == 0 && + x.Cancelado == 0); if (contr == null) return 0; return contr.Cantgarantemin; } + + public Contrato? ObtenerContrato(string emailInquilino, int idpropiedad) { + var con = Context; + Contrato? contr = con.Contratos.Include(x=>x.DniinquilinoNavigation) + .FirstOrDefault(x=>x.Idpropiedad == idpropiedad && + x.DniinquilinoNavigation.Email == emailInquilino && + x.Habilitado == 0 && + x.Cancelado == 0); + if (contr == null) return null; + return contr; + + } } diff --git a/Modelo/RepositorioPropiedades.cs b/Modelo/RepositorioPropiedades.cs index 161e317..e05d6d6 100644 --- a/Modelo/RepositorioPropiedades.cs +++ b/Modelo/RepositorioPropiedades.cs @@ -162,9 +162,7 @@ public class RepositorioPropiedades: RepositorioBase { if (prop == null||prop.Dnipropietario == 0) return false; - if (prop.Idestado == 2) return false; - //las alquiladas no se pueden dar de baja claramente - prop.Idestado = prop.Idestado == 1 ? 3 : 1; + prop.Idestado = prop.Idestado == 3 ? 1 : 3; return Guardar(con); } diff --git a/Modelo/RepositorioPropietario.cs b/Modelo/RepositorioPropietario.cs index ee8fa75..cc5bbb2 100644 --- a/Modelo/RepositorioPropietario.cs +++ b/Modelo/RepositorioPropietario.cs @@ -34,9 +34,10 @@ public class RepositorioPropietario: RepositorioBase { public Cliente? ObtenerPropietarioPorIdPropiedad(int idpropiedad) { var con = Context; - Propiedade? pro = con.Propiedades.Include(x=>x.DnipropietarioNavigation).FirstOrDefault(x=>x.Id == idpropiedad) - if (pro == null) return null; + Propiedade? pro = con.Propiedades.Include(x=>x.DnipropietarioNavigation) + .FirstOrDefault(x=>x.Id == idpropiedad); + if (pro == null || pro.DnipropietarioNavigation == null) return null; - + return pro.DnipropietarioNavigation; } }