paginacion arreglada

This commit is contained in:
2025-01-03 21:41:50 -03:00
parent 0a9ac0a787
commit cb4f814320
7 changed files with 112 additions and 70 deletions

View File

@@ -391,7 +391,7 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
}
public IQueryable<PropiedadesAdmin>? ObtenerPropiedesPorHabitacionesPaginado(int cantidadHabitaciones, int pag) {
public IQueryable<PropiedadesAdmin> ObtenerPropiedesPorHabitacionesPaginado(int cantidadHabitaciones, int pag) {
FormattableString sqlq = $"""
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios, p.monto as Monto, ep.descripcion AS Estado
@@ -409,7 +409,7 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
return ret;
}
public IQueryable<PropiedadesAdmin>? ObtenerPropiedesPorTipoPaginado(int tipoPropiedad, int pag) {
public IQueryable<PropiedadesAdmin> ObtenerPropiedesPorTipoPaginado(int tipoPropiedad, int pag) {
FormattableString sqlq = $"""
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios, p.monto as Monto, ep.descripcion AS Estado
@@ -427,7 +427,7 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
return ret;
}
public IQueryable<PropiedadesAdmin>? ObtenerPropiedesPorHabitaciones_TipoPaginado(int cantidadHabitaciones, int tipoPropiedad, int pag) {
public IQueryable<PropiedadesAdmin> ObtenerPropiedesPorHabitaciones_TipoPaginado(int cantidadHabitaciones, int tipoPropiedad, int pag) {
FormattableString sqlq = $"""
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios, p.monto as Monto, ep.descripcion AS Estado
@@ -445,7 +445,7 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
return ret;
}
public IQueryable<PropiedadesAdmin>? ObtenerPropiedesPorServiciosPaginado(string servicios, int pag) {
public IQueryable<PropiedadesAdmin> ObtenerPropiedesPorServiciosPaginado(string servicios, int pag) {
string serviciosEscapados = string.Join(",", servicios.Split(',').Select(s => s.Trim()));
FormattableString sqlq = $"""
@@ -471,7 +471,7 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
return ret;
}
public IQueryable<PropiedadesAdmin>? ObtenerPropiedesPorHabitaciones_Servicios_Paginado(int cantidadHabitaciones, string servicios, int pag) {
public IQueryable<PropiedadesAdmin> ObtenerPropiedesPorHabitaciones_Servicios_Paginado(int cantidadHabitaciones, string servicios, int pag) {
string serviciosEscapados = string.Join(",", servicios.Split(',').Select(s => s.Trim()));
FormattableString sqlq = $"""
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
@@ -497,7 +497,7 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
return ret;
}
public IQueryable<PropiedadesAdmin>? ObtenerPropiedesPorTipo_Servicios_Paginado(int tipoPropiedad, string servicios, int pag) {
public IQueryable<PropiedadesAdmin> ObtenerPropiedesPorTipo_Servicios_Paginado(int tipoPropiedad, string servicios, int pag) {
string serviciosEscapados = string.Join(",", servicios.Split(',').Select(s => s.Trim()));
FormattableString sqlq = $"""
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
@@ -523,7 +523,7 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
return ret;
}
public IQueryable<PropiedadesAdmin>? ObtenerPropiedesPorHabitaciones_Tipo_Servicios_Paginado(int habitaciones, int tipo, string servicios, int pag) {
public IQueryable<PropiedadesAdmin> ObtenerPropiedesPorHabitaciones_Tipo_Servicios_Paginado(int habitaciones, int tipo, string servicios, int pag) {
string serviciosEscapados = string.Join(",", servicios.Split(',').Select(s => s.Trim()));
FormattableString sqlq = $"""
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
@@ -564,4 +564,33 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
return ret;
}
public int CuantasPaginasBusqueda(int habitaciones, string servicios, int tipoPropiedad) {
int registrosPorPagina = 10;
var query = Context.Propiedades
.Include(p => p.IdestadoNavigation)
.Include(p => p.IdtipropiedadNavigation)
.Include(p => p.IdServicios)
.AsQueryable();
if (habitaciones > 0) {
query = query.Where(p => p.Canthabitaciones == habitaciones);
}
if (tipoPropiedad > 0) {
query = query.Where(p => p.Idtipropiedad == tipoPropiedad);
}
if (!string.IsNullOrWhiteSpace(servicios)) {
var listaServicios = servicios.Split(',').Select(s => s.Trim()).ToList();
query = query.Where(p =>
p.IdServicios.Any(sp =>
listaServicios.Contains(sp.Descripcion)));
}
int totalRegistros = query.Distinct().Count();
return (int)Math.Ceiling((double)totalRegistros / registrosPorPagina);
}
}