From e9b3baa9ca5f8ec1ef14c2b6d80f21cc3b4b90fa Mon Sep 17 00:00:00 2001 From: fede Date: Sun, 24 Nov 2024 23:12:59 -0300 Subject: [PATCH 1/9] Fix: Ya no salen los links en azul --- Front/src/Componentes/NavBarAutocompletable.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Front/src/Componentes/NavBarAutocompletable.svelte b/Front/src/Componentes/NavBarAutocompletable.svelte index ad8a925..8be3958 100644 --- a/Front/src/Componentes/NavBarAutocompletable.svelte +++ b/Front/src/Componentes/NavBarAutocompletable.svelte @@ -72,7 +72,7 @@ From 29f7dc4efea316adabf7d174660b1e37742f9012 Mon Sep 17 00:00:00 2001 From: fede Date: Tue, 26 Nov 2024 08:36:03 -0300 Subject: [PATCH 2/9] Feat: commit antes de mostrar el codigo. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Añadido alta propiedad - Arreglado alta inq/prop - Añadida pantalla de menu --- Aspnet/Controllers/InquilinoController.cs | 8 +-- Aspnet/Controllers/PropiedadesController.cs | 38 +++++++------- Aspnet/Controllers/PropietarioController.cs | 2 +- Front/src/App.svelte | 8 +-- Front/src/Componentes/FormPostCli.svelte | 8 +++ Front/src/Componentes/ModalEstatico.svelte | 13 +++++ Front/src/paginas/PublicarPropiedad.svelte | 52 ++++++++++++++++---- Front/src/paginas/grupos/AdminG.svelte | 2 +- Front/src/paginas/grupos/EstadisticaG.svelte | 5 -- Front/src/paginas/grupos/InformesG.svelte | 13 +++++ Front/src/paginas/grupos/InquilinoG.svelte | 2 +- Front/src/paginas/grupos/PropietarioG.svelte | 2 +- Front/src/paginas/menu.svelte | 13 ++++- Modelo/RepositorioBase.cs | 2 +- Modelo/RepositorioPropiedades.cs | 44 ++++++++++++----- Modelo/RepositorioPropietario.cs | 11 +---- Modelo/RepositorioUsuarios.cs | 24 ++++----- 17 files changed, 164 insertions(+), 83 deletions(-) create mode 100644 Front/src/Componentes/ModalEstatico.svelte delete mode 100644 Front/src/paginas/grupos/EstadisticaG.svelte create mode 100644 Front/src/paginas/grupos/InformesG.svelte diff --git a/Aspnet/Controllers/InquilinoController.cs b/Aspnet/Controllers/InquilinoController.cs index ef55739..866040d 100644 --- a/Aspnet/Controllers/InquilinoController.cs +++ b/Aspnet/Controllers/InquilinoController.cs @@ -26,13 +26,13 @@ public class InquilinoController: ControllerBase [HttpPost("api/inquilino")] public IActionResult Post([FromBody] CrearClienteDto cid, [FromHeader(Name = "Auth")] string Auth) { - if (!string.IsNullOrEmpty(Auth)) return BadRequest(); + if (string.IsNullOrEmpty(Auth)) return BadRequest(new {message = "El String Auth Esta Vacio"}); var ret3 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 4); - if (ret3 == false) return BadRequest(ret3); + if (ret3 == false) return BadRequest(new {message = "Falló el permiso"}); var ret = verificarCrearUsuario(cid); - if (ret != "") return BadRequest(ret); + if (ret != "") return BadRequest(new {message = ret}); var cli = new Cliente { Dni = cid.dni, @@ -45,7 +45,7 @@ public class InquilinoController: ControllerBase }; bool ret2 = RepositorioUsuarios.Singleton.AltaInquilino(cli); - return (ret2) ? Ok() : BadRequest(ret); + return (ret2) ? Ok(new {message = "Se dio de alta la cuenta"}) : BadRequest(new {message = "Fallo Dar de Alta El inquilino"}); } private string verificarCrearUsuario(CrearClienteDto cid) { diff --git a/Aspnet/Controllers/PropiedadesController.cs b/Aspnet/Controllers/PropiedadesController.cs index 8f62418..730ab44 100644 --- a/Aspnet/Controllers/PropiedadesController.cs +++ b/Aspnet/Controllers/PropiedadesController.cs @@ -24,10 +24,10 @@ public class PropiedadesController: ControllerBase { var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 12); if (validacion1 == false) return Unauthorized(); - if (Id < 0) return BadRequest("la id de propiedad no puede ser negativa"); + if (Id < 0) return BadRequest(new {message ="la id de propiedad no puede ser negativa"}); var ret = RepositorioPropiedades.Singleton.ObtenerPropiedadPorId(Id); - if (ret == null) return BadRequest("No existe la propiedad"); + if (ret == null) return BadRequest(new {message ="No existe la propiedad"}); return Ok(ret); } @@ -41,7 +41,7 @@ public class PropiedadesController: ControllerBase { if (validacion1 == false) return Unauthorized(); email = email.Trim(); - if (String.IsNullOrEmpty(email)) return BadRequest("falta campo email"); + if (String.IsNullOrEmpty(email)) return BadRequest(new {message ="falta campo email"}); var ret = RepositorioPropiedades.Singleton.ObtenerPropiedadesPorEmail(email); @@ -58,21 +58,21 @@ public class PropiedadesController: ControllerBase { if (validacion2 != "") return BadRequest(new { message = validacion2 }); Cliente? cli = RepositorioPropietario.Singleton.ObtenerPropietarioPorEmail(propiedad.Email); - if (cli == null) return BadRequest("El email no corresponde a un propietario"); + if (cli == null) return BadRequest(new { message = "El email no corresponde a un propietario"}); Propiedade Prop = new Propiedade{ Canthabitaciones = propiedad.Canthabitaciones, Dnipropietario = cli.Dni, Idtipropiedad = propiedad.Idtipropiedad, Ubicacion = propiedad.Ubicacion, - Letra = propiedad.Letra != null ? propiedad.Letra : null, - Piso = propiedad.Piso != null ? propiedad.Piso : null, + Letra = propiedad.Letra ?? null, + Piso = propiedad.Piso ?? null, }; var ret = RepositorioPropiedades.Singleton.AñadirPropiedad(Prop); return (ret)? - Ok("Fue Cargado Correctamente") : - BadRequest("Fallo al momento de añadir la propiedad a la base de datos"); + Ok(new { message = "Fue Cargado Correctamente"}) : + BadRequest(new { message = "Fallo al momento de añadir la propiedad a la base de datos"}); } [HttpDelete("api/propiedad")] @@ -81,13 +81,13 @@ public class PropiedadesController: ControllerBase { var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 2); if (validacion1 == false) return Unauthorized(); - if (id <= 0) return BadRequest("No es una id valida"); + if (id <= 0) return BadRequest(new { message = "No es una id valida"}); var ret = RepositorioPropiedades.Singleton.BajaPropiedad(id); return ret ? Ok(new {message = $"la propiedad con id {id} fue dada de baja"}): - BadRequest("Fallo al dar de baja la propiedad"); + BadRequest(new {message="Fallo al dar de baja la propiedad"}); } [HttpPut("api/propiedades/addServicio")] @@ -96,21 +96,21 @@ public class PropiedadesController: ControllerBase { var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 8); if (validacion1 == false) return Unauthorized(); - if (Servicios.propiedadid <= 0) return BadRequest("No puede tener una id negativa o cero"); - if (Servicios.idServicios.Count() < 1) return BadRequest("Falta añadir servicios"); - if (Servicios.idServicios.Any(x => x<= 0)) return BadRequest("No tienen haber ids negativas o cero de servicio"); + if (Servicios.propiedadid <= 0) return BadRequest(new {message ="No puede tener una id negativa o cero"}); + if (Servicios.idServicios.Count() < 1) return BadRequest(new {message ="Falta añadir servicios"}); + if (Servicios.idServicios.Any(x => x<= 0)) return BadRequest(new {message ="No tienen haber ids negativas o cero de servicio"}); var serv = RepositorioServicios.Singleton.ObtenerServiciosPorPropiedad(Servicios.propiedadid); bool validacion2 = Servicios.idServicios.Any(x => serv.Contains(x)); - if (validacion2 == true) return BadRequest("Hay elementos repetidos"); + if (validacion2 == true) return BadRequest(new {message ="Hay elementos repetidos"}); bool ret = RepositorioPropiedades. Singleton.AñadirServicioAPropiedad(Servicios.propiedadid, Servicios.idServicios); return ret ? - Ok("Los Servicios Se Cargaron correctamente a la propiedad") : BadRequest("No se pudo Cargar los Servicios a la propiedad"); + Ok(new {message ="Los Servicios Se Cargaron correctamente a la propiedad"}) : BadRequest(new {message ="No se pudo Cargar los Servicios a la propiedad"}); } @@ -120,9 +120,9 @@ public class PropiedadesController: ControllerBase { var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 13); if (validacion1 == false) return Unauthorized(); - if (servicio.propiedadid <= 0) return BadRequest("No puede tener una id negativa o cero"); - if (servicio.idServicios.Count() < 1) return BadRequest("Falta añadir servicios"); - if (servicio.idServicios.Any(x => x<= 0)) return BadRequest("No tienen haber ids negativas o cero de servicio"); + if (servicio.propiedadid <= 0) return BadRequest(new {message ="No puede tener una id negativa o cero"}); + 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"}); var serv = RepositorioServicios.Singleton.ObtenerServiciosPorPropiedad(servicio.propiedadid); @@ -131,7 +131,7 @@ public class PropiedadesController: ControllerBase { bool ret = RepositorioPropiedades.Singleton.BajaServiciosAPropiedad(servicio.propiedadid, servicio.idServicios); return ret ? - Ok("Se Eliminaron los servicios seleccionados de la propiedad") : BadRequest("Fallo al eliminarse los servicios de la propiedad"); + 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/PropietarioController.cs b/Aspnet/Controllers/PropietarioController.cs index 9291d41..590e4da 100644 --- a/Aspnet/Controllers/PropietarioController.cs +++ b/Aspnet/Controllers/PropietarioController.cs @@ -21,7 +21,7 @@ public class PropietarioController: ControllerBase { return Ok(ret); } - [HttpPost("api/propietarios")] + [HttpPost("api/propietario")] public IActionResult AltaPropietario([FromBody]CrearClienteDto Propietario, [FromHeader(Name = "Auth")] string Auth) { if (String.IsNullOrEmpty(Auth)) return Unauthorized(); diff --git a/Front/src/App.svelte b/Front/src/App.svelte index 95c0f96..6e11672 100644 --- a/Front/src/App.svelte +++ b/Front/src/App.svelte @@ -7,10 +7,10 @@ import InqPage from "./paginas/inquilino.svelte"; import PropPage from "./paginas/propietario.svelte"; import FrontAdmin from "./paginas/grupos/AdminG.svelte"; - import FrontEstadistica from "./paginas/grupos/EstadisticaG.svelte"; + import FrontInformes from "./paginas/grupos/InformesG.svelte"; import FrontInquilino from "./paginas/grupos/InquilinoG.svelte"; import FrontPropietario from "./paginas/grupos/PropietarioG.svelte"; - import PublicarPropiedad from "./paginas/PublicarPropiedad.svelte"; + import PublicarPropiedad from "./paginas/PublicarPropiedad.svelte"; @@ -52,8 +52,8 @@ - - + + diff --git a/Front/src/Componentes/FormPostCli.svelte b/Front/src/Componentes/FormPostCli.svelte index fa1c309..fb0b05e 100644 --- a/Front/src/Componentes/FormPostCli.svelte +++ b/Front/src/Componentes/FormPostCli.svelte @@ -18,16 +18,24 @@ let domicilio: string = $state("") let celular: string = $state("") + const token = sessionStorage.getItem("token"); + async function submitForm(event: any) { event.preventDefault(); try { let response = await fetch(url, { method: 'POST', headers: { + 'Auth' : String(token), 'Content-Type' : 'application/json', }, body: JSON.stringify({dni, nombre, apellido, domicilio, celular, email, contraseña}) }); + if (response.ok){ + const errorData = await response.json(); + errorMessage = errorData.message; + showAlert = true; + } if (!response.ok) { const errorData = await response.json(); errorMessage = errorData.message; diff --git a/Front/src/Componentes/ModalEstatico.svelte b/Front/src/Componentes/ModalEstatico.svelte new file mode 100644 index 0000000..2197607 --- /dev/null +++ b/Front/src/Componentes/ModalEstatico.svelte @@ -0,0 +1,13 @@ + + +
+ + {payload} + +
\ No newline at end of file diff --git a/Front/src/paginas/PublicarPropiedad.svelte b/Front/src/paginas/PublicarPropiedad.svelte index 512d5f5..bf47086 100644 --- a/Front/src/paginas/PublicarPropiedad.svelte +++ b/Front/src/paginas/PublicarPropiedad.svelte @@ -1,5 +1,8 @@ - + + +

Registrar Propiedad

-
+
-
+{#if mostrarModal == true} + +{/if} \ No newline at end of file diff --git a/Front/src/paginas/grupos/AdminG.svelte b/Front/src/paginas/grupos/AdminG.svelte index 1ed9d36..52ec9cd 100644 --- a/Front/src/paginas/grupos/AdminG.svelte +++ b/Front/src/paginas/grupos/AdminG.svelte @@ -7,7 +7,7 @@ import NavBarAutocompletable from "../../Componentes/NavBarAutocompletable.svelt
-

Perfil del Administrador

+

Menu del Administrador

Gestiona las cuentas de usuarios, propiedades y permisos desde aquí.

diff --git a/Front/src/paginas/grupos/EstadisticaG.svelte b/Front/src/paginas/grupos/EstadisticaG.svelte deleted file mode 100644 index 5e17d5c..0000000 --- a/Front/src/paginas/grupos/EstadisticaG.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/Front/src/paginas/grupos/InformesG.svelte b/Front/src/paginas/grupos/InformesG.svelte new file mode 100644 index 0000000..7546397 --- /dev/null +++ b/Front/src/paginas/grupos/InformesG.svelte @@ -0,0 +1,13 @@ + + + +
+
+

Menu Informes

+

Visualice estadisticas e informes aqui.

+
+ +
\ No newline at end of file diff --git a/Front/src/paginas/grupos/InquilinoG.svelte b/Front/src/paginas/grupos/InquilinoG.svelte index 039f6a3..527096e 100644 --- a/Front/src/paginas/grupos/InquilinoG.svelte +++ b/Front/src/paginas/grupos/InquilinoG.svelte @@ -7,7 +7,7 @@ import NavBarAutocompletable from "../../Componentes/NavBarAutocompletable.svelt
-

Perfil del Inquilino

+

Menu del Inquilino

Gestiona tus Pagos y Busca Propiedades desde aquí.

diff --git a/Front/src/paginas/grupos/PropietarioG.svelte b/Front/src/paginas/grupos/PropietarioG.svelte index 84284d6..e07a0f4 100644 --- a/Front/src/paginas/grupos/PropietarioG.svelte +++ b/Front/src/paginas/grupos/PropietarioG.svelte @@ -6,7 +6,7 @@
-

Perfil del Propietario

+

Menu del Propietario

Gestiona tus propiedades y servicios desde aquí.

diff --git a/Front/src/paginas/menu.svelte b/Front/src/paginas/menu.svelte index 06a8931..03cd331 100644 --- a/Front/src/paginas/menu.svelte +++ b/Front/src/paginas/menu.svelte @@ -1,6 +1,15 @@ -hol \ No newline at end of file +
+
+

+ + +

Por favor, elige una de las opciones disponibles en la barra de navegación superior.

+ +
+
\ No newline at end of file diff --git a/Modelo/RepositorioBase.cs b/Modelo/RepositorioBase.cs index 6454fa3..1eb07d1 100644 --- a/Modelo/RepositorioBase.cs +++ b/Modelo/RepositorioBase.cs @@ -18,7 +18,7 @@ public abstract class RepositorioBase context.SaveChanges(); context.Dispose(); ret = true; - } catch (DbUpdateException ex) + } catch (Exception ex) { Console.Error.WriteLine(ex.Message); } diff --git a/Modelo/RepositorioPropiedades.cs b/Modelo/RepositorioPropiedades.cs index cab5cdb..99c57bf 100644 --- a/Modelo/RepositorioPropiedades.cs +++ b/Modelo/RepositorioPropiedades.cs @@ -1,10 +1,11 @@ using System; -using System.Reflection.Metadata.Ecma335; -using System.Runtime.ConstrainedExecution; +using System.Data; using Entidades; using Entidades.Dto; +using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; using Modelo; +using MySql.Data.MySqlClient; public class RepositorioPropiedades: RepositorioBase { @@ -36,18 +37,35 @@ public class RepositorioPropiedades: RepositorioBase return prop; } - public bool AñadirPropiedad(Propiedade? prop){ - if (prop == null) return false; - - var con = Context; - - int count = con.Propiedades.Count()+1; +public bool AñadirPropiedad(Propiedade? prop) { + if (prop == null) return false; - prop.Id = count; - prop.Idestado = 1; - con.Propiedades.Add(prop); - return Guardar(con); - } + var con = Context; + + if (string.IsNullOrEmpty(prop.Letra)) prop.Letra = "_"; + + var filasInsertadasParam = new MySqlParameter("@p_filas_insertadas", SqlDbType.Int) + { + Direction = ParameterDirection.Output + }; + + // Ejecutar el procedimiento almacenado + var row = con.Database.ExecuteSqlRaw( + $""" + CALL InsertarPropiedad(@p_ubicacion, @p_cant_habitaciones, @p_piso, @p_letra, + @p_dni_propietario, @p_id_tipo_propiedad, @p_filas_insertadas) + """, + new MySqlParameter("@p_ubicacion", prop.Ubicacion), + new MySqlParameter("@p_cant_habitaciones", prop.Canthabitaciones), + new MySqlParameter("@p_piso", prop.Piso), + new MySqlParameter("@p_letra", prop.Letra), + new MySqlParameter("@p_dni_propietario", prop.Dnipropietario), + new MySqlParameter("@p_id_tipo_propiedad", prop.Idtipropiedad), + filasInsertadasParam + ); + + return (int)filasInsertadasParam.Value == 1? true: false; +} public IQueryable ObtenerPropiedadesPorEmail(string email) { FormattableString sqlq = $""" diff --git a/Modelo/RepositorioPropietario.cs b/Modelo/RepositorioPropietario.cs index e50df24..e8636dd 100644 --- a/Modelo/RepositorioPropietario.cs +++ b/Modelo/RepositorioPropietario.cs @@ -24,15 +24,8 @@ public class RepositorioPropietario: RepositorioBase { } public Cliente? ObtenerPropietarioPorEmail(string email){ - - FormattableString sqlq = $""" - SELECT * FROM Clientes c - JOIN cliente_Grupos cg ON cg.idgrupo = 1 - WHERE c.email = {email} - LIMIT 1 - """; - - Cliente? cli = Context.Database.SqlQuery(sqlq).First(); + var con = Context; + Cliente? cli = con.Clientes.FirstOrDefault(x=>x.Email == email); if (cli == null|| cli.Dni == 0) return null; if (cli.Dni == 0 || cli == null) return null; return cli; diff --git a/Modelo/RepositorioUsuarios.cs b/Modelo/RepositorioUsuarios.cs index ae724a8..24f6941 100644 --- a/Modelo/RepositorioUsuarios.cs +++ b/Modelo/RepositorioUsuarios.cs @@ -10,45 +10,45 @@ public class RepositorioUsuarios: RepositorioBase { public bool AltaInquilino(Cliente cli) { var con = Context; + Grupo? grupo; //check por si la cuenta ya existe (puede ser propietario) Cliente? cli2 = con.Clientes.Find(cli.Dni); if (cli2 != null) { - cli = cli2; + grupo = con.Grupos.Find(2); + if (grupo == null || grupo.Id == 0) return false; + cli2.Idgrupos.Add(grupo); + return Guardar(con); } - var grupo = con.Grupos.Find(2); + grupo = con.Grupos.Find(2); if (grupo == null || grupo.Id == 0) return false; con.Clientes.Add(cli); - Guardar(con); - con = Context; - cli = con.Clientes.Find(cli.Dni) ?? new(); if (cli.Dni == 0) return false; cli.Idgrupos.Add(grupo); return Guardar(con); - - } public bool AltaPropietario(Cliente cli) { var con = Context; + Grupo? grupo; //check por si la cuenta ya existe (puede ser propietario) Cliente? cli2 = con.Clientes.Find(cli.Dni); if (cli2 != null) { - cli = cli2; + grupo = con.Grupos.Find(1); + if (grupo == null || grupo.Id == 0) return false; + cli2.Idgrupos.Add(grupo); + return Guardar(con); } - var grupo = con.Grupos.Find(1); + grupo = con.Grupos.Find(1); if (grupo == null || grupo.Id == 0) return false; con.Clientes.Add(cli); - Guardar(con); - con = Context; - cli = con.Clientes.Find(cli.Dni) ?? new(); if (cli.Dni == 0) return false; cli.Idgrupos.Add(grupo); From 00cce75fad67cdfa480ebe868e5283feb9d4e385 Mon Sep 17 00:00:00 2001 From: fede Date: Sat, 30 Nov 2024 14:07:12 -0300 Subject: [PATCH 3/9] feat: listar propiedades y baja propiedad Signed-off-by: fede --- Aspnet/Controllers/PropiedadesController.cs | 16 +- Entidades/Dto/PropiedadesDto.cs | 6 +- Front/src/App.svelte | 9 ++ .../Componentes/NavBarAutocompletable.svelte | 14 +- Front/src/Componentes/RowPropiedad.svelte | 50 ++++++ Front/src/Componentes/login.svelte | 2 - Front/src/paginas/MisPropiedades.svelte | 62 ++++++++ Front/src/paginas/PublicarPropiedad.svelte | 147 ++++++++++-------- Front/src/paginas/inquilino.svelte | 4 +- Front/src/paginas/propietario.svelte | 4 +- Front/src/types.d.ts | 17 ++ Modelo/RepositorioPropiedades.cs | 17 +- 12 files changed, 245 insertions(+), 103 deletions(-) create mode 100644 Front/src/Componentes/RowPropiedad.svelte create mode 100644 Front/src/paginas/MisPropiedades.svelte create mode 100644 Front/src/types.d.ts diff --git a/Aspnet/Controllers/PropiedadesController.cs b/Aspnet/Controllers/PropiedadesController.cs index 730ab44..05daf81 100644 --- a/Aspnet/Controllers/PropiedadesController.cs +++ b/Aspnet/Controllers/PropiedadesController.cs @@ -1,6 +1,5 @@ using Entidades; using Entidades.Dto; -using Microsoft.AspNetCore.Http.HttpResults; using Microsoft.AspNetCore.Mvc; using Modelo; @@ -33,18 +32,17 @@ public class PropiedadesController: ControllerBase { [HttpGet("api/propiedades/Propietario")] public IActionResult ObtenerPropiedadesPorPropietario ( - [FromBody] string email, + [FromHeader(Name = "Email")] string email, [FromHeader(Name = "Auth")] string Auth) { if (String.IsNullOrEmpty(Auth)) return Unauthorized(); - var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 12); + var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 2); if (validacion1 == false) return Unauthorized(); email = email.Trim(); if (String.IsNullOrEmpty(email)) return BadRequest(new {message ="falta campo email"}); - var ret = RepositorioPropiedades.Singleton.ObtenerPropiedadesPorEmail(email); - + IQueryable ret = RepositorioPropiedades.Singleton.ObtenerPropiedadesPorEmail(email); return Ok(ret); } @@ -76,14 +74,16 @@ public class PropiedadesController: ControllerBase { } [HttpDelete("api/propiedad")] - public IActionResult BajaPropiedad(int id, [FromHeader(Name = "Auth")] string Auth){ + public IActionResult BajaPropiedad(int id, [FromHeader(Name = "Auth")] string Auth, [FromHeader(Name = "Email")] string email){ if (String.IsNullOrEmpty(Auth)) return Unauthorized(); var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 2); if (validacion1 == false) return Unauthorized(); + if (String.IsNullOrEmpty(email)) return BadRequest(new { message = "Fallo al identificarse el usuario"}); if (id <= 0) return BadRequest(new { message = "No es una id valida"}); - var ret = RepositorioPropiedades.Singleton.BajaPropiedad(id); + Cliente? propie = RepositorioPropietario.Singleton.ObtenerPropietarioPorEmail(email); + var ret = RepositorioPropiedades.Singleton.BajaPropiedad(id, propie); return ret ? Ok(new {message = $"la propiedad con id {id} fue dada de baja"}): @@ -147,4 +147,4 @@ public class PropiedadesController: ControllerBase { return ret; } -} \ No newline at end of file +} diff --git a/Entidades/Dto/PropiedadesDto.cs b/Entidades/Dto/PropiedadesDto.cs index d63e3a9..bb0c3c4 100644 --- a/Entidades/Dto/PropiedadesDto.cs +++ b/Entidades/Dto/PropiedadesDto.cs @@ -3,7 +3,7 @@ public class PropiedadesDto { public int id { get; set; } public string Ubicacion { get; set; } = ""; public int canthabitaciones { get; set; } - public string piso { get; set; } = ""; + public int piso { get; set; } public string letra { get; set; } = ""; - public string TipoPropiedad { get; set; } = ""; -} \ No newline at end of file + public string Tipo { get; set; } = ""; +} diff --git a/Front/src/App.svelte b/Front/src/App.svelte index 6e11672..b1efce0 100644 --- a/Front/src/App.svelte +++ b/Front/src/App.svelte @@ -6,6 +6,7 @@ import InfoPage from './paginas/info.svelte'; import InqPage from "./paginas/inquilino.svelte"; import PropPage from "./paginas/propietario.svelte"; + import MisPropiedades from "./paginas/MisPropiedades.svelte"; import FrontAdmin from "./paginas/grupos/AdminG.svelte"; import FrontInformes from "./paginas/grupos/InformesG.svelte"; import FrontInquilino from "./paginas/grupos/InquilinoG.svelte"; @@ -43,6 +44,12 @@ + + + + + + @@ -56,5 +63,7 @@ + + diff --git a/Front/src/Componentes/NavBarAutocompletable.svelte b/Front/src/Componentes/NavBarAutocompletable.svelte index 8be3958..225919a 100644 --- a/Front/src/Componentes/NavBarAutocompletable.svelte +++ b/Front/src/Componentes/NavBarAutocompletable.svelte @@ -1,21 +1,11 @@ + + + {id} + {ubicacion} + {letra} + {piso} + {tipo} + + + + + +{#if modal} + +{/if} diff --git a/Front/src/Componentes/login.svelte b/Front/src/Componentes/login.svelte index a98a8f3..34a432c 100644 --- a/Front/src/Componentes/login.svelte +++ b/Front/src/Componentes/login.svelte @@ -5,7 +5,6 @@ let email = $state("") let contraseña = $state("") let errorMessage = $state("") - let showAlert = false; // @ts-ignore async function submitForm(event) { @@ -25,7 +24,6 @@ if (!response.ok){ const errorData = await response.json() errorMessage = errorData.message; - showAlert = true; return; } diff --git a/Front/src/paginas/MisPropiedades.svelte b/Front/src/paginas/MisPropiedades.svelte new file mode 100644 index 0000000..45a6353 --- /dev/null +++ b/Front/src/paginas/MisPropiedades.svelte @@ -0,0 +1,62 @@ + + + +
+ + + + + + + + + + + + {#each $propiedades as propiedad} + {@debug propiedad} + + {/each} + +
#ubicacionLetraPisoTipo
+
+{#if fallo} +
Fallo al intentar Obtener la lista de propiedades
+{/if} diff --git a/Front/src/paginas/PublicarPropiedad.svelte b/Front/src/paginas/PublicarPropiedad.svelte index bf47086..341670b 100644 --- a/Front/src/paginas/PublicarPropiedad.svelte +++ b/Front/src/paginas/PublicarPropiedad.svelte @@ -2,6 +2,7 @@ import { writable } from "svelte/store"; // Importar writable para los estados import ModalEstatico from "../Componentes/ModalEstatico.svelte"; import NavBarAutocompletable from "../Componentes/NavBarAutocompletable.svelte"; + import BarraHorizontalConTexto from "../Componentes/BarraHorizontalConTexto.svelte"; type Propiedad = { ubicacion: string, @@ -51,73 +52,85 @@ -
-

Registrar Propiedad

-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
- -
+
+ +
+ + Este es un formulario con el objetivo de que usted pueda registrar las propiedades suyas que quiera hacer visibles a las busquedas de inquilinos. +

+ + + Para poder cargar la propiedad deberá especificar su ubicacion, la cantidad de habitaciones que posée, en caso de ser un edificio el piso, y letra, y que tipo de propiedad és (casa, departamento, oficina...). +
+ +
+

Registrar Propiedad

+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+
{#if mostrarModal == true} -{/if} \ No newline at end of file +{/if} diff --git a/Front/src/paginas/inquilino.svelte b/Front/src/paginas/inquilino.svelte index 0da3a45..69f084a 100644 --- a/Front/src/paginas/inquilino.svelte +++ b/Front/src/paginas/inquilino.svelte @@ -6,9 +6,9 @@ -
+
-
+


Este es un formulario para crear una cuenta de Propietario. diff --git a/Front/src/paginas/propietario.svelte b/Front/src/paginas/propietario.svelte index 447c6d1..b551918 100644 --- a/Front/src/paginas/propietario.svelte +++ b/Front/src/paginas/propietario.svelte @@ -6,9 +6,9 @@ -
+
-
+


Este es un formulario para crear una cuenta de Inquilino. diff --git a/Front/src/types.d.ts b/Front/src/types.d.ts new file mode 100644 index 0000000..31d5f36 --- /dev/null +++ b/Front/src/types.d.ts @@ -0,0 +1,17 @@ +export type PropiedadDto = { + id: number, + ubicacion: string, + tipo: string, + piso: string | null, + letra: string | null, +} +export type Permiso = { + id: number; + descripcion: string; + }; + +export type Grupo = { + id: number; + nombre: string; + idpermisos: Permiso[]; + }; diff --git a/Modelo/RepositorioPropiedades.cs b/Modelo/RepositorioPropiedades.cs index 99c57bf..5d6d374 100644 --- a/Modelo/RepositorioPropiedades.cs +++ b/Modelo/RepositorioPropiedades.cs @@ -7,8 +7,7 @@ using Microsoft.EntityFrameworkCore; using Modelo; using MySql.Data.MySqlClient; -public class RepositorioPropiedades: RepositorioBase -{ +public class RepositorioPropiedades: RepositorioBase { public IQueryable ListarPropiedades(){ FormattableString sqlq = $""" @@ -69,10 +68,10 @@ public bool AñadirPropiedad(Propiedade? prop) { public IQueryable ObtenerPropiedadesPorEmail(string email) { FormattableString sqlq = $""" - SELECT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion as TipoPropiedad From Propiedades p + SELECT p.id, p.ubicacion as Ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion as Tipo From Propiedades p JOIN Clientes c ON c.dni = p.dnipropietario JOIN TipoPropiedad tp ON tp.id = p.idtipropiedad - WHERE c.email = {email} + WHERE c.email = {email} AND p.idestado = 1 """; var ret = Context.Database.SqlQuery(sqlq); return ret; @@ -93,10 +92,14 @@ public bool AñadirPropiedad(Propiedade? prop) { return Guardar(con); } - public bool BajaPropiedad(int id) { + public bool BajaPropiedad(int id, Cliente? cli) { + if (cli == null) return false; + var con = Context; - Propiedade? prop = con.Propiedades.Find(id); + Propiedade? prop = con.Propiedades.FirstOrDefault(x=>x.Id == id); if (prop == null) return false; + Console.WriteLine("prop.dni: "+prop.Dnipropietario+", cli.dni: "+cli.Dni); + if (prop.Dnipropietario != cli.Dni) return false; prop.Idestado = 3; return Guardar(con); @@ -121,4 +124,4 @@ public bool AñadirPropiedad(Propiedade? prop) { return Guardar(con); } -} \ No newline at end of file +} From 28cf77ad18cce77949cf9390488623f40be8b2bc Mon Sep 17 00:00:00 2001 From: fede Date: Sat, 30 Nov 2024 14:09:19 -0300 Subject: [PATCH 4/9] chore: @debug Signed-off-by: fede --- Front/src/paginas/MisPropiedades.svelte | 1 - 1 file changed, 1 deletion(-) diff --git a/Front/src/paginas/MisPropiedades.svelte b/Front/src/paginas/MisPropiedades.svelte index 45a6353..d4784fe 100644 --- a/Front/src/paginas/MisPropiedades.svelte +++ b/Front/src/paginas/MisPropiedades.svelte @@ -51,7 +51,6 @@ onMount(async ()=> { {#each $propiedades as propiedad} - {@debug propiedad} {/each} From c116c924cdbe99aac86886c1f2edd2fc119017e1 Mon Sep 17 00:00:00 2001 From: fede Date: Sat, 30 Nov 2024 18:45:14 -0300 Subject: [PATCH 5/9] =?UTF-8?q?m=C3=A1s=20avances?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: fede --- Front/src/Componentes/ModalEstatico.svelte | 15 ++-- Front/src/Componentes/RowPropiedad.svelte | 23 ++++-- .../Componentes/modificarPropiedadForm.svelte | 77 +++++++++++++++++++ Front/src/paginas/MisPropiedades.svelte | 4 +- Front/src/paginas/PublicarPropiedad.svelte | 11 +-- Front/src/paginas/propiedades.svelte | 0 Front/src/types.d.ts | 10 +++ 7 files changed, 119 insertions(+), 21 deletions(-) create mode 100644 Front/src/Componentes/modificarPropiedadForm.svelte delete mode 100644 Front/src/paginas/propiedades.svelte diff --git a/Front/src/Componentes/ModalEstatico.svelte b/Front/src/Componentes/ModalEstatico.svelte index 2197607..03f801d 100644 --- a/Front/src/Componentes/ModalEstatico.svelte +++ b/Front/src/Componentes/ModalEstatico.svelte @@ -1,13 +1,18 @@
- + + {#if iscomponent == false} {payload} + {:else} + {@render payload()} + {/if} -
\ No newline at end of file +
diff --git a/Front/src/Componentes/RowPropiedad.svelte b/Front/src/Componentes/RowPropiedad.svelte index b4f0de9..e054ef4 100644 --- a/Front/src/Componentes/RowPropiedad.svelte +++ b/Front/src/Componentes/RowPropiedad.svelte @@ -1,10 +1,18 @@ - + {id} {ubicacion} + {canthabitaciones} {letra} {piso} {tipo} - + {#if modal} {/if} +{#if modificar} +{/if} diff --git a/Front/src/Componentes/modificarPropiedadForm.svelte b/Front/src/Componentes/modificarPropiedadForm.svelte new file mode 100644 index 0000000..614662f --- /dev/null +++ b/Front/src/Componentes/modificarPropiedadForm.svelte @@ -0,0 +1,77 @@ + + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
diff --git a/Front/src/paginas/MisPropiedades.svelte b/Front/src/paginas/MisPropiedades.svelte index d4784fe..e47d944 100644 --- a/Front/src/paginas/MisPropiedades.svelte +++ b/Front/src/paginas/MisPropiedades.svelte @@ -44,6 +44,7 @@ onMount(async ()=> { # ubicacion + Habitaciones Letra Piso Tipo @@ -51,7 +52,8 @@ onMount(async ()=> { {#each $propiedades as propiedad} - + + {/each} diff --git a/Front/src/paginas/PublicarPropiedad.svelte b/Front/src/paginas/PublicarPropiedad.svelte index 341670b..8b9eb05 100644 --- a/Front/src/paginas/PublicarPropiedad.svelte +++ b/Front/src/paginas/PublicarPropiedad.svelte @@ -3,15 +3,7 @@ import ModalEstatico from "../Componentes/ModalEstatico.svelte"; import NavBarAutocompletable from "../Componentes/NavBarAutocompletable.svelte"; import BarraHorizontalConTexto from "../Componentes/BarraHorizontalConTexto.svelte"; - - type Propiedad = { - ubicacion: string, - canthabitaciones: number, - piso: number, - letra: string, - email: string, - idtipropiedad: number, - }; + import type { Propiedad } from "../types"; let propiedad: Propiedad = { ubicacion: "", @@ -28,6 +20,7 @@ const submitForm = async (e: Event) => { e.preventDefault(); + mostrarModal = false; try { const response = await fetch("http://localhost:5007/api/propiedad", { method: 'POST', diff --git a/Front/src/paginas/propiedades.svelte b/Front/src/paginas/propiedades.svelte deleted file mode 100644 index e69de29..0000000 diff --git a/Front/src/types.d.ts b/Front/src/types.d.ts index 31d5f36..5c8b52d 100644 --- a/Front/src/types.d.ts +++ b/Front/src/types.d.ts @@ -4,6 +4,7 @@ export type PropiedadDto = { tipo: string, piso: string | null, letra: string | null, + canthabitaciones: number, } export type Permiso = { id: number; @@ -15,3 +16,12 @@ export type Grupo = { nombre: string; idpermisos: Permiso[]; }; + +export type Propiedad = { + ubicacion: string, + canthabitaciones: number, + piso: number, + letra: string, + email: string, + idtipropiedad: number, +}; From 646cf3e0096d6fa43de4a77150560d336323965a Mon Sep 17 00:00:00 2001 From: fede Date: Wed, 4 Dec 2024 17:44:25 -0300 Subject: [PATCH 6/9] feat: modificar propiedad Signed-off-by: fede --- Aspnet/Controllers/PropiedadesController.cs | 50 ++++++++++++ Entidades/Dto/PatchPropiedadDto.cs | 3 + Front/src/Componentes/RowPropiedad.svelte | 12 ++- Front/src/Componentes/css/popup.css | 12 ++- .../Componentes/modificarPropiedadForm.svelte | 77 ++++++++++++++++--- Front/src/paginas/MisPropiedades.svelte | 62 +++++++-------- Front/src/stores/urlStore.js | 3 + Modelo/RepositorioBase.cs | 4 +- Modelo/RepositorioPropiedades.cs | 16 +++- makefile | 2 +- 10 files changed, 189 insertions(+), 52 deletions(-) create mode 100644 Entidades/Dto/PatchPropiedadDto.cs create mode 100644 Front/src/stores/urlStore.js diff --git a/Aspnet/Controllers/PropiedadesController.cs b/Aspnet/Controllers/PropiedadesController.cs index 05daf81..bfc470c 100644 --- a/Aspnet/Controllers/PropiedadesController.cs +++ b/Aspnet/Controllers/PropiedadesController.cs @@ -73,6 +73,35 @@ public class PropiedadesController: ControllerBase { BadRequest(new { message = "Fallo al momento de añadir la propiedad a la base de datos"}); } + [HttpPatch("api/propiedad")] + public IActionResult PatchPropiedad([FromBody] PatchPropiedadDto propiedad, [FromHeader(Name = "Auth")] string Auth) { + + if (String.IsNullOrEmpty(Auth)) return Unauthorized(); + var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 1); + if (validacion1 == false) return Unauthorized(); + + string validacion2 = ValidarPropiedad(propiedad); + if (validacion2 != "") return BadRequest(new { message = validacion2 }); + + Cliente? cli = RepositorioPropietario.Singleton.ObtenerPropietarioPorEmail(propiedad.Email); + if (cli == null) return BadRequest(new { message = "El email no corresponde a un propietario"}); + + Propiedade Prop = new Propiedade{ + Id = propiedad.id, + Canthabitaciones = propiedad.Canthabitaciones, + Dnipropietario = cli.Dni, + Idtipropiedad = propiedad.tipo, + Ubicacion = propiedad.Ubicacion, + Letra = propiedad.Letra ?? null, + Piso = propiedad.Piso ?? null, + }; + + bool ret = RepositorioPropiedades.Singleton.PatchPropiedad(Prop); + return (ret)? + Ok(new {message = "Fue modificado Correctamente"}): + BadRequest(new {message = "Fallo al modificar la base de datos"}); + } + [HttpDelete("api/propiedad")] public IActionResult BajaPropiedad(int id, [FromHeader(Name = "Auth")] string Auth, [FromHeader(Name = "Email")] string email){ if (String.IsNullOrEmpty(Auth)) return Unauthorized(); @@ -140,8 +169,29 @@ public class PropiedadesController: ControllerBase { string ret = ""; if (String.IsNullOrEmpty(prop.Email)) ret += "Falta Definir un email de propietario\n"; + if (prop.Canthabitaciones < 0) ret += "No se puede tener una cantidad de habitaciones negativa\n"; + if (prop.Idtipropiedad <= 0) ret += "No tiene un tipo de propiedad asociada"; + + if (String.IsNullOrEmpty(prop.Ubicacion)) ret += "Tiene que definir la ubicacion de la propiedad\n"; + + return ret; + + } + private string ValidarPropiedad(PatchPropiedadDto prop) { + if (prop == null) return "Esta mal formado el body de la request"; + + string ret = ""; + if (prop.id <1) ret += "No Cargo el dato de id"; + if (String.IsNullOrEmpty(prop.Email)) ret += "Falta Definir un email de propietario\n"; + + if (prop.id <1 ) ret += "No puede haber una id menor a 1"; + + if (prop.Canthabitaciones < 0) ret += "No se puede tener una cantidad de habitaciones negativa\n"; + + if (prop.tipo <= 0) ret += "No tiene un tipo de propiedad asociada"; + if (String.IsNullOrEmpty(prop.Ubicacion)) ret += "Tiene que definir la ubicacion de la propiedad\n"; return ret; diff --git a/Entidades/Dto/PatchPropiedadDto.cs b/Entidades/Dto/PatchPropiedadDto.cs new file mode 100644 index 0000000..3426407 --- /dev/null +++ b/Entidades/Dto/PatchPropiedadDto.cs @@ -0,0 +1,3 @@ +namespace Entidades.Dto; + +public record PatchPropiedadDto(int id, string Ubicacion, int Canthabitaciones, int? Piso, string? Letra, string Email, int tipo); diff --git a/Front/src/Componentes/RowPropiedad.svelte b/Front/src/Componentes/RowPropiedad.svelte index e054ef4..9894728 100644 --- a/Front/src/Componentes/RowPropiedad.svelte +++ b/Front/src/Componentes/RowPropiedad.svelte @@ -1,8 +1,9 @@ +{#if showAlert} + +{/if}
@@ -28,7 +81,7 @@ type="number" id="canthabitaciones" class="form-control" - bind:value={propi.canthabitaciones} + bind:value={canthabitaciones} min="1" placeholder="Cantidad de Habitaciones" required @@ -40,7 +93,7 @@ type="number" id="piso" class="form-control" - bind:value={propi.piso} + bind:value={piso} min="0" placeholder="Piso" /> @@ -51,7 +104,7 @@ type="text" id="letra" class="form-control" - bind:value={propi.letra} + bind:value={letra} maxlength="1" placeholder="Letra" /> @@ -59,9 +112,9 @@
- +
diff --git a/Front/src/paginas/MisPropiedades.svelte b/Front/src/paginas/MisPropiedades.svelte index e47d944..4bccc8e 100644 --- a/Front/src/paginas/MisPropiedades.svelte +++ b/Front/src/paginas/MisPropiedades.svelte @@ -1,39 +1,39 @@ @@ -52,7 +52,7 @@ onMount(async ()=> { {#each $propiedades as propiedad} - + {/each} diff --git a/Front/src/stores/urlStore.js b/Front/src/stores/urlStore.js new file mode 100644 index 0000000..4ef3ca2 --- /dev/null +++ b/Front/src/stores/urlStore.js @@ -0,0 +1,3 @@ +import { readable } from 'svelte/store'; + +export const urlG = readable('http://localhost:5007'); diff --git a/Modelo/RepositorioBase.cs b/Modelo/RepositorioBase.cs index 1eb07d1..11eeabc 100644 --- a/Modelo/RepositorioBase.cs +++ b/Modelo/RepositorioBase.cs @@ -1,6 +1,4 @@ -using System.Collections.ObjectModel; -using Entidades; -using Microsoft.EntityFrameworkCore; +using Entidades; namespace Modelo; diff --git a/Modelo/RepositorioPropiedades.cs b/Modelo/RepositorioPropiedades.cs index 5d6d374..cd4c24b 100644 --- a/Modelo/RepositorioPropiedades.cs +++ b/Modelo/RepositorioPropiedades.cs @@ -66,6 +66,21 @@ public bool AñadirPropiedad(Propiedade? prop) { return (int)filasInsertadasParam.Value == 1? true: false; } + public bool PatchPropiedad(Propiedade prop) { + var con = Context; + Propiedade? propi = con.Propiedades.FirstOrDefault(x=>x.Id == prop.Id); + + if (propi == null) return false; + + propi.Canthabitaciones = prop.Canthabitaciones; + propi.Idtipropiedad = prop.Idtipropiedad; + propi.Ubicacion = prop.Ubicacion; + propi.Piso = prop.Piso; + propi.Letra = prop.Letra; + + return Guardar(con); + } + public IQueryable ObtenerPropiedadesPorEmail(string email) { FormattableString sqlq = $""" SELECT p.id, p.ubicacion as Ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion as Tipo From Propiedades p @@ -98,7 +113,6 @@ public bool AñadirPropiedad(Propiedade? prop) { var con = Context; Propiedade? prop = con.Propiedades.FirstOrDefault(x=>x.Id == id); if (prop == null) return false; - Console.WriteLine("prop.dni: "+prop.Dnipropietario+", cli.dni: "+cli.Dni); if (prop.Dnipropietario != cli.Dni) return false; prop.Idestado = 3; diff --git a/makefile b/makefile index fda237e..6833aa4 100644 --- a/makefile +++ b/makefile @@ -1,2 +1,2 @@ run: - dotnet run --project Aspnet/AlquilaFacil.csproj + dotnet watch run --project Aspnet/AlquilaFacil.csproj From 5289c07d848a9d8fe7b9ec47bbf98096e4527cba Mon Sep 17 00:00:00 2001 From: fede Date: Wed, 4 Dec 2024 17:52:17 -0300 Subject: [PATCH 7/9] arreglado tema de permisos Signed-off-by: fede --- Aspnet/Controllers/PropiedadesController.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Aspnet/Controllers/PropiedadesController.cs b/Aspnet/Controllers/PropiedadesController.cs index bfc470c..23a92c4 100644 --- a/Aspnet/Controllers/PropiedadesController.cs +++ b/Aspnet/Controllers/PropiedadesController.cs @@ -77,7 +77,7 @@ public class PropiedadesController: ControllerBase { public IActionResult PatchPropiedad([FromBody] PatchPropiedadDto propiedad, [FromHeader(Name = "Auth")] string Auth) { if (String.IsNullOrEmpty(Auth)) return Unauthorized(); - var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 1); + var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 2); if (validacion1 == false) return Unauthorized(); string validacion2 = ValidarPropiedad(propiedad); @@ -122,7 +122,7 @@ public class PropiedadesController: ControllerBase { [HttpPut("api/propiedades/addServicio")] public IActionResult AñadirServicio([FromBody] ServicioAPropiedadDto Servicios, [FromHeader(Name = "Auth")] string Auth) { if (String.IsNullOrEmpty(Auth)) return Unauthorized(); - var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 8); + var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 2); if (validacion1 == false) return Unauthorized(); if (Servicios.propiedadid <= 0) return BadRequest(new {message ="No puede tener una id negativa o cero"}); @@ -146,7 +146,7 @@ public class PropiedadesController: ControllerBase { [HttpPut("api/propiedades/RmServicio")] public IActionResult EliminarServicio([FromBody] ServicioAPropiedadDto servicio, [FromHeader(Name = "Auth")] string Auth) { if (String.IsNullOrEmpty(Auth)) return Unauthorized(); - var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 13); + var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 2); if (validacion1 == false) return Unauthorized(); if (servicio.propiedadid <= 0) return BadRequest(new {message ="No puede tener una id negativa o cero"}); From dee2031d87c63bf71ce01ef8b152f31446bd1ef1 Mon Sep 17 00:00:00 2001 From: fede Date: Fri, 6 Dec 2024 00:01:31 -0300 Subject: [PATCH 8/9] =?UTF-8?q?feat:=20ahora=20se=20pueden=20ver=20las=20p?= =?UTF-8?q?ropiedades=20dadas=20de=20baja=20y=20a=C3=B1adido=20el=20tema?= =?UTF-8?q?=20de=20los=20servicios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: fede --- Aspnet/Controllers/PropiedadesController.cs | 23 +- Entidades/Dto/PatchPropiedadDto.cs | 2 +- Entidades/Dto/PropiedadesDto.cs | 1 + Front/src/App.svelte | 13 +- Front/src/Componentes/ListaAcciones.svelte | 4 +- Front/src/Componentes/RowPropiedad.svelte | 24 +- .../Componentes/modificarPropiedadForm.svelte | 247 ++++++++++-------- Front/src/paginas/MisPropiedades.svelte | 3 +- Front/src/paginas/MisPropiedadesDeBaja.svelte | 64 +++++ Front/src/types.d.ts | 1 + Modelo/RepositorioPropiedades.cs | 39 ++- Modelo/RepositorioServicios.cs | 5 + 12 files changed, 291 insertions(+), 135 deletions(-) create mode 100644 Front/src/paginas/MisPropiedadesDeBaja.svelte diff --git a/Aspnet/Controllers/PropiedadesController.cs b/Aspnet/Controllers/PropiedadesController.cs index 23a92c4..08f78c9 100644 --- a/Aspnet/Controllers/PropiedadesController.cs +++ b/Aspnet/Controllers/PropiedadesController.cs @@ -46,6 +46,22 @@ public class PropiedadesController: ControllerBase { return Ok(ret); } + [HttpGet("api/propiedades/Propietario/Bajas")] + public IActionResult ObtenerPropiedadesPorPropietarioBajas ( + [FromHeader(Name = "Email")] string email, + [FromHeader(Name = "Auth")] string Auth) { + + if (String.IsNullOrEmpty(Auth)) return Unauthorized(); + var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 8); + if (validacion1 == false) return Unauthorized(); + + email = email.Trim(); + if (String.IsNullOrEmpty(email)) return BadRequest(new {message ="falta campo email"}); + + IQueryable ret = RepositorioPropiedades.Singleton.ObtenerPropiedadesDeBajaPorEmail(email); + return Ok(ret); + } + [HttpPost("api/propiedad")] public IActionResult AltaPropiedad([FromBody] AltaPropiedadDto propiedad, [FromHeader(Name = "Auth")] string Auth) { if (String.IsNullOrEmpty(Auth)) return Unauthorized(); @@ -86,6 +102,8 @@ public class PropiedadesController: ControllerBase { Cliente? cli = RepositorioPropietario.Singleton.ObtenerPropietarioPorEmail(propiedad.Email); if (cli == null) return BadRequest(new { message = "El email no corresponde a un propietario"}); + List servs = RepositorioServicios.Singleton.ObtenerServiciosPorDescripcion(propiedad.Servicios); + Propiedade Prop = new Propiedade{ Id = propiedad.id, Canthabitaciones = propiedad.Canthabitaciones, @@ -94,6 +112,7 @@ public class PropiedadesController: ControllerBase { Ubicacion = propiedad.Ubicacion, Letra = propiedad.Letra ?? null, Piso = propiedad.Piso ?? null, + IdServicios = servs, }; bool ret = RepositorioPropiedades.Singleton.PatchPropiedad(Prop); @@ -115,8 +134,8 @@ public class PropiedadesController: ControllerBase { var ret = RepositorioPropiedades.Singleton.BajaPropiedad(id, propie); return ret ? - Ok(new {message = $"la propiedad con id {id} fue dada de baja"}): - BadRequest(new {message="Fallo al dar de baja la propiedad"}); + Ok(new { message = $"Se Cambio el estado de la propiedad con id {id}"}): + BadRequest(new {message="Fallo al cambiar el estado de la propiedad"}); } [HttpPut("api/propiedades/addServicio")] diff --git a/Entidades/Dto/PatchPropiedadDto.cs b/Entidades/Dto/PatchPropiedadDto.cs index 3426407..e146ce7 100644 --- a/Entidades/Dto/PatchPropiedadDto.cs +++ b/Entidades/Dto/PatchPropiedadDto.cs @@ -1,3 +1,3 @@ namespace Entidades.Dto; -public record PatchPropiedadDto(int id, string Ubicacion, int Canthabitaciones, int? Piso, string? Letra, string Email, int tipo); +public record PatchPropiedadDto(int id, string Ubicacion, int Canthabitaciones, int? Piso, string? Letra, string Email, int tipo, List Servicios); diff --git a/Entidades/Dto/PropiedadesDto.cs b/Entidades/Dto/PropiedadesDto.cs index bb0c3c4..b4aa423 100644 --- a/Entidades/Dto/PropiedadesDto.cs +++ b/Entidades/Dto/PropiedadesDto.cs @@ -6,4 +6,5 @@ public class PropiedadesDto { public int piso { get; set; } public string letra { get; set; } = ""; public string Tipo { get; set; } = ""; + public string? Servicios {get;set;} = ""; } diff --git a/Front/src/App.svelte b/Front/src/App.svelte index b1efce0..6528cb0 100644 --- a/Front/src/App.svelte +++ b/Front/src/App.svelte @@ -7,6 +7,7 @@ import InqPage from "./paginas/inquilino.svelte"; import PropPage from "./paginas/propietario.svelte"; import MisPropiedades from "./paginas/MisPropiedades.svelte"; + import MisPropiedadesDeBaja from "./paginas/MisPropiedadesDeBaja.svelte"; import FrontAdmin from "./paginas/grupos/AdminG.svelte"; import FrontInformes from "./paginas/grupos/InformesG.svelte"; import FrontInquilino from "./paginas/grupos/InquilinoG.svelte"; @@ -34,19 +35,25 @@ + + + + + + - - - + + + diff --git a/Front/src/Componentes/ListaAcciones.svelte b/Front/src/Componentes/ListaAcciones.svelte index d93319e..51bdbfa 100644 --- a/Front/src/Componentes/ListaAcciones.svelte +++ b/Front/src/Componentes/ListaAcciones.svelte @@ -39,10 +39,10 @@ } -
+
{#each $permisos as item} {item.descripcion} {/each} -
\ No newline at end of file +
diff --git a/Front/src/Componentes/RowPropiedad.svelte b/Front/src/Componentes/RowPropiedad.svelte index 9894728..73b54e4 100644 --- a/Front/src/Componentes/RowPropiedad.svelte +++ b/Front/src/Componentes/RowPropiedad.svelte @@ -1,10 +1,9 @@ {#if showAlert} -