Avansamos mucho con el administracion propiedades
This commit is contained in:
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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user