Avansamos mucho con el administracion propiedades
This commit is contained in:
@@ -3,6 +3,7 @@ using Modelo;
|
||||
using Entidades.Admin;
|
||||
using Entidades.Dto;
|
||||
using Entidades;
|
||||
using System.Linq.Expressions;
|
||||
namespace AlquilaFacil.Controllers;
|
||||
|
||||
[ApiController]
|
||||
@@ -106,4 +107,48 @@ public class AdminController: ControllerBase
|
||||
var ret = RepositorioUsuarios.Singleton.BajaCliente(Dni);
|
||||
return Ok(ret);
|
||||
}
|
||||
|
||||
[HttpDelete("api/admin/propiedad")]
|
||||
public IActionResult BajaPropiedad([FromHeader(Name = "Auth")] string Auth, int id = 0) {
|
||||
if (String.IsNullOrEmpty(Auth)) return Unauthorized();
|
||||
var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 10);
|
||||
if (validacion1 == false) return Unauthorized();
|
||||
|
||||
if (id <= 0) return BadRequest(new { message = "Falto indicar id Propiedad"});
|
||||
|
||||
var ret = RepositorioPropiedades.Singleton.BajaPropiedad(id);
|
||||
return ret ?
|
||||
Ok(new {message = "Se cambio el estado de la propiedad"}): BadRequest(new { message = "No se pudo dar de baja"});
|
||||
}
|
||||
|
||||
[HttpGet("api/admin/busqueda/paginada")]
|
||||
public IActionResult FiltroPropiedadesPaginado([FromHeader(Name = "Auth")]string Auth, int cantidadHabitaciones = 0, int tipoPropiedad = 0, [FromQuery]string servicios = "", int pag = 1) {
|
||||
if (String.IsNullOrEmpty(Auth)) return Unauthorized();
|
||||
var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 10);
|
||||
if (validacion1 == false) return Unauthorized();
|
||||
|
||||
IQueryable<PropiedadesAdmin>? props = null;
|
||||
pag -= 1;
|
||||
if (servicios == ""){
|
||||
//no hay parametros de busqueda
|
||||
if (cantidadHabitaciones == 0 && tipoPropiedad == 0 ) props = RepositorioPropiedades.Singleton.ListarPropiedadesPorPaginaAdmin(pag);
|
||||
//Solo Habitaciones
|
||||
if (cantidadHabitaciones != 0 && tipoPropiedad == 0) props = RepositorioPropiedades.Singleton.ObtenerPropiedesPorHabitacionesPaginado(cantidadHabitaciones, pag);
|
||||
//Solo TipoPropiedad
|
||||
if (cantidadHabitaciones == 0 && tipoPropiedad != 0) props = RepositorioPropiedades.Singleton.ObtenerPropiedesPorTipoPaginado(tipoPropiedad, pag);
|
||||
//Habitaciones y TipoPropiedad
|
||||
if (cantidadHabitaciones != 0 && tipoPropiedad != 0) props = RepositorioPropiedades.Singleton.ObtenerPropiedesPorHabitaciones_TipoPaginado(cantidadHabitaciones, tipoPropiedad, pag);
|
||||
} else {
|
||||
//Solo se filtra por servicios
|
||||
if (cantidadHabitaciones == 0 && tipoPropiedad == 0 ) props = RepositorioPropiedades.Singleton.ObtenerPropiedesPorServiciosPaginado(servicios, pag);
|
||||
//Servicios y habitaciones
|
||||
if (cantidadHabitaciones != 0 && tipoPropiedad == 0) props = RepositorioPropiedades.Singleton.ObtenerPropiedesPorHabitaciones_Servicios_Paginado(cantidadHabitaciones, servicios, pag);
|
||||
//Tipo y Servicios
|
||||
if (cantidadHabitaciones == 0 && tipoPropiedad != 0) props = RepositorioPropiedades.Singleton.ObtenerPropiedesPorTipo_Servicios_Paginado(tipoPropiedad, servicios, pag);
|
||||
// Todos los parametros
|
||||
if (cantidadHabitaciones != 0 && tipoPropiedad != 0) props = RepositorioPropiedades.Singleton.ObtenerPropiedesPorHabitaciones_Tipo_Servicios_Paginado(cantidadHabitaciones, tipoPropiedad, servicios, pag);
|
||||
}
|
||||
|
||||
return Ok(props);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
using Entidades.Dto;
|
||||
using Modelo;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Entidades.Admin;
|
||||
using AlquilaFacil.StrategyBusqueda;
|
||||
|
||||
namespace AlquilaFacil.Controllers;
|
||||
|
||||
@@ -13,26 +15,13 @@ public class BusquedaController: ControllerBase {
|
||||
if (validacion1 == false) return Unauthorized();
|
||||
|
||||
IQueryable<PropiedadesDto>? 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);
|
||||
}
|
||||
|
||||
var clave = $"{(cantidadHabitaciones != 0 ? "1" : "0")}{(tipoPropiedad != 0 ? "1" : "0")}{(!string.IsNullOrEmpty(servicios) ? "1" : "0")}";
|
||||
|
||||
return Ok(props);
|
||||
var context = BusquedaContext.Singleton;
|
||||
var estrategia = context.ObtenerEstrategia(clave);
|
||||
props = estrategia.Filtrar(servicios, cantidadHabitaciones, tipoPropiedad);
|
||||
|
||||
return Ok(props);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,20 +8,27 @@ namespace AlquilaFacil.Controllers;
|
||||
[ApiController]
|
||||
public class PropiedadesController: ControllerBase {
|
||||
[HttpGet("api/propiedades")]
|
||||
public IActionResult ListarPropiedades([FromHeader(Name = "Auth")] string Auth) {
|
||||
public IActionResult ListarPropiedades([FromHeader(Name = "Auth")] string Auth, int pag = 0) {
|
||||
if (String.IsNullOrEmpty(Auth)) return Unauthorized();
|
||||
var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 12);
|
||||
var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 10);
|
||||
if (validacion1 == false) validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 2);
|
||||
if (validacion1 == false) return Unauthorized();
|
||||
|
||||
var ret = RepositorioPropiedades.Singleton.ListarPropiedades();
|
||||
IQueryable<PropiedadesDto> ret;
|
||||
|
||||
if (pag == 0){
|
||||
ret = RepositorioPropiedades.Singleton.ListarPropiedades();
|
||||
} else{
|
||||
ret = RepositorioPropiedades.Singleton.ListarPropiedadesPorPagina(pag);
|
||||
}
|
||||
|
||||
return Ok(ret);
|
||||
}
|
||||
|
||||
[HttpGet("api/propiedad")]
|
||||
public IActionResult ObtenerPropiedadPorId(int Id, [FromHeader(Name = "Auth")] string Auth) {
|
||||
if (String.IsNullOrEmpty(Auth)) return Unauthorized();
|
||||
var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 12);
|
||||
var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 10);
|
||||
if (validacion1 == false) return Unauthorized();
|
||||
|
||||
if (Id < 0) return BadRequest(new {message ="la id de propiedad no puede ser negativa"});
|
||||
@@ -31,6 +38,25 @@ public class PropiedadesController: ControllerBase {
|
||||
return Ok(ret);
|
||||
}
|
||||
|
||||
[HttpGet("api/propiedad/cantPagina")]
|
||||
public IActionResult ObtenerCantidadDePaginas([FromHeader(Name = "Auth")] string Auth, int estado = 0) {
|
||||
if (String.IsNullOrEmpty(Auth)) return Unauthorized();
|
||||
var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 10);
|
||||
if (validacion1 == false) return Unauthorized();
|
||||
|
||||
if (estado < 0) return BadRequest(new {message = "No puede tener un numero menor a 0"});
|
||||
int cant;
|
||||
|
||||
if(estado == 0){
|
||||
cant = RepositorioPropiedades.Singleton.CuantasPaginas();
|
||||
}else{
|
||||
cant = RepositorioPropiedades.Singleton.CuantasPaginas(estado);
|
||||
}
|
||||
|
||||
return Ok(new {message = cant});
|
||||
|
||||
}
|
||||
|
||||
[HttpGet("api/propiedades/Propietario")]
|
||||
public IActionResult ObtenerPropiedadesPorPropietario (
|
||||
[FromHeader(Name = "Email")] string email,
|
||||
|
||||
29
Aspnet/Strategy/Busqueda/BusquedaContext.cs
Normal file
29
Aspnet/Strategy/Busqueda/BusquedaContext.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
namespace AlquilaFacil.StrategyBusqueda;
|
||||
|
||||
public class BusquedaContext
|
||||
{
|
||||
private static readonly BusquedaContext singleton = new();
|
||||
public static BusquedaContext Singleton {get { return singleton; } }
|
||||
|
||||
private readonly Dictionary<string, IBusquedaStrategy> _estrategias;
|
||||
|
||||
public BusquedaContext()
|
||||
{
|
||||
_estrategias = new Dictionary<string, IBusquedaStrategy>
|
||||
{
|
||||
{ "000", new BusquedaSinParametros() },
|
||||
{ "100", new BusquedaPorHabitaciones() },
|
||||
{ "010", new BusquedaPorTipo() },
|
||||
{ "001", new BusquedaPorServicios() },
|
||||
{ "110", new BusquedaPorHabitacionesTipo() },
|
||||
{ "101", new BusquedaPorHabitacionesServicios() },
|
||||
{ "011", new BusquedaTipoServicios() },
|
||||
{ "111", new BusquedaFull() }
|
||||
};
|
||||
}
|
||||
|
||||
public IBusquedaStrategy ObtenerEstrategia(string clave)
|
||||
{
|
||||
return _estrategias.ContainsKey(clave) ? _estrategias[clave] : new BusquedaSinParametros();
|
||||
}
|
||||
}
|
||||
52
Aspnet/Strategy/Busqueda/Filtros.cs
Normal file
52
Aspnet/Strategy/Busqueda/Filtros.cs
Normal file
@@ -0,0 +1,52 @@
|
||||
using Entidades.Dto;
|
||||
using Modelo;
|
||||
|
||||
namespace AlquilaFacil.StrategyBusqueda;
|
||||
|
||||
public class BusquedaSinParametros : IBusquedaStrategy {
|
||||
public IQueryable<PropiedadesDto> Filtrar(string servicios, int cantidadHabitaciones, int tipoPropiedad) {
|
||||
return RepositorioPropiedades.Singleton.ListarPropiedades();
|
||||
}
|
||||
}
|
||||
|
||||
public class BusquedaPorHabitaciones : IBusquedaStrategy {
|
||||
public IQueryable<PropiedadesDto> Filtrar(string servicios, int cantidadHabitaciones, int tipoPropiedad) {
|
||||
return RepositorioPropiedades.Singleton.ObtenerPropiedesPorHabitaciones(cantidadHabitaciones);
|
||||
}
|
||||
}
|
||||
|
||||
public class BusquedaPorTipo : IBusquedaStrategy {
|
||||
public IQueryable<PropiedadesDto> Filtrar(string servicios, int cantidadHabitaciones, int tipoPropiedad) {
|
||||
return RepositorioPropiedades.Singleton.ObtenerPropiedesPorTipo(tipoPropiedad);
|
||||
}
|
||||
}
|
||||
|
||||
public class BusquedaPorServicios : IBusquedaStrategy {
|
||||
public IQueryable<PropiedadesDto> Filtrar(string servicios, int cantidadHabitaciones, int tipoPropiedad) {
|
||||
return RepositorioPropiedades.Singleton.ObtenerPropiedesPorServicios(servicios);
|
||||
}
|
||||
}
|
||||
|
||||
public class BusquedaPorHabitacionesTipo : IBusquedaStrategy {
|
||||
public IQueryable<PropiedadesDto> Filtrar(string servicios, int cantidadHabitaciones, int tipoPropiedad) {
|
||||
return RepositorioPropiedades.Singleton.ObtenerPropiedesPorHabitaciones_Tipo(cantidadHabitaciones, tipoPropiedad);
|
||||
}
|
||||
}
|
||||
|
||||
public class BusquedaPorHabitacionesServicios : IBusquedaStrategy {
|
||||
public IQueryable<PropiedadesDto> Filtrar(string servicios, int cantidadHabitaciones, int tipoPropiedad) {
|
||||
return RepositorioPropiedades.Singleton.ObtenerPropiedesPorHabitaciones_Servicios(cantidadHabitaciones, servicios);
|
||||
}
|
||||
}
|
||||
|
||||
public class BusquedaTipoServicios : IBusquedaStrategy {
|
||||
public IQueryable<PropiedadesDto> Filtrar(string servicios, int cantidadHabitaciones, int tipoPropiedad) {
|
||||
return RepositorioPropiedades.Singleton.ObtenerPropiedesPorTipo_Servicios(tipoPropiedad, servicios);
|
||||
}
|
||||
}
|
||||
|
||||
public class BusquedaFull : IBusquedaStrategy {
|
||||
public IQueryable<PropiedadesDto> Filtrar(string servicios, int cantidadHabitaciones, int tipoPropiedad) {
|
||||
return RepositorioPropiedades.Singleton.ObtenerPropiedesPorHabitaciones_Tipo_Servicios(cantidadHabitaciones, tipoPropiedad, servicios);
|
||||
}
|
||||
}
|
||||
6
Aspnet/Strategy/Busqueda/IBusquedaStrategy.cs
Normal file
6
Aspnet/Strategy/Busqueda/IBusquedaStrategy.cs
Normal file
@@ -0,0 +1,6 @@
|
||||
namespace AlquilaFacil.StrategyBusqueda;
|
||||
using Entidades.Dto;
|
||||
public interface IBusquedaStrategy {
|
||||
IQueryable<PropiedadesDto> Filtrar(string servicios, int cantidadHabitaciones, int tipoPropiedad);
|
||||
}
|
||||
|
||||
52
Aspnet/Strategy/BusquedaAdmin/Filtros.cs
Normal file
52
Aspnet/Strategy/BusquedaAdmin/Filtros.cs
Normal file
@@ -0,0 +1,52 @@
|
||||
using Entidades.Admin;
|
||||
using Modelo;
|
||||
|
||||
namespace AlquilaFacil.StrategyBusquedaAdmin;
|
||||
|
||||
public class BusquedaSinParametros : IAdminBusquedaStrategy {
|
||||
public IQueryable<PropiedadesAdmin> Filtrar(string servicios, int cantidadHabitaciones, int tipoPropiedad, int pag) {
|
||||
return RepositorioPropiedades.Singleton.ListarPropiedades();
|
||||
}
|
||||
}
|
||||
|
||||
public class BusquedaPorHabitaciones : IAdminBusquedaStrategy {
|
||||
public IQueryable<PropiedadesAdmin> Filtrar(string servicios, int cantidadHabitaciones, int tipoPropiedad, int pag) {
|
||||
return RepositorioPropiedades.Singleton.ObtenerPropiedesPorHabitaciones(cantidadHabitaciones);
|
||||
}
|
||||
}
|
||||
|
||||
public class BusquedaPorTipo : IAdminBusquedaStrategy {
|
||||
public IQueryable<PropiedadesAdmin> Filtrar(string servicios, int cantidadHabitaciones, int tipoPropiedad, int pag) {
|
||||
return RepositorioPropiedades.Singleton.ObtenerPropiedesPorTipo(tipoPropiedad);
|
||||
}
|
||||
}
|
||||
|
||||
public class BusquedaPorServicios : IAdminBusquedaStrategy {
|
||||
public IQueryable<PropiedadesAdmin> Filtrar(string servicios, int cantidadHabitaciones, int tipoPropiedad, int pag) {
|
||||
return RepositorioPropiedades.Singleton.ObtenerPropiedesPorServicios(servicios);
|
||||
}
|
||||
}
|
||||
|
||||
public class BusquedaPorHabitacionesTipo : IAdminBusquedaStrategy {
|
||||
public IQueryable<PropiedadesAdmin> Filtrar(string servicios, int cantidadHabitaciones, int tipoPropiedad, int pag) {
|
||||
return RepositorioPropiedades.Singleton.ObtenerPropiedesPorHabitaciones_Tipo(cantidadHabitaciones, tipoPropiedad);
|
||||
}
|
||||
}
|
||||
|
||||
public class BusquedaPorHabitacionesServicios : IAdminBusquedaStrategy {
|
||||
public IQueryable<PropiedadesAdmin> Filtrar(string servicios, int cantidadHabitaciones, int tipoPropiedad, int pag) {
|
||||
return RepositorioPropiedades.Singleton.ObtenerPropiedesPorHabitaciones_Servicios(cantidadHabitaciones, servicios);
|
||||
}
|
||||
}
|
||||
|
||||
public class BusquedaTipoServicios : IAdminBusquedaStrategy {
|
||||
public IQueryable<PropiedadesAdmin> Filtrar(string servicios, int cantidadHabitaciones, int tipoPropiedad, int pag) {
|
||||
return RepositorioPropiedades.Singleton.ObtenerPropiedesPorTipo_Servicios(tipoPropiedad, servicios);
|
||||
}
|
||||
}
|
||||
|
||||
public class BusquedaFull : IAdminBusquedaStrategy {
|
||||
public IQueryable<PropiedadesAdmin> Filtrar(string servicios, int cantidadHabitaciones, int tipoPropiedad, int pag) {
|
||||
return RepositorioPropiedades.Singleton.ObtenerPropiedesPorHabitaciones_Tipo_Servicios(cantidadHabitaciones, tipoPropiedad, servicios);
|
||||
}
|
||||
}
|
||||
6
Aspnet/Strategy/BusquedaAdmin/IAdminBusquedaStrategy.cs
Normal file
6
Aspnet/Strategy/BusquedaAdmin/IAdminBusquedaStrategy.cs
Normal file
@@ -0,0 +1,6 @@
|
||||
namespace AlquilaFacil.StrategyBusquedaAdmin;
|
||||
using Entidades.Admin;
|
||||
public interface IAdminBusquedaStrategy {
|
||||
IQueryable<PropiedadesAdmin> Filtrar(string servicios, int cantidadHabitaciones, int tipoPropiedad, int pag);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user