From 29f7dc4efea316adabf7d174660b1e37742f9012 Mon Sep 17 00:00:00 2001 From: fede Date: Tue, 26 Nov 2024 08:36:03 -0300 Subject: [PATCH] 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);