From edaf8c66000dc40e9764615c0adb424caba43118 Mon Sep 17 00:00:00 2001 From: fede Date: Fri, 6 Dec 2024 17:31:36 -0300 Subject: [PATCH 01/36] =?UTF-8?q?a=C3=B1ado=20archivo=20busqueda?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Front/src/App.svelte | 9 +++++++-- Front/src/paginas/BusquedaPropiedades.svelte | 5 +++++ 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 Front/src/paginas/BusquedaPropiedades.svelte diff --git a/Front/src/App.svelte b/Front/src/App.svelte index 6528cb0..fcfeaf0 100644 --- a/Front/src/App.svelte +++ b/Front/src/App.svelte @@ -13,6 +13,7 @@ import FrontInquilino from "./paginas/grupos/InquilinoG.svelte"; import FrontPropietario from "./paginas/grupos/PropietarioG.svelte"; import PublicarPropiedad from "./paginas/PublicarPropiedad.svelte"; + import BusquedaPropiedades from "./paginas/BusquedaPropiedades.svelte"; @@ -40,18 +41,22 @@ + + + + + - - + diff --git a/Front/src/paginas/BusquedaPropiedades.svelte b/Front/src/paginas/BusquedaPropiedades.svelte new file mode 100644 index 0000000..b42eb02 --- /dev/null +++ b/Front/src/paginas/BusquedaPropiedades.svelte @@ -0,0 +1,5 @@ + + + From c8daa303e4bd2cb8508950cf32592c03397dfc89 Mon Sep 17 00:00:00 2001 From: fede Date: Fri, 6 Dec 2024 17:33:40 -0300 Subject: [PATCH 02/36] scale: Variable Global $urlG --- Front/src/Componentes/ListaAcciones.svelte | 3 +- .../Componentes/NavBarAutocompletable.svelte | 7 +- Front/src/Componentes/RowPropiedad.svelte | 4 +- Front/src/Componentes/RutaProtegida.svelte | 86 +++++++++---------- Front/src/Componentes/login.svelte | 3 +- Front/src/paginas/MisPropiedades.svelte | 3 +- Front/src/paginas/MisPropiedadesDeBaja.svelte | 3 +- Front/src/paginas/PublicarPropiedad.svelte | 4 +- Front/src/paginas/inquilino.svelte | 3 +- Front/src/paginas/propietario.svelte | 3 +- 10 files changed, 65 insertions(+), 54 deletions(-) diff --git a/Front/src/Componentes/ListaAcciones.svelte b/Front/src/Componentes/ListaAcciones.svelte index 51bdbfa..f5c3287 100644 --- a/Front/src/Componentes/ListaAcciones.svelte +++ b/Front/src/Componentes/ListaAcciones.svelte @@ -1,6 +1,7 @@ + onMount(() => { + handleAccess(); + }); + - {#if !$isVerified} -
- Cargando -
+{#if !$isVerified} +
+ Cargando +
+{:else} + {#if $isAuthenticated} + {@render componente()} {:else} - {#if $isAuthenticated} - {@render componente()} - {:else} - {navigate('/')} - {/if} + {navigate('/')} {/if} - \ No newline at end of file +{/if} diff --git a/Front/src/Componentes/login.svelte b/Front/src/Componentes/login.svelte index 34a432c..3c1ad6b 100644 --- a/Front/src/Componentes/login.svelte +++ b/Front/src/Componentes/login.svelte @@ -1,6 +1,7 @@ @@ -29,7 +30,7 @@

- +
diff --git a/Front/src/paginas/propietario.svelte b/Front/src/paginas/propietario.svelte index b551918..3f6ffb2 100644 --- a/Front/src/paginas/propietario.svelte +++ b/Front/src/paginas/propietario.svelte @@ -2,6 +2,7 @@ import FormPostInq from "../Componentes/FormPostCli.svelte"; import NavBarAutocompletable from "../Componentes/NavBarAutocompletable.svelte"; import TextBar from "../Componentes/BarraHorizontalConTexto.svelte"; + import { urlG } from "../stores/urlStore"; @@ -28,7 +29,7 @@

- +
From dbc255dd4b646cfd2c020835e085d691755e63f2 Mon Sep 17 00:00:00 2001 From: fede Date: Fri, 6 Dec 2024 17:34:08 -0300 Subject: [PATCH 03/36] =?UTF-8?q?fix:=20a=C3=B1adir=20grupo=20a=20cliente?= =?UTF-8?q?=20falla?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Modelo/RepositorioUsuarios.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modelo/RepositorioUsuarios.cs b/Modelo/RepositorioUsuarios.cs index 24f6941..ede9978 100644 --- a/Modelo/RepositorioUsuarios.cs +++ b/Modelo/RepositorioUsuarios.cs @@ -12,7 +12,7 @@ public class RepositorioUsuarios: RepositorioBase { Grupo? grupo; //check por si la cuenta ya existe (puede ser propietario) - Cliente? cli2 = con.Clientes.Find(cli.Dni); + Cliente? cli2 = con.Clientes.FirstOrDefault(x=>x.Email == cli.Email); if (cli2 != null) { grupo = con.Grupos.Find(2); if (grupo == null || grupo.Id == 0) return false; From 990f866a717d77695479b0b59930140b05650c04 Mon Sep 17 00:00:00 2001 From: fede Date: Sat, 7 Dec 2024 19:05:07 -0300 Subject: [PATCH 04/36] WIP: primer avance con la Busqueda de Propiedades Signed-off-by: fede --- Aspnet/Controllers/BusquedaControler.cs | 19 +++++ Entidades/Dto/BusquedaDto.cs | 3 + Front/public/zoom.svg | 19 +++++ .../src/Componentes/BotonVolverArriba.svelte | 14 ++++ Front/src/Componentes/PanelBusqueda.svelte | 60 +++++++++++++++ .../Componentes/PublicacionPropiedad.svelte | 13 ++++ Front/src/paginas/BusquedaPropiedades.svelte | 73 +++++++++++++++++++ Modelo/RepositorioPropiedades.cs | 7 +- 8 files changed, 207 insertions(+), 1 deletion(-) create mode 100644 Aspnet/Controllers/BusquedaControler.cs create mode 100644 Entidades/Dto/BusquedaDto.cs create mode 100644 Front/public/zoom.svg create mode 100644 Front/src/Componentes/BotonVolverArriba.svelte create mode 100644 Front/src/Componentes/PanelBusqueda.svelte create mode 100644 Front/src/Componentes/PublicacionPropiedad.svelte diff --git a/Aspnet/Controllers/BusquedaControler.cs b/Aspnet/Controllers/BusquedaControler.cs new file mode 100644 index 0000000..3d9b29d --- /dev/null +++ b/Aspnet/Controllers/BusquedaControler.cs @@ -0,0 +1,19 @@ +using Entidades.Dto; +using Modelo; +using Microsoft.AspNetCore.Mvc; + +namespace AlquilaFacil.Controllers; + +[ApiController] +public class BusquedaController: ControllerBase { + [HttpGet("api/busqueda")] + public IActionResult FiltroPropiedades([FromHeader(Name = "Auth")]string Auth, int cantidadHabitaciones, int tipoPropiedad, [FromQuery]string servicios) { + if (String.IsNullOrEmpty(Auth)) return Unauthorized(); + var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 3); + if (validacion1 == false) return Unauthorized(); + + var propiedades = RepositorioPropiedades.Singleton.ObtenerPropiedesPorHabitaciones_Tipo_Servicios(); + + + } +} diff --git a/Entidades/Dto/BusquedaDto.cs b/Entidades/Dto/BusquedaDto.cs new file mode 100644 index 0000000..b49d910 --- /dev/null +++ b/Entidades/Dto/BusquedaDto.cs @@ -0,0 +1,3 @@ +namespace Entidades.Dto; + +public record BusquedaDto(int Id, string Ubicacion, string Servicios); diff --git a/Front/public/zoom.svg b/Front/public/zoom.svg new file mode 100644 index 0000000..6371d03 --- /dev/null +++ b/Front/public/zoom.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/Front/src/Componentes/BotonVolverArriba.svelte b/Front/src/Componentes/BotonVolverArriba.svelte new file mode 100644 index 0000000..3c576ad --- /dev/null +++ b/Front/src/Componentes/BotonVolverArriba.svelte @@ -0,0 +1,14 @@ + + + diff --git a/Front/src/Componentes/PanelBusqueda.svelte b/Front/src/Componentes/PanelBusqueda.svelte new file mode 100644 index 0000000..62eb17d --- /dev/null +++ b/Front/src/Componentes/PanelBusqueda.svelte @@ -0,0 +1,60 @@ + + + +
+ +

Busqueda Filtrada

+ +
+ + +
+ +
+
Servicios
+ {#each servicios as servicio} +
+ + +
+ {/each} +
+ +
+ + +
+ + +
diff --git a/Front/src/Componentes/PublicacionPropiedad.svelte b/Front/src/Componentes/PublicacionPropiedad.svelte new file mode 100644 index 0000000..494613c --- /dev/null +++ b/Front/src/Componentes/PublicacionPropiedad.svelte @@ -0,0 +1,13 @@ + + +
+
+
+ +
+

{ubicacion} - {servicios}

+ +
+
diff --git a/Front/src/paginas/BusquedaPropiedades.svelte b/Front/src/paginas/BusquedaPropiedades.svelte index b42eb02..6297fbe 100644 --- a/Front/src/paginas/BusquedaPropiedades.svelte +++ b/Front/src/paginas/BusquedaPropiedades.svelte @@ -1,5 +1,78 @@ + +
+
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+
+
+ {#if showButton } +
+ +
+ {/if} +
diff --git a/Modelo/RepositorioPropiedades.cs b/Modelo/RepositorioPropiedades.cs index 3c1632e..6aa445a 100644 --- a/Modelo/RepositorioPropiedades.cs +++ b/Modelo/RepositorioPropiedades.cs @@ -170,5 +170,10 @@ public bool AñadirPropiedad(Propiedade? prop) { } return Guardar(con); - } + } + + public IQueryable ObtenerPropiedesPorHabitaciones_Tipo_Servicios(int habitaciones, int tipo, string servicios) { + + } } + From 3f08dcfc817ea4cb836a19f3a7229a4b63effe00 Mon Sep 17 00:00:00 2001 From: fede Date: Sat, 21 Dec 2024 19:16:47 -0300 Subject: [PATCH 05/36] =?UTF-8?q?a=C3=B1adido=20tema=20oscuro,=20y=20progr?= =?UTF-8?q?amada=20la=20funcion=20de=20busqueda?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Aspnet/Controllers/BusquedaControler.cs | 27 ++- Entidades/Dto/BusquedaDto.cs | 2 +- Front/index.html | 6 +- Front/public/toggle-left.svg | 14 ++ Front/public/toggle-right.svg | 14 ++ Front/src/Componentes/ListaAcciones.svelte | 8 +- .../{login.svelte => LoginPanel.svelte} | 3 +- .../Componentes/NavBarAutocompletable.svelte | 34 +++- Front/src/Componentes/PanelBusqueda.svelte | 28 +++- .../Componentes/PublicacionPropiedad.svelte | 25 ++- Front/src/Componentes/RowPropiedad.svelte | 2 +- Front/src/Componentes/RutaProtegida.svelte | 2 +- Front/src/Componentes/css/dotted-line.css | 5 + Front/src/paginas/BusquedaPropiedades.svelte | 73 ++++---- Front/src/paginas/MisPropiedades.svelte | 5 +- Front/src/paginas/MisPropiedadesDeBaja.svelte | 5 +- Front/src/paginas/login.svelte | 2 +- Front/src/stores/urlStore.js | 3 - Front/src/stores/urlStore.ts | 3 + Front/tsconfig.json | 1 - Modelo/RepositorioPropiedades.cs | 158 +++++++++++++++++- 21 files changed, 345 insertions(+), 75 deletions(-) create mode 100644 Front/public/toggle-left.svg create mode 100644 Front/public/toggle-right.svg rename Front/src/Componentes/{login.svelte => LoginPanel.svelte} (92%) create mode 100644 Front/src/Componentes/css/dotted-line.css delete mode 100644 Front/src/stores/urlStore.js create mode 100644 Front/src/stores/urlStore.ts diff --git a/Aspnet/Controllers/BusquedaControler.cs b/Aspnet/Controllers/BusquedaControler.cs index 3d9b29d..71a1aae 100644 --- a/Aspnet/Controllers/BusquedaControler.cs +++ b/Aspnet/Controllers/BusquedaControler.cs @@ -7,13 +7,32 @@ namespace AlquilaFacil.Controllers; [ApiController] public class BusquedaController: ControllerBase { [HttpGet("api/busqueda")] - public IActionResult FiltroPropiedades([FromHeader(Name = "Auth")]string Auth, int cantidadHabitaciones, int tipoPropiedad, [FromQuery]string servicios) { + public IActionResult FiltroPropiedades([FromHeader(Name = "Auth")]string Auth, int cantidadHabitaciones = 0, int tipoPropiedad = 0, [FromQuery]string servicios = "") { if (String.IsNullOrEmpty(Auth)) return Unauthorized(); var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 3); if (validacion1 == false) return Unauthorized(); - var propiedades = RepositorioPropiedades.Singleton.ObtenerPropiedesPorHabitaciones_Tipo_Servicios(); - - + IQueryable? props = null; + if (servicios == ""){ + //no hay parametros de busqueda + if (cantidadHabitaciones == 0 && tipoPropiedad == 0 ) props = RepositorioPropiedades.Singleton.ListarPropiedades(); + //Solo Habitaciones + if (cantidadHabitaciones != 0 && tipoPropiedad == 0) props = RepositorioPropiedades.Singleton.ObtenerPropiedesPorHabitaciones(cantidadHabitaciones); + //Solo TipoPropiedad + if (cantidadHabitaciones == 0 && tipoPropiedad != 0) props = RepositorioPropiedades.Singleton.ObtenerPropiedesPorTipo(tipoPropiedad); + //Habitaciones y TipoPropiedad + if (cantidadHabitaciones != 0 && tipoPropiedad != 0) props = RepositorioPropiedades.Singleton.ObtenerPropiedesPorHabitaciones_Tipo(cantidadHabitaciones, tipoPropiedad); + } else { + //Solo se filtra por servicios + if (cantidadHabitaciones == 0 && tipoPropiedad == 0 ) props = RepositorioPropiedades.Singleton.ObtenerPropiedesPorServicios(servicios); + //Servicios y habitaciones + if (cantidadHabitaciones != 0 && tipoPropiedad == 0) props = RepositorioPropiedades.Singleton.ObtenerPropiedesPorHabitaciones_Servicios(cantidadHabitaciones, servicios); + //Tipo y Servicios + if (cantidadHabitaciones == 0 && tipoPropiedad != 0) props = RepositorioPropiedades.Singleton.ObtenerPropiedesPorTipo_Servicios(tipoPropiedad, servicios); + // Todos los parametros + if (cantidadHabitaciones != 0 && tipoPropiedad != 0) props = RepositorioPropiedades.Singleton.ObtenerPropiedesPorHabitaciones_Tipo_Servicios(cantidadHabitaciones, tipoPropiedad, servicios); + } + + return Ok(props); } } diff --git a/Entidades/Dto/BusquedaDto.cs b/Entidades/Dto/BusquedaDto.cs index b49d910..bae05d0 100644 --- a/Entidades/Dto/BusquedaDto.cs +++ b/Entidades/Dto/BusquedaDto.cs @@ -1,3 +1,3 @@ namespace Entidades.Dto; -public record BusquedaDto(int Id, string Ubicacion, string Servicios); +public record BusquedaDto(int Id, string Ubicacion, string? Servicios = ""); diff --git a/Front/index.html b/Front/index.html index 135b7b8..a051eac 100644 --- a/Front/index.html +++ b/Front/index.html @@ -5,7 +5,11 @@ - + AlquilaFacil diff --git a/Front/public/toggle-left.svg b/Front/public/toggle-left.svg new file mode 100644 index 0000000..9f7d915 --- /dev/null +++ b/Front/public/toggle-left.svg @@ -0,0 +1,14 @@ + + + + + diff --git a/Front/public/toggle-right.svg b/Front/public/toggle-right.svg new file mode 100644 index 0000000..28a184b --- /dev/null +++ b/Front/public/toggle-right.svg @@ -0,0 +1,14 @@ + + + + + diff --git a/Front/src/Componentes/ListaAcciones.svelte b/Front/src/Componentes/ListaAcciones.svelte index f5c3287..c5674d3 100644 --- a/Front/src/Componentes/ListaAcciones.svelte +++ b/Front/src/Componentes/ListaAcciones.svelte @@ -2,6 +2,7 @@ import { onMount } from "svelte"; import { writable } from "svelte/store"; import { urlG } from "../stores/urlStore"; + import { links, navigate } from "svelte-routing"; type Permiso = { id: number; @@ -38,11 +39,14 @@ console.error(e); } } + function redirijir(path: string){ + navigate(path); + } -
+
{#each $permisos as item} - + {item.descripcion} {/each} diff --git a/Front/src/Componentes/login.svelte b/Front/src/Componentes/LoginPanel.svelte similarity index 92% rename from Front/src/Componentes/login.svelte rename to Front/src/Componentes/LoginPanel.svelte index 3c1ad6b..9de9755 100644 --- a/Front/src/Componentes/login.svelte +++ b/Front/src/Componentes/LoginPanel.svelte @@ -29,7 +29,6 @@ } const ret = await response.json(); - localStorage.clear(); localStorage.setItem('email', ret.email); sessionStorage.setItem('token', ret.token); //setTimeout(() => console.log("50ms") ,50); @@ -41,7 +40,7 @@ - + Iniciar Sesión diff --git a/Front/src/Componentes/NavBarAutocompletable.svelte b/Front/src/Componentes/NavBarAutocompletable.svelte index 08089c1..4250159 100644 --- a/Front/src/Componentes/NavBarAutocompletable.svelte +++ b/Front/src/Componentes/NavBarAutocompletable.svelte @@ -2,10 +2,12 @@ import { Navbar, NavbarBrand, NavbarToggler, Nav, Collapse } from "@sveltestrap/sveltestrap"; import { onMount } from "svelte"; import { writable } from 'svelte/store'; + import { link, links } from "svelte-routing"; import './css/popup.css'; import type { Grupo } from "../types"; import { urlG } from "../stores/urlStore"; + import { navigate } from "svelte-routing"; let isOpen: boolean = $state(false); @@ -39,23 +41,39 @@ }) function redirijir(path: string){ - location.replace(path); + navigate(path); } + let theme = $state(localStorage.getItem("theme") ?? "light"); + const toggleTheme = () => { + theme = theme === "light" ? "dark" : "light"; + document.body.setAttribute("data-bs-theme", theme); + localStorage.setItem("theme", theme); + }; + AlquilaFacil -
- - Volver al Menú - +
+
+ + Volver al Menú + +
+
(isOpen = !isOpen)} /> -