From e7747455eca42a7a3a1041be100f32bec5098c37 Mon Sep 17 00:00:00 2001 From: fede Date: Sun, 2 Feb 2025 20:14:39 -0300 Subject: [PATCH] funcionalidad terminada --- .../Controllers/NotificacionesController.cs | 34 +++++ Aspnet/Controllers/PropiedadesController.cs | 5 +- Aspnet/Controllers/VentaController.cs | 76 +++++++++ .../src/Componentes/PaginacionStepper.svelte | 2 +- Front/src/paginas/BuscarVentas.svelte | 144 +++++++++++++++++- .../src/paginas/MisPropiedadesEnVenta.svelte | 4 - Front/src/paginas/Notificaciones.svelte | 64 +++++++- Front/src/types.d.ts | 12 ++ Modelo/RepositorioNotificaciones.cs | 6 + Modelo/RepositorioPropiedades.cs | 9 +- Modelo/RepositorioVentas.cs | 11 +- 11 files changed, 352 insertions(+), 15 deletions(-) diff --git a/Aspnet/Controllers/NotificacionesController.cs b/Aspnet/Controllers/NotificacionesController.cs index 3fadadd..76dc46b 100644 --- a/Aspnet/Controllers/NotificacionesController.cs +++ b/Aspnet/Controllers/NotificacionesController.cs @@ -121,4 +121,38 @@ public class NotificacionesController: ControllerBase { return ret? Ok(new { message = "se envio el aviso" }):BadRequest(new { message = "Fallo al intentar enviar el aviso" }); } + + [HttpPost("api/notificar/ConsultaCompra")] + public IActionResult EnviarConsultaCompra([FromHeader(Name ="Auth")]string Auth, AltaNotificacionDto dto) { + if (String.IsNullOrWhiteSpace(Auth)) return Unauthorized(); + var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario"); + if (validacion1 == false){ + validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino"); + if (validacion1 == false) { + return Unauthorized(); + } + } + + if (dto.Accion == "") return BadRequest(new{message = "El campo Accion esta vacio"}); + if (dto.Mensaje == "") return BadRequest(new {message = "El campo Mensaje esta vacio"}); + + Cliente?cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); + + Propiedade? prop = RepositorioPropiedades.Singleton.ObtenerPropiedadPorId(dto.Propiedad); + if (prop == null) return BadRequest(new { message = "No hay una propiedad con id 0 o menor"}); + + var n = new NotificacioneBuilder() + .SetAccion("Consulta Compra") + .SetMensaje(dto.Mensaje) + .SetLeido(false) + .SetDnicliente(prop.Dnipropietario??0) + .SetDniremitente(cli.Dni) + .SetIdpropiedad(prop.Id) + .SetFecha(DateTime.Now) + .Build(); + var ret2= RepositorioNotificaciones.Singleton.AltaNotificacion(n, cli.Dni); + return ret2? + Ok(new { message = "se envio el aviso" }):BadRequest(new { message = "Fallo al intentar enviar el aviso" }); + + } } \ No newline at end of file diff --git a/Aspnet/Controllers/PropiedadesController.cs b/Aspnet/Controllers/PropiedadesController.cs index 25bf243..5b03bbc 100644 --- a/Aspnet/Controllers/PropiedadesController.cs +++ b/Aspnet/Controllers/PropiedadesController.cs @@ -55,7 +55,10 @@ public class PropiedadesController: ControllerBase { }; l.Add(p); } - return Ok(l); + + int cantpag = RepositorioPropiedades.Singleton.ObtenerPaginasDePropiedadesEnVenta(); + + return Ok(new { propiedades = l, cantpaginas = cantpag}); } [HttpGet("api/propiedades/Venta/Propietario")] diff --git a/Aspnet/Controllers/VentaController.cs b/Aspnet/Controllers/VentaController.cs index 8740e53..6518713 100644 --- a/Aspnet/Controllers/VentaController.cs +++ b/Aspnet/Controllers/VentaController.cs @@ -14,6 +14,82 @@ namespace AlquilaFacil.Controllers; [ApiController] public class VentaController:ControllerBase { + [HttpPost("api/venta/AceptarConsultaVenta")] + public IActionResult AceptarConsultaVenta([FromHeader(Name="Auth")]string Auth, NotificacionMarcarLeidoDto dto) { + var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario"); + if (validacion1 == false) { + return Unauthorized(); + } + if (dto.Email == "") return BadRequest(new { message = "Falta dato Email"}); + + Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); + if (cli == null) Unauthorized(); + if (cli.Email != dto.Email) return BadRequest(new {message = "El token de autorizacion no corresponde a tu usuario"}); + RepositorioNotificaciones.Singleton.MarcarComoLeido(cli.Dni, dto.Fecha); + + Notificacione? n = RepositorioNotificaciones.Singleton.ObtenerNotificacionPorKeys(cli.Dni, dto.Fecha); + if (n == null) return BadRequest(new { message = "No se encuentra la notificacion"}); + + Propiedade? prop = RepositorioPropiedades.Singleton.ObtenerPropiedadPorId(n.Idpropiedad); + if (prop == null) return BadRequest(new { message = "No se encuentra una propiedad por ese id"}); + Venta? v = new Venta{ + Fechainicio = DateTime.Now, + IdVendedor = prop.Dnipropietario, + IdComprador = n.Dniremitente, + Monto = prop.Monto, + Idpropiedad = prop.Id, + Iddivisa = prop.Iddivisa, + Idestado = 2, + + }; + + bool ret = RepositorioVentas.Singleton.IniciarVenta(v, cli.Dni); + if (ret){ + var noti = new NotificacioneBuilder() + .SetAccion("Notificacion") + .SetMensaje("Debe Realizar el pago para que se registre el traspaso de la propiedad") + .SetLeido(false) + .SetDnicliente(n.Dniremitente) + .SetDniremitente(n.Dnicliente) + .SetIdpropiedad(n.Idpropiedad) + .SetFecha(DateTime.Now) + .Build(); + ret = RepositorioNotificaciones.Singleton.AltaNotificacion(noti); + } + return ret? + Ok(new { message = "Se inicio la venta"}):BadRequest(new { message ="fallo al iniciar la venta"}); + } + + [HttpPost("api/venta/CancelarConsultaVenta")] + public IActionResult CancelarConsultaVenta([FromHeader(Name="Auth")]string Auth, NotificacionMarcarLeidoDto dto) { + var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario"); + if (validacion1 == false) { + return Unauthorized(); + } + + if (dto.Email == "") return BadRequest(new { message = "Falta dato Email"}); + + Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); + if (cli == null) Unauthorized(); + if (cli.Email != dto.Email) return BadRequest(new {message = "El token de autorizacion no corresponde a tu usuario"}); + + RepositorioNotificaciones.Singleton.MarcarComoLeido(cli.Dni, dto.Fecha); + Notificacione? n = RepositorioNotificaciones.Singleton.ObtenerNotificacionPorKeys(cli.Dni, dto.Fecha); + var noti = new NotificacioneBuilder() + .SetAccion("Notificacion") + .SetMensaje("El propietario no quiere vender") + .SetLeido(false) + .SetDnicliente(n.Dniremitente) + .SetDniremitente(n.Dnicliente) + .SetIdpropiedad(n.Idpropiedad) + .SetFecha(DateTime.Now) + .Build(); + + var ret = RepositorioNotificaciones.Singleton.AltaNotificacion(noti); + return ret ? + Ok(new{message = "Se Envio una notificacion"}):BadRequest(new{message = "Fallo al Descartar Consulta"}); + } + [HttpGet("/api/propiedad/EstaALaVenta")] public IActionResult EstaALaVenta([FromHeader(Name="Auth")]string Auth, int idprop=0) { var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario"); diff --git a/Front/src/Componentes/PaginacionStepper.svelte b/Front/src/Componentes/PaginacionStepper.svelte index b57f0f8..e62e219 100644 --- a/Front/src/Componentes/PaginacionStepper.svelte +++ b/Front/src/Componentes/PaginacionStepper.svelte @@ -12,7 +12,7 @@ let array = $derived.by(()=> Array.from({ length: cantpag }, (_, i) => i + 1)); -{#if cantpag>1} +{#if cantpag>0}