Avansamos mucho con el administracion propiedades
This commit is contained in:
@@ -3,6 +3,7 @@ using Modelo;
|
|||||||
using Entidades.Admin;
|
using Entidades.Admin;
|
||||||
using Entidades.Dto;
|
using Entidades.Dto;
|
||||||
using Entidades;
|
using Entidades;
|
||||||
|
using System.Linq.Expressions;
|
||||||
namespace AlquilaFacil.Controllers;
|
namespace AlquilaFacil.Controllers;
|
||||||
|
|
||||||
[ApiController]
|
[ApiController]
|
||||||
@@ -106,4 +107,48 @@ public class AdminController: ControllerBase
|
|||||||
var ret = RepositorioUsuarios.Singleton.BajaCliente(Dni);
|
var ret = RepositorioUsuarios.Singleton.BajaCliente(Dni);
|
||||||
return Ok(ret);
|
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 Entidades.Dto;
|
||||||
using Modelo;
|
using Modelo;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Entidades.Admin;
|
||||||
|
using AlquilaFacil.StrategyBusqueda;
|
||||||
|
|
||||||
namespace AlquilaFacil.Controllers;
|
namespace AlquilaFacil.Controllers;
|
||||||
|
|
||||||
@@ -13,26 +15,13 @@ public class BusquedaController: ControllerBase {
|
|||||||
if (validacion1 == false) return Unauthorized();
|
if (validacion1 == false) return Unauthorized();
|
||||||
|
|
||||||
IQueryable<PropiedadesDto>? props = null;
|
IQueryable<PropiedadesDto>? props = null;
|
||||||
if (servicios == ""){
|
|
||||||
//no hay parametros de busqueda
|
var clave = $"{(cantidadHabitaciones != 0 ? "1" : "0")}{(tipoPropiedad != 0 ? "1" : "0")}{(!string.IsNullOrEmpty(servicios) ? "1" : "0")}";
|
||||||
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);
|
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]
|
[ApiController]
|
||||||
public class PropiedadesController: ControllerBase {
|
public class PropiedadesController: ControllerBase {
|
||||||
[HttpGet("api/propiedades")]
|
[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();
|
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) validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 2);
|
||||||
if (validacion1 == false) return Unauthorized();
|
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);
|
return Ok(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("api/propiedad")]
|
[HttpGet("api/propiedad")]
|
||||||
public IActionResult ObtenerPropiedadPorId(int Id, [FromHeader(Name = "Auth")] string Auth) {
|
public IActionResult ObtenerPropiedadPorId(int Id, [FromHeader(Name = "Auth")] string Auth) {
|
||||||
if (String.IsNullOrEmpty(Auth)) return Unauthorized();
|
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 (validacion1 == false) return Unauthorized();
|
||||||
|
|
||||||
if (Id < 0) return BadRequest(new {message ="la id de propiedad no puede ser negativa"});
|
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);
|
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")]
|
[HttpGet("api/propiedades/Propietario")]
|
||||||
public IActionResult ObtenerPropiedadesPorPropietario (
|
public IActionResult ObtenerPropiedadesPorPropietario (
|
||||||
[FromHeader(Name = "Email")] string email,
|
[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);
|
||||||
|
}
|
||||||
|
|
||||||
12
Entidades/Admin/PropiedadesAdmin.cs
Normal file
12
Entidades/Admin/PropiedadesAdmin.cs
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
namespace Entidades.Admin;
|
||||||
|
public class PropiedadesAdmin {
|
||||||
|
public int id { get; set; }
|
||||||
|
public string Ubicacion { get; set; } = "";
|
||||||
|
public int canthabitaciones { get; set; }
|
||||||
|
public int piso { get; set; }
|
||||||
|
public string letra { get; set; } = "";
|
||||||
|
public string Tipo { get; set; } = "";
|
||||||
|
public string? Servicios {get;set;} = "";
|
||||||
|
public int Monto { get; set; }
|
||||||
|
public string Estado { get; set; } = "";
|
||||||
|
}
|
||||||
@@ -14,7 +14,8 @@
|
|||||||
import FrontPropietario from "./paginas/grupos/PropietarioG.svelte";
|
import FrontPropietario from "./paginas/grupos/PropietarioG.svelte";
|
||||||
import PublicarPropiedad from "./paginas/PublicarPropiedad.svelte";
|
import PublicarPropiedad from "./paginas/PublicarPropiedad.svelte";
|
||||||
import BusquedaPropiedades from "./paginas/BusquedaPropiedades.svelte";
|
import BusquedaPropiedades from "./paginas/BusquedaPropiedades.svelte";
|
||||||
import ControlUsuarios from "./paginas/ControlUsuarios.svelte";
|
import ControlUsuarios from "./paginas/AdminUsuarios.svelte";
|
||||||
|
import ControlPropiedades from "./paginas/AdminPropiedades.svelte";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Router>
|
<Router>
|
||||||
@@ -32,7 +33,8 @@
|
|||||||
<ProteRoute componente={MenuPage} />
|
<ProteRoute componente={MenuPage} />
|
||||||
</Route>
|
</Route>
|
||||||
|
|
||||||
<!--Publicar Propiedad-->
|
<!--Publicar Prop
|
||||||
|
iedad-->
|
||||||
<Route path="/accion/1">
|
<Route path="/accion/1">
|
||||||
<ProteRoute componente={PublicarPropiedad}/>
|
<ProteRoute componente={PublicarPropiedad}/>
|
||||||
</Route>
|
</Route>
|
||||||
@@ -67,6 +69,12 @@
|
|||||||
<ProteRoute componente={ControlUsuarios}/>
|
<ProteRoute componente={ControlUsuarios}/>
|
||||||
</Route>
|
</Route>
|
||||||
|
|
||||||
|
<!-- Pantalla Control Propiedades -->
|
||||||
|
<Route path="/accion/10">
|
||||||
|
<ProteRoute componente={ControlPropiedades}/>
|
||||||
|
</Route>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!--Paginas info Grupo-->
|
<!--Paginas info Grupo-->
|
||||||
<Route path="/grupo/Inquilino">
|
<Route path="/grupo/Inquilino">
|
||||||
|
|||||||
86
Front/src/Componentes/AdminPanelBusqueda.svelte
Normal file
86
Front/src/Componentes/AdminPanelBusqueda.svelte
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import "./css/dotted-line.css";
|
||||||
|
import {urlG} from "../stores/urlStore";
|
||||||
|
import type { AdminParametrosBusqueda, PropiedadAdmin } from "../types";
|
||||||
|
import { onMount } from "svelte";
|
||||||
|
|
||||||
|
let canthabitaciones:number = $state(0);
|
||||||
|
let servicios = ["Gas", "Internet", "Telefono", "Luz"];
|
||||||
|
let serviciosSel:string[] = $state([]);
|
||||||
|
let tipo: number = $state(0);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
let { Params }: { Params: (a: AdminParametrosBusqueda) => void} = $props();
|
||||||
|
|
||||||
|
let token = sessionStorage.getItem("token");
|
||||||
|
|
||||||
|
async function formsubmit(e: Event){
|
||||||
|
e.preventDefault();
|
||||||
|
let params: AdminParametrosBusqueda = {
|
||||||
|
cantidadhabitaciones: canthabitaciones||0,
|
||||||
|
pag: 1,
|
||||||
|
servicios: serviciosSel.join(","),
|
||||||
|
tipopropiedad: tipo,
|
||||||
|
};
|
||||||
|
Params(params);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<form class="card p-3 border border-succes">
|
||||||
|
|
||||||
|
<div>Busqueda Filtrada
|
||||||
|
<div class="dotted-line"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-floating mb-3">
|
||||||
|
<input
|
||||||
|
type="number"
|
||||||
|
id="canthabitaciones"
|
||||||
|
class="form-control"
|
||||||
|
bind:value={canthabitaciones}
|
||||||
|
min="0"
|
||||||
|
placeholder="Cantidad de Habitaciones"
|
||||||
|
required
|
||||||
|
/>
|
||||||
|
<label for="canthabitaciones">Cantidad de Habitaciones</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mb-3">
|
||||||
|
<h6 class="form-floating form-label">Servicios</h6>
|
||||||
|
{#each servicios as servicio}
|
||||||
|
<div class="form-check">
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
class="form-check-input"
|
||||||
|
bind:group={serviciosSel}
|
||||||
|
value={servicio}
|
||||||
|
id={`servicio-${servicio}`}
|
||||||
|
|
||||||
|
/>
|
||||||
|
<label class="form-check-label" for={`servicio-${servicio}`}>
|
||||||
|
{servicio}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-floating mb-3">
|
||||||
|
<select id="idtipo" class="form-select" bind:value={tipo} required>
|
||||||
|
<option value="0">No Define</option>
|
||||||
|
<option value="1">Casa</option>
|
||||||
|
<option value="2">Piso</option>
|
||||||
|
<option value="3">Departamento</option>
|
||||||
|
<option value="4">Galpon</option>
|
||||||
|
<option value="5">LocalComercial</option>
|
||||||
|
<option value="6">Oficina</option>
|
||||||
|
</select>
|
||||||
|
<label for="idtipopropiedad">Tipo de propiedad</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn-primary w-100 d-flex align-items-center justify-content-center" onclick={formsubmit}>
|
||||||
|
Buscar
|
||||||
|
<img src="/zoom.svg" alt="" class="ms-2" style="height: 1.2em;" />
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
59
Front/src/Componentes/AdminPropiedad.svelte
Normal file
59
Front/src/Componentes/AdminPropiedad.svelte
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import type { PropiedadAdmin } from "../types";
|
||||||
|
import {urlG} from "../stores/urlStore";
|
||||||
|
|
||||||
|
let { prop, modal }: { prop: PropiedadAdmin, modal: (a:string) => void } = $props();
|
||||||
|
|
||||||
|
const token = sessionStorage.getItem("token");
|
||||||
|
|
||||||
|
async function cambioEstado() {
|
||||||
|
try {
|
||||||
|
const response = await fetch($urlG+"/api/admin/propiedad?id="+prop.id, {
|
||||||
|
method: "DELETE",
|
||||||
|
headers: {
|
||||||
|
"Auth": String(token)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (response.ok) {
|
||||||
|
prop.estado = prop.estado=="Baja" ? "Disponible": "Baja";
|
||||||
|
}
|
||||||
|
|
||||||
|
let data = await response.json();
|
||||||
|
modal(String(data.message));
|
||||||
|
|
||||||
|
|
||||||
|
} catch {
|
||||||
|
modal("Fallo al intentar enviar la peticion para dar de baja");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div class="card text-center border shadow-sm">
|
||||||
|
<div class="card-header bg-primary text-white">
|
||||||
|
<h5 class="mb-0">{prop.tipo}</h5>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="card-img-top mb-3">
|
||||||
|
<i class="bi bi-building" style="font-size: 3rem;"></i>
|
||||||
|
</div>
|
||||||
|
<h6 class="card-title">{prop.ubicacion}</h6>
|
||||||
|
<p class="card-text">
|
||||||
|
<strong>Habitaciones:</strong> {prop.canthabitaciones}<br>
|
||||||
|
<strong>Piso:</strong> {prop.piso || "N/A"}<br>
|
||||||
|
<strong>Letra:</strong> {prop.letra || "N/A"}<br>
|
||||||
|
<strong>Servicios:</strong> {prop.servicios || "Sin servicios especificados"}<br>
|
||||||
|
<strong>Monto:</strong> ${prop.monto}<br>
|
||||||
|
<strong>Estado:</strong> {prop.estado}<br>
|
||||||
|
</p>
|
||||||
|
{#if prop.estado == "Disponible"}
|
||||||
|
<button class="btn btn-success" onclick={cambioEstado}>Baja</button>
|
||||||
|
{:else}
|
||||||
|
<button class="btn btn-danger" onclick={cambioEstado}>Alta</button>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
<div class="card-footer text-muted">
|
||||||
|
ID Propiedad: {prop.id}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
35
Front/src/Componentes/PaginacionStepper.svelte
Normal file
35
Front/src/Componentes/PaginacionStepper.svelte
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import { onMount } from "svelte";
|
||||||
|
import {urlG} from "../stores/urlStore";
|
||||||
|
|
||||||
|
let {currentPag,
|
||||||
|
cantpag,
|
||||||
|
queryPag
|
||||||
|
}:{
|
||||||
|
currentPag: number,
|
||||||
|
cantpag: number,
|
||||||
|
queryPag: (a:number) => void} = $props();
|
||||||
|
|
||||||
|
|
||||||
|
const token = sessionStorage.getItem("token");
|
||||||
|
|
||||||
|
onMount(async () => {
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
let array = $derived.by(()=> Array.from({ length: cantpag }, (_, i) => i + 1));
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{#if cantpag>1}
|
||||||
|
<nav aria-label="Page navigation example">
|
||||||
|
<ul class="pagination">
|
||||||
|
{#each array as num }
|
||||||
|
{#if currentPag !== num}
|
||||||
|
<li class="page-item"><a class="page-link" href="#" onclick={()=>queryPag(num)}>{String(num)}</a></li>
|
||||||
|
{:else}
|
||||||
|
<li class="page-item"><a class="page-link active" href="#" onclick={()=>queryPag(num)}>{String(num)}</a></li>
|
||||||
|
{/if}
|
||||||
|
{/each}
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
{/if}
|
||||||
@@ -8,10 +8,11 @@
|
|||||||
let serviciosSel = $state([]);
|
let serviciosSel = $state([]);
|
||||||
let tipo = $state(0);
|
let tipo = $state(0);
|
||||||
|
|
||||||
async function formsubmit (e){
|
async function formsubmit (e:Event){
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
const url = window.location.pathname;
|
const url = window.location.pathname;
|
||||||
|
|
||||||
const goto = url+"?cantidadHabitaciones="+canthabitaciones+"&tipoPropiedad="+tipo+"&servicios="+serviciosSel.join(",");
|
const goto = url+"?cantidadHabitaciones="+canthabitaciones+"&tipoPropiedad="+tipo+"&servicios="+serviciosSel.join(",");
|
||||||
window.location.replace(goto);
|
window.location.replace(goto);
|
||||||
}
|
}
|
||||||
@@ -20,7 +21,7 @@
|
|||||||
<form class="card p-3 border border-succes">
|
<form class="card p-3 border border-succes">
|
||||||
|
|
||||||
<div>Busqueda Filtrada
|
<div>Busqueda Filtrada
|
||||||
<div class="dotted-line">
|
<div class="dotted-line"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-floating mb-3">
|
<div class="form-floating mb-3">
|
||||||
|
|||||||
122
Front/src/paginas/AdminPropiedades.svelte
Normal file
122
Front/src/paginas/AdminPropiedades.svelte
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import { onMount } from "svelte";
|
||||||
|
import BarraHorizontalConTexto from "../Componentes/BarraHorizontalConTexto.svelte";
|
||||||
|
import NavBarAutocompletable from "../Componentes/NavBarAutocompletable.svelte";
|
||||||
|
import PanelBusqueda from "../Componentes/AdminPanelBusqueda.svelte";
|
||||||
|
import BotonVolverArriba from "../Componentes/BotonVolverArriba.svelte";
|
||||||
|
import ModalEstatico from "../Componentes/ModalEstatico.svelte";
|
||||||
|
import { fade } from "svelte/transition";
|
||||||
|
import type { AdminParametrosBusqueda, PropiedadAdmin, PropiedadDto } from "../types";
|
||||||
|
import {urlG} from "../stores/urlStore";
|
||||||
|
import AdminPropiedad from "../Componentes/AdminPropiedad.svelte";
|
||||||
|
import PaginacionStepper from "../Componentes/PaginacionStepper.svelte";
|
||||||
|
|
||||||
|
|
||||||
|
const token = sessionStorage.getItem("token");
|
||||||
|
|
||||||
|
let showButton: boolean = $state(false);
|
||||||
|
let modaldata: string = $state("");
|
||||||
|
let cantpag:number = $state(1);
|
||||||
|
let Propiedades:PropiedadAdmin[] = $state([]);
|
||||||
|
|
||||||
|
let p: AdminParametrosBusqueda = $state({
|
||||||
|
cantidadhabitaciones: 0,
|
||||||
|
pag: 1,
|
||||||
|
servicios: "",
|
||||||
|
tipopropiedad: 0,
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
cargaPropiedades();
|
||||||
|
window.addEventListener("scroll", handleScroll);
|
||||||
|
return () => window.removeEventListener("scroll", handleScroll);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
const handleScroll = () => {
|
||||||
|
showButton = window.scrollY > 100;
|
||||||
|
};
|
||||||
|
|
||||||
|
async function cargaPropiedades() {
|
||||||
|
try{
|
||||||
|
const response = await fetch($urlG+"/api/admin/busqueda/paginada?cantidadHabitaciones="+p.cantidadhabitaciones+"&tipoPropiedad="+p.tipopropiedad+"&servicios="+p.servicios+"&pag="+p.pag, {
|
||||||
|
method: "GET",
|
||||||
|
headers: {
|
||||||
|
"Auth": String(token)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (response.ok) {
|
||||||
|
let data = await response.json();
|
||||||
|
Propiedades = data;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
modaldata = "Fallo la request";
|
||||||
|
}catch {
|
||||||
|
modaldata = "Fallo al intentar obtener la lista de propiedades";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async function obtenerCant(){
|
||||||
|
|
||||||
|
try{
|
||||||
|
const response = await fetch($urlG+"/api/propiedad/cantPagina?estado="+0, {
|
||||||
|
method: "GET",
|
||||||
|
headers: {
|
||||||
|
"Auth": String(token)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (response.ok) {
|
||||||
|
let data = await response.json();
|
||||||
|
cantpag = data.message;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (response.status === 400) {
|
||||||
|
let data = await response.json();
|
||||||
|
modaldata=data.message;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
modaldata="Fallo al recibir la peticion de la cantidad de paginas de propiedades";
|
||||||
|
} catch {
|
||||||
|
modaldata="Fallo al intentar hacer la peticion de cuantas paginas hay";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function queryPag(a:number){
|
||||||
|
p.pag = a;
|
||||||
|
cargaPropiedades();
|
||||||
|
}
|
||||||
|
function querybusc(a) {
|
||||||
|
p = a;
|
||||||
|
cargaPropiedades();
|
||||||
|
}
|
||||||
|
$inspect(p);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<NavBarAutocompletable/>
|
||||||
|
|
||||||
|
{#if modaldata}
|
||||||
|
<ModalEstatico payload={modaldata} close={()=> !!(modaldata = "")}/>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
<div class="container mt-4">
|
||||||
|
<BarraHorizontalConTexto text="Administracion Propiedades"/>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col col-md-8 order-2">
|
||||||
|
{#each Propiedades as p }
|
||||||
|
<AdminPropiedad prop={p} modal={(a:string)=> modaldata = a} />
|
||||||
|
<br>
|
||||||
|
{/each}
|
||||||
|
<PaginacionStepper currentPag={p.pag} {queryPag}/>
|
||||||
|
</div>
|
||||||
|
<div class="col col-md-4 order-1">
|
||||||
|
<PanelBusqueda Params={querybusc} />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{#if showButton }
|
||||||
|
<div transition:fade={{duration:100}}>
|
||||||
|
<BotonVolverArriba/>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
let showAddmenu: boolean = $state(false);
|
let showAddmenu: boolean = $state(false);
|
||||||
|
|
||||||
let grupo:string = $state("");
|
let grupo:string = $state("");
|
||||||
let SelCliente: Cliente = $state();
|
let SelCliente: Cliente = $state(null);
|
||||||
|
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
try{
|
try{
|
||||||
@@ -7,6 +7,8 @@
|
|||||||
import { fade } from "svelte/transition";
|
import { fade } from "svelte/transition";
|
||||||
import {urlG} from "../stores/urlStore"
|
import {urlG} from "../stores/urlStore"
|
||||||
import type { PropiedadDto } from "../types";
|
import type { PropiedadDto } from "../types";
|
||||||
|
import BarraHorizontalConTexto from "../Componentes/BarraHorizontalConTexto.svelte";
|
||||||
|
import { text } from "@sveltejs/kit";
|
||||||
|
|
||||||
|
|
||||||
let showButton = $state(false);
|
let showButton = $state(false);
|
||||||
@@ -69,6 +71,7 @@
|
|||||||
<NavBarAutocompletable/>
|
<NavBarAutocompletable/>
|
||||||
|
|
||||||
<div class="container mt-4">
|
<div class="container mt-4">
|
||||||
|
<BarraHorizontalConTexto text="Busqueda Propiedades"/>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col col-md-8 order-2">
|
<div class="col col-md-8 order-2">
|
||||||
{#each propiedades as item}
|
{#each propiedades as item}
|
||||||
|
|||||||
19
Front/src/types.d.ts
vendored
19
Front/src/types.d.ts
vendored
@@ -8,6 +8,25 @@ export type PropiedadDto = {
|
|||||||
servicios: string,
|
servicios: string,
|
||||||
monto: number
|
monto: number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type AdminParametrosBusqueda = {
|
||||||
|
cantidadhabitaciones: number=0,
|
||||||
|
tipopropiedad: number=0,
|
||||||
|
servicios: string="",
|
||||||
|
pag: number=1
|
||||||
|
}
|
||||||
|
|
||||||
|
export type PropiedadAdmin = {
|
||||||
|
id: number,
|
||||||
|
ubicacion: string,
|
||||||
|
tipo: string,
|
||||||
|
piso: string | null,
|
||||||
|
letra: string | null,
|
||||||
|
canthabitaciones: number,
|
||||||
|
servicios: string,
|
||||||
|
monto: number,
|
||||||
|
estado: string
|
||||||
|
}
|
||||||
export type Permiso = {
|
export type Permiso = {
|
||||||
id: number;
|
id: number;
|
||||||
descripcion: string;
|
descripcion: string;
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using Entidades;
|
using Entidades;
|
||||||
|
using Entidades.Admin;
|
||||||
using Entidades.Dto;
|
using Entidades.Dto;
|
||||||
using Microsoft.Data.SqlClient;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.Identity.Client;
|
||||||
using Modelo;
|
using Modelo;
|
||||||
using MySql.Data.MySqlClient;
|
using MySql.Data.MySqlClient;
|
||||||
|
|
||||||
@@ -160,8 +161,20 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool BajaServiciosAPropiedad(int idprop, List<int> idserv)
|
public bool BajaPropiedad(int id) {
|
||||||
{
|
var con = Context;
|
||||||
|
Propiedade? prop = con.Propiedades.FirstOrDefault(x=>x.Id == id);
|
||||||
|
|
||||||
|
if (prop == null||prop.Dnipropietario == 0) return false;
|
||||||
|
|
||||||
|
if (prop.Idestado == 2) return false;
|
||||||
|
//las alquiladas no se pueden dar de baja claramente
|
||||||
|
prop.Idestado = prop.Idestado == 1 ? 3 : 1;
|
||||||
|
|
||||||
|
return Guardar(con);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool BajaServiciosAPropiedad(int idprop, List<int> idserv) {
|
||||||
var con = Context;
|
var con = Context;
|
||||||
Propiedade? prop = con.Propiedades.Include(x=>x.IdServicios).FirstOrDefault(x => x.Id == idprop);
|
Propiedade? prop = con.Propiedades.Include(x=>x.IdServicios).FirstOrDefault(x => x.Id == idprop);
|
||||||
if (prop == null) return false;
|
if (prop == null) return false;
|
||||||
@@ -183,7 +196,7 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
|
|||||||
string serviciosEscapados = string.Join(",", servicios.Split(',').Select(s => s.Trim()));
|
string serviciosEscapados = string.Join(",", servicios.Split(',').Select(s => s.Trim()));
|
||||||
FormattableString sqlq = $"""
|
FormattableString sqlq = $"""
|
||||||
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
|
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
|
||||||
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios
|
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios, p.monto as Monto
|
||||||
FROM Propiedades p
|
FROM Propiedades p
|
||||||
JOIN EstadoPropiedad ep ON p.idestado = 1
|
JOIN EstadoPropiedad ep ON p.idestado = 1
|
||||||
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
||||||
@@ -207,7 +220,7 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
|
|||||||
public IQueryable<PropiedadesDto> ObtenerPropiedesPorHabitaciones_Tipo(int cantidadHabitaciones, int tipoPropiedad) {
|
public IQueryable<PropiedadesDto> ObtenerPropiedesPorHabitaciones_Tipo(int cantidadHabitaciones, int tipoPropiedad) {
|
||||||
FormattableString sqlq = $"""
|
FormattableString sqlq = $"""
|
||||||
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
|
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
|
||||||
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios
|
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios, p.monto as Monto
|
||||||
FROM Propiedades p
|
FROM Propiedades p
|
||||||
JOIN EstadoPropiedad ep ON p.idestado = 1
|
JOIN EstadoPropiedad ep ON p.idestado = 1
|
||||||
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
||||||
@@ -221,12 +234,12 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IQueryable<PropiedadesDto>? ObtenerPropiedesPorServicios(string servicios) {
|
public IQueryable<PropiedadesDto> ObtenerPropiedesPorServicios(string servicios) {
|
||||||
string serviciosEscapados = string.Join(",", servicios.Split(',').Select(s => s.Trim()));
|
string serviciosEscapados = string.Join(",", servicios.Split(',').Select(s => s.Trim()));
|
||||||
|
|
||||||
FormattableString sqlq = $"""
|
FormattableString sqlq = $"""
|
||||||
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
|
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
|
||||||
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios
|
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios, p.monto as Monto
|
||||||
FROM Propiedades p
|
FROM Propiedades p
|
||||||
JOIN EstadoPropiedad ep ON p.idestado = 1
|
JOIN EstadoPropiedad ep ON p.idestado = 1
|
||||||
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
||||||
@@ -246,10 +259,10 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IQueryable<PropiedadesDto>? ObtenerPropiedesPorHabitaciones(int cantidadHabitaciones) {
|
public IQueryable<PropiedadesDto> ObtenerPropiedesPorHabitaciones(int cantidadHabitaciones) {
|
||||||
FormattableString sqlq = $"""
|
FormattableString sqlq = $"""
|
||||||
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
|
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
|
||||||
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios
|
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios, p.monto as Monto
|
||||||
FROM Propiedades p
|
FROM Propiedades p
|
||||||
JOIN EstadoPropiedad ep ON p.idestado = 1
|
JOIN EstadoPropiedad ep ON p.idestado = 1
|
||||||
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
||||||
@@ -263,10 +276,10 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IQueryable<PropiedadesDto>? ObtenerPropiedesPorTipo(int tipoPropiedad) {
|
public IQueryable<PropiedadesDto> ObtenerPropiedesPorTipo(int tipoPropiedad) {
|
||||||
FormattableString sqlq = $"""
|
FormattableString sqlq = $"""
|
||||||
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
|
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
|
||||||
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios
|
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios, p.monto as Monto
|
||||||
FROM Propiedades p
|
FROM Propiedades p
|
||||||
JOIN EstadoPropiedad ep ON p.idestado = 1
|
JOIN EstadoPropiedad ep ON p.idestado = 1
|
||||||
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
||||||
@@ -280,11 +293,11 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IQueryable<PropiedadesDto>? ObtenerPropiedesPorHabitaciones_Servicios(int cantidadHabitaciones, string servicios) {
|
public IQueryable<PropiedadesDto> ObtenerPropiedesPorHabitaciones_Servicios(int cantidadHabitaciones, string servicios) {
|
||||||
string serviciosEscapados = string.Join(",", servicios.Split(',').Select(s => s.Trim()));
|
string serviciosEscapados = string.Join(",", servicios.Split(',').Select(s => s.Trim()));
|
||||||
FormattableString sqlq = $"""
|
FormattableString sqlq = $"""
|
||||||
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
|
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
|
||||||
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios
|
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios, p.monto as Monto
|
||||||
FROM Propiedades p
|
FROM Propiedades p
|
||||||
JOIN EstadoPropiedad ep ON p.idestado = 1
|
JOIN EstadoPropiedad ep ON p.idestado = 1
|
||||||
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
||||||
@@ -302,13 +315,14 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
|
|||||||
""";
|
""";
|
||||||
|
|
||||||
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
|
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
|
||||||
return ret; }
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
public IQueryable<PropiedadesDto>? ObtenerPropiedesPorTipo_Servicios(int tipoPropiedad, string servicios) {
|
public IQueryable<PropiedadesDto> ObtenerPropiedesPorTipo_Servicios(int tipoPropiedad, string servicios) {
|
||||||
string serviciosEscapados = string.Join(",", servicios.Split(',').Select(s => s.Trim()));
|
string serviciosEscapados = string.Join(",", servicios.Split(',').Select(s => s.Trim()));
|
||||||
FormattableString sqlq = $"""
|
FormattableString sqlq = $"""
|
||||||
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
|
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
|
||||||
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios
|
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios, p.monto as Monto
|
||||||
FROM Propiedades p
|
FROM Propiedades p
|
||||||
JOIN EstadoPropiedad ep ON p.idestado = 1
|
JOIN EstadoPropiedad ep ON p.idestado = 1
|
||||||
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
||||||
@@ -341,4 +355,213 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
|
|||||||
}
|
}
|
||||||
return Guardar(con);
|
return Guardar(con);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IQueryable<PropiedadesDto> ListarPropiedadesPorPagina(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
|
||||||
|
FROM Propiedades p
|
||||||
|
JOIN EstadoPropiedad ep ON p.idestado = 1
|
||||||
|
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
||||||
|
JOIN Servicio_Propiedad sp on p.id =sp.idPropiedad
|
||||||
|
JOIN Servicios s on sp.idServicio =s.id
|
||||||
|
GROUP BY p.id
|
||||||
|
LIMIT 10 OFFSET {pag*10}
|
||||||
|
""";
|
||||||
|
|
||||||
|
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
///////////////ADMIN
|
||||||
|
public IQueryable<PropiedadesAdmin> ListarPropiedadesPorPaginaAdmin(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
|
||||||
|
FROM Propiedades p
|
||||||
|
JOIN EstadoPropiedad ep ON p.idestado = ep.id
|
||||||
|
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
||||||
|
JOIN Servicio_Propiedad sp on p.id =sp.idPropiedad
|
||||||
|
JOIN Servicios s on sp.idServicio =s.id
|
||||||
|
GROUP BY p.id
|
||||||
|
LIMIT 10 OFFSET {pag*10}
|
||||||
|
""";
|
||||||
|
|
||||||
|
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
FROM Propiedades p
|
||||||
|
JOIN EstadoPropiedad ep ON p.idestado = ep.id
|
||||||
|
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
||||||
|
JOIN Servicio_Propiedad sp on p.id =sp.idPropiedad
|
||||||
|
JOIN Servicios s on sp.idServicio =s.id
|
||||||
|
WHERE p.canthabitaciones = {cantidadHabitaciones}
|
||||||
|
GROUP BY p.id
|
||||||
|
LIMIT 10 OFFSET {pag*10}
|
||||||
|
""";
|
||||||
|
|
||||||
|
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
FROM Propiedades p
|
||||||
|
JOIN EstadoPropiedad ep ON p.idestado = ep.id
|
||||||
|
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
||||||
|
JOIN Servicio_Propiedad sp on p.id =sp.idPropiedad
|
||||||
|
JOIN Servicios s on sp.idServicio =s.id
|
||||||
|
WHERE p.idtipropiedad = {tipoPropiedad}
|
||||||
|
GROUP BY p.id
|
||||||
|
LIMIT 10 OFFSET {pag*10}
|
||||||
|
""";
|
||||||
|
|
||||||
|
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
FROM Propiedades p
|
||||||
|
JOIN EstadoPropiedad ep ON p.idestado = ep.id
|
||||||
|
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
||||||
|
JOIN Servicio_Propiedad sp on p.id =sp.idPropiedad
|
||||||
|
JOIN Servicios s on sp.idServicio =s.id
|
||||||
|
WHERE p.canthabitaciones = {cantidadHabitaciones} AND p.idtipropiedad = {tipoPropiedad}
|
||||||
|
GROUP BY p.id
|
||||||
|
LIMIT 10 OFFSET {pag*10}
|
||||||
|
""";
|
||||||
|
|
||||||
|
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IQueryable<PropiedadesAdmin>? ObtenerPropiedesPorServiciosPaginado(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,
|
||||||
|
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios, p.monto as Monto, ep.descripcion AS Estado
|
||||||
|
FROM Propiedades p
|
||||||
|
JOIN EstadoPropiedad ep ON p.idestado = ep.id
|
||||||
|
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
||||||
|
JOIN Servicio_Propiedad sp on p.id =sp.idPropiedad
|
||||||
|
JOIN Servicios s on sp.idServicio =s.id
|
||||||
|
WHERE EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM Servicio_Propiedad sp2
|
||||||
|
JOIN Servicios s2 ON sp2.idServicio = s2.id
|
||||||
|
WHERE sp2.idPropiedad = p.id
|
||||||
|
AND FIND_IN_SET(s2.descripcion, {serviciosEscapados})
|
||||||
|
)
|
||||||
|
GROUP BY p.id
|
||||||
|
LIMIT 10 OFFSET {pag*10}
|
||||||
|
""";
|
||||||
|
|
||||||
|
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
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,
|
||||||
|
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios, p.monto as Monto, ep.descripcion AS Estado
|
||||||
|
FROM Propiedades p
|
||||||
|
JOIN EstadoPropiedad ep ON p.idestado = ep.id
|
||||||
|
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
||||||
|
JOIN Servicio_Propiedad sp on p.id =sp.idPropiedad
|
||||||
|
JOIN Servicios s on sp.idServicio =s.id
|
||||||
|
WHERE p.canthabitaciones = {cantidadHabitaciones}
|
||||||
|
AND EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM Servicio_Propiedad sp2
|
||||||
|
JOIN Servicios s2 ON sp2.idServicio = s2.id
|
||||||
|
WHERE sp2.idPropiedad = p.id
|
||||||
|
AND FIND_IN_SET(s2.descripcion, {serviciosEscapados})
|
||||||
|
)
|
||||||
|
GROUP BY p.id
|
||||||
|
LIMIT 10 OFFSET {pag*10}
|
||||||
|
""";
|
||||||
|
|
||||||
|
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
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,
|
||||||
|
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios, p.monto as Monto, ep.descripcion AS Estado
|
||||||
|
FROM Propiedades p
|
||||||
|
JOIN EstadoPropiedad ep ON p.idestado = ep.id
|
||||||
|
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
||||||
|
JOIN Servicio_Propiedad sp on p.id =sp.idPropiedad
|
||||||
|
JOIN Servicios s on sp.idServicio =s.id
|
||||||
|
WHERE p.idtipropiedad = {tipoPropiedad}
|
||||||
|
AND EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM Servicio_Propiedad sp2
|
||||||
|
JOIN Servicios s2 ON sp2.idServicio = s2.id
|
||||||
|
WHERE sp2.idPropiedad = p.id
|
||||||
|
AND FIND_IN_SET(s2.descripcion, {serviciosEscapados})
|
||||||
|
)
|
||||||
|
GROUP BY p.id
|
||||||
|
LIMIT 10 OFFSET {pag*10}
|
||||||
|
""";
|
||||||
|
|
||||||
|
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
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,
|
||||||
|
GROUP_CONCAT(DISTINCT s.descripcion SEPARATOR ', ') AS Servicios, p.monto as Monto, ep.descripcion AS Estado
|
||||||
|
FROM Propiedades p
|
||||||
|
JOIN EstadoPropiedad ep ON p.idestado = ep.id
|
||||||
|
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
||||||
|
JOIN Servicio_Propiedad sp on p.id =sp.idPropiedad
|
||||||
|
JOIN Servicios s on sp.idServicio =s.id
|
||||||
|
WHERE p.canthabitaciones = {habitaciones} AND p.idtipropiedad = {tipo}
|
||||||
|
AND EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM Servicio_Propiedad sp2
|
||||||
|
JOIN Servicios s2 ON sp2.idServicio = s2.id
|
||||||
|
WHERE sp2.idPropiedad = p.id
|
||||||
|
AND FIND_IN_SET(s2.descripcion, {serviciosEscapados})
|
||||||
|
)
|
||||||
|
GROUP BY p.id
|
||||||
|
LIMIT 10 OFFSET {pag*10}
|
||||||
|
""";
|
||||||
|
|
||||||
|
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int CuantasPaginas(int estado = 0) {
|
||||||
|
var con = Context;
|
||||||
|
double inter;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (estado == 0){
|
||||||
|
inter = con.Propiedades.Count()/10.0;
|
||||||
|
} else {
|
||||||
|
inter = con.Propiedades.Where(x=>x.Idestado == estado).Count();
|
||||||
|
}
|
||||||
|
if (inter == 0.00) return 0;
|
||||||
|
ret = (int)Math.Ceiling(inter);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user