From 3f08dcfc817ea4cb836a19f3a7229a4b63effe00 Mon Sep 17 00:00:00 2001 From: fede Date: Sat, 21 Dec 2024 19:16:47 -0300 Subject: [PATCH] =?UTF-8?q?a=C3=B1adido=20tema=20oscuro,=20y=20programada?= =?UTF-8?q?=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)} /> -