Format code with proper spacing and brackets

This commit is contained in:
2025-05-05 22:45:45 -03:00
parent fddafd5234
commit f7d52041ba

View File

@@ -8,43 +8,48 @@ using Microsoft.Identity.Client;
using Modelo;
using MySql.Data.MySqlClient;
public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
public class RepositorioPropiedades : RepositorioBase<RepositorioPropiedades>
{
public IQueryable<PropiedadesDto> ListarPropiedades(){
public IQueryable<PropiedadesDto> ListarPropiedades()
{
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,
p.iddivisa as Iddivisa
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
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
""";
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
return ret;
}
public Propiedade? ObtenerPropiedadPorId(int Id) {
public Propiedade? ObtenerPropiedadPorId(int Id)
{
var con = Context;
Propiedade? prop = con.Propiedades.Include(x=>x.DnipropietarioNavigation).FirstOrDefault(x=>x.Id == Id);
if (prop == null || prop.Id == 0) {
Propiedade? prop = con.Propiedades.Include(x => x.DnipropietarioNavigation).FirstOrDefault(x => x.Id == Id);
if (prop == null || prop.Id == 0)
{
return null;
}
return prop;
}
public bool AñadirPropiedad(Propiedade? prop) {
public bool AñadirPropiedad(Propiedade? prop)
{
if (prop == null) return false;
var con = Context;
if (string.IsNullOrEmpty(prop.Letra)) prop.Letra = "_";
var filasInsertadasParam = new MySqlParameter("@p_filas_insertadas", SqlDbType.Int)
{
Direction = ParameterDirection.Output
@@ -62,18 +67,19 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
new MySqlParameter("@p_letra", prop.Letra),
new MySqlParameter("@p_dni_propietario", prop.Dnipropietario),
new MySqlParameter("@p_id_tipo_propiedad", prop.Idtipropiedad),
new MySqlParameter("@p_monto",prop.Monto),
new MySqlParameter("@p_monto", prop.Monto),
new MySqlParameter("@iddivisa", prop.Iddivisa),
filasInsertadasParam
);
return (int)filasInsertadasParam.Value == 1? true: false;
return (int)filasInsertadasParam.Value == 1 ? true : false;
}
public bool PatchPropiedad(Propiedade prop, long dni) {
public bool PatchPropiedad(Propiedade prop, long dni)
{
var con = Context;
Propiedade? propi = con.Propiedades.Include(x=>x.IdServicios).FirstOrDefault(x=>x.Id == prop.Id);
Propiedade? propi = con.Propiedades.Include(x => x.IdServicios).FirstOrDefault(x => x.Id == prop.Id);
if (propi == null) return false;
propi.Canthabitaciones = prop.Canthabitaciones;
@@ -83,10 +89,11 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
propi.Letra = prop.Letra;
propi.Monto = prop.Monto;
propi.Iddivisa = prop.Iddivisa;
propi.IdServicios.Clear();
foreach(Servicio ser in prop.IdServicios) {
var servi = con.Servicios.FirstOrDefault(x=>x.Id == ser.Id);
foreach (Servicio ser in prop.IdServicios)
{
var servi = con.Servicios.FirstOrDefault(x => x.Id == ser.Id);
if (servi == null) return false;
propi.IdServicios.Add(servi);
}
@@ -94,46 +101,50 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
return Guardar(con);
}
public IQueryable<PropiedadesDto> ObtenerPropiedadesPorEmail(string email) {
public IQueryable<PropiedadesDto> ObtenerPropiedadesPorEmail(string email)
{
FormattableString sqlq = $"""
SELECT p.id, p.ubicacion as Ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion as Tipo, GROUP_CONCAT(IFNULL(s.descripcion, '') SEPARATOR ', ') AS Servicios, p.monto as Monto,
p.iddivisa as Iddivisa
FROM Propiedades p
JOIN Clientes c ON c.dni = p.dnipropietario
JOIN TipoPropiedad tp ON tp.id = p.idtipropiedad
JOIN Clientes c ON c.dni = p.dnipropietario
JOIN TipoPropiedad tp ON tp.id = p.idtipropiedad
LEFT JOIN Servicio_Propiedad ps ON ps.idPropiedad = p.id
LEFT JOIN Servicios s ON s.Id = ps.idServicio
WHERE c.email = {email} AND p.idestado = 1
GROUP BY p.id
""";
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
return ret;
}
public IQueryable<PropiedadesDto> ObtenerPropiedadesDeBajaPorEmail(string email) {
public IQueryable<PropiedadesDto> ObtenerPropiedadesDeBajaPorEmail(string email)
{
FormattableString sqlq = $"""
SELECT p.id, p.ubicacion as Ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion as Tipo, GROUP_CONCAT(IFNULL(s.descripcion, '') SEPARATOR ', ') AS Servicios, p.monto as Monto,
p.iddivisa as Iddivisa
FROM Propiedades p
JOIN Clientes c ON c.dni = p.dnipropietario
JOIN TipoPropiedad tp ON tp.id = p.idtipropiedad
JOIN Clientes c ON c.dni = p.dnipropietario
JOIN TipoPropiedad tp ON tp.id = p.idtipropiedad
LEFT JOIN Servicio_Propiedad ps ON ps.idPropiedad = p.id
LEFT JOIN Servicios s ON s.Id = ps.idServicio
WHERE c.email = {email} AND p.idestado = 3
GROUP BY p.id
""";
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
return ret;
}
public bool AñadirServicioAPropiedad(int idprop, List<int> idserv){
public bool AñadirServicioAPropiedad(int idprop, List<int> idserv)
{
var con = Context;
Propiedade? prop = con.Propiedades.Find(idprop);
if (prop == null) return false;
foreach (int id in idserv) {
foreach (int id in idserv)
{
Servicio? servicio = con.Servicios.Find(id);
if (servicio == null) return false;
@@ -143,17 +154,21 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
return Guardar(con);
}
public bool BajaPropiedad(int id, Cliente? cli) {
public bool BajaPropiedad(int id, Cliente? cli)
{
if (cli == null) return false;
var con = Context;
Propiedade? prop = con.Propiedades.FirstOrDefault(x=>x.Id == id);
Propiedade? prop = con.Propiedades.FirstOrDefault(x => x.Id == id);
if (prop == null) return false;
if (prop.Dnipropietario != cli.Dni) return false;
if(prop.Idestado == 1){
if (prop.Idestado == 1)
{
prop.Idestado = 3;
}else{
}
else
{
prop.Idestado = 1;
}
GenerarLog(con, cli.Dni, $"Baja propiedad: {prop.Id}");
@@ -161,36 +176,41 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
}
public bool BajaPropiedad(int id, long dni) {
public bool BajaPropiedad(int id, long dni)
{
var con = Context;
Propiedade? prop = con.Propiedades.FirstOrDefault(x=>x.Id == id);
if (prop == null||prop.Dnipropietario == 0) return false;
Propiedade? prop = con.Propiedades.FirstOrDefault(x => x.Id == id);
if (prop == null || prop.Dnipropietario == 0) return false;
prop.Idestado = prop.Idestado == 3 ? 1 : 3;
GenerarLog(con, dni, $"Baja propiedad: {prop.Id}");
return Guardar(con);
}
public bool BajaServiciosAPropiedad(int idprop, List<int> idserv, long dni) {
public bool BajaServiciosAPropiedad(int idprop, List<int> idserv, long dni)
{
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;
foreach (int id in idserv) {
foreach (int id in idserv)
{
Servicio? servicio = con.Servicios.Find(id);
if (servicio == null) return false;
if (prop.IdServicios.Contains(servicio)){
if (prop.IdServicios.Contains(servicio))
{
prop.IdServicios.Remove(servicio);
}
}
GenerarLog(con, dni, $"Baja servicios a propiedad: {prop.Id}");
return Guardar(con);
return Guardar(con);
}
public IQueryable<PropiedadesDto> ObtenerPropiedesPorHabitaciones_Tipo_Servicios(int habitaciones, int tipo, string servicios) {
public IQueryable<PropiedadesDto> ObtenerPropiedesPorHabitaciones_Tipo_Servicios(int habitaciones, int tipo, string servicios)
{
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,
@@ -198,9 +218,9 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
p.iddivisa as Iddivisa
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
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
@@ -211,30 +231,32 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
)
GROUP BY p.id
""";
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
return ret;
}
public IQueryable<PropiedadesDto> ObtenerPropiedesPorHabitaciones_Tipo(int cantidadHabitaciones, int tipoPropiedad) {
public IQueryable<PropiedadesDto> ObtenerPropiedesPorHabitaciones_Tipo(int cantidadHabitaciones, int tipoPropiedad)
{
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,
p.iddivisa as Iddivisa
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
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
GROUP BY p.id
""";
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
return ret;
}
public IQueryable<PropiedadesDto> ObtenerPropiedesPorServicios(string servicios) {
public IQueryable<PropiedadesDto> ObtenerPropiedesPorServicios(string servicios)
{
string serviciosEscapados = string.Join(",", servicios.Split(',').Select(s => s.Trim()));
FormattableString sqlq = $"""
@@ -243,9 +265,9 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
p.iddivisa as Iddivisa
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
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
@@ -253,50 +275,53 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
WHERE sp2.idPropiedad = p.id
AND FIND_IN_SET(s2.descripcion, {serviciosEscapados})
)
GROUP BY p.id
GROUP BY p.id
""";
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
return ret;
}
public IQueryable<PropiedadesDto> ObtenerPropiedesPorHabitaciones(int cantidadHabitaciones) {
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,
p.iddivisa as Iddivisa
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
WHERE p.canthabitaciones = {cantidadHabitaciones}
GROUP BY p.id
""";
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
return ret;
}
public IQueryable<PropiedadesDto> ObtenerPropiedesPorTipo(int tipoPropiedad) {
public IQueryable<PropiedadesDto> ObtenerPropiedesPorHabitaciones(int cantidadHabitaciones)
{
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,
p.iddivisa as Iddivisa
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
WHERE p.idtipropiedad = {tipoPropiedad}
GROUP BY p.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
""";
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
return ret;
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
return ret;
}
public IQueryable<PropiedadesDto> ObtenerPropiedesPorHabitaciones_Servicios(int cantidadHabitaciones, string servicios) {
public IQueryable<PropiedadesDto> ObtenerPropiedesPorTipo(int tipoPropiedad)
{
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,
p.iddivisa as Iddivisa
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
WHERE p.idtipropiedad = {tipoPropiedad}
GROUP BY p.id
""";
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
return ret;
}
public IQueryable<PropiedadesDto> ObtenerPropiedesPorHabitaciones_Servicios(int cantidadHabitaciones, string servicios)
{
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,
@@ -304,9 +329,9 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
p.iddivisa as Iddivisa
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
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
@@ -317,12 +342,13 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
)
GROUP BY p.id
""";
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
return ret;
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
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()));
FormattableString sqlq = $"""
SELECT DISTINCT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS Tipo,
@@ -330,9 +356,9 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
p.iddivisa as Iddivisa
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
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
@@ -343,119 +369,130 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
)
GROUP BY p.id
""";
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
return ret;
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
return ret;
}
public bool BajaPropiedades(string email) {
public bool BajaPropiedades(string email)
{
var con = Context;
try {
IQueryable<Propiedade> listprop = con.Propiedades.Where(x=>x.DnipropietarioNavigation.Email == email);
foreach (var item in listprop) {
try
{
IQueryable<Propiedade> listprop = con.Propiedades.Where(x => x.DnipropietarioNavigation.Email == email);
foreach (var item in listprop)
{
item.Idestado = 3;
}
} catch {
}
catch
{
return false;
}
return Guardar(con);
}
public IQueryable<PropiedadesDto> ListarPropiedadesPorPagina(int pag) {
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,
p.iddivisa as Iddivisa
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}
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);
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
return ret;
}
///////////////ADMIN
public IQueryable<PropiedadesAdmin> ListarPropiedadesPorPaginaAdmin(int pag) {
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,
p.iddivisa as Iddivisa
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}
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);
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
return ret;
}
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,
p.iddivisa as Iddivisa
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
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}
GROUP BY p.id
LIMIT 10 OFFSET {pag * 10}
""";
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
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,
p.iddivisa as Iddivisa
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
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}
GROUP BY p.id
LIMIT 10 OFFSET {pag * 10}
""";
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
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,
p.iddivisa as Iddivisa
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
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}
GROUP BY p.id
LIMIT 10 OFFSET {pag * 10}
""";
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
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 = $"""
@@ -464,9 +501,9 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
p.iddivisa as Iddivisa
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
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
@@ -474,15 +511,16 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
WHERE sp2.idPropiedad = p.id
AND FIND_IN_SET(s2.descripcion, {serviciosEscapados})
)
GROUP BY p.id
LIMIT 10 OFFSET {pag*10}
GROUP BY p.id
LIMIT 10 OFFSET {pag * 10}
""";
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
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,
@@ -490,9 +528,9 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
p.iddivisa as Iddivisa
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
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
@@ -502,14 +540,15 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
AND FIND_IN_SET(s2.descripcion, {serviciosEscapados})
)
GROUP BY p.id
LIMIT 10 OFFSET {pag*10}
LIMIT 10 OFFSET {pag * 10}
""";
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
return ret;
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
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,
@@ -517,9 +556,9 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
p.iddivisa as Iddivisa
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
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
@@ -529,14 +568,15 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
AND FIND_IN_SET(s2.descripcion, {serviciosEscapados})
)
GROUP BY p.id
LIMIT 10 OFFSET {pag*10}
LIMIT 10 OFFSET {pag * 10}
""";
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
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) {
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,
@@ -544,9 +584,9 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
p.iddivisa as Iddivisa
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
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
@@ -556,30 +596,35 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
AND FIND_IN_SET(s2.descripcion, {serviciosEscapados})
)
GROUP BY p.id
LIMIT 10 OFFSET {pag*10}
LIMIT 10 OFFSET {pag * 10}
""";
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
var ret = Singleton.Context.Database.SqlQuery<PropiedadesAdmin>(sqlq);
return ret;
}
public int CuantasPaginas(int estado = 0) {
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 (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;
}
public int CuantasPaginasBusqueda(int habitaciones, string servicios, int tipoPropiedad, int estado) {
public int CuantasPaginasBusqueda(int habitaciones, string servicios, int tipoPropiedad, int estado)
{
int registrosPorPagina = 10;
var query = Context.Propiedades
@@ -588,19 +633,23 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
.Include(p => p.IdServicios)
.AsQueryable();
if (habitaciones > 0) {
if (habitaciones > 0)
{
query = query.Where(p => p.Canthabitaciones == habitaciones);
}
if (estado > 0){
query = query.Where(x=>x.Idestado == estado);
if (estado > 0)
{
query = query.Where(x => x.Idestado == estado);
}
if (tipoPropiedad > 0) {
if (tipoPropiedad > 0)
{
query = query.Where(p => p.Idtipropiedad == tipoPropiedad);
}
if (!string.IsNullOrWhiteSpace(servicios)) {
if (!string.IsNullOrWhiteSpace(servicios))
{
var listaServicios = servicios.Split(',').Select(s => s.Trim()).ToList();
query = query.Where(p =>
p.IdServicios.Any(sp =>
@@ -612,26 +661,29 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
return (int)Math.Ceiling((double)totalRegistros / registrosPorPagina);
}
public IQueryable<Propiedade>? ObtenerPropiedadesEnVenta(int pag){
public IQueryable<Propiedade>? ObtenerPropiedadesEnVenta(int pag)
{
var con = Context;
var props = con.Propiedades.Include(x=>x.IdServicios).Include(x=>x.IddivisaNavigation)
.Include(c=>c.IdtipropiedadNavigation)
.Where(x=>x.Idestado ==4 && !x.Venta.Any(x=>x.Idestado ==2))
.Skip(pag*10).Take(10);
var props = con.Propiedades.Include(x => x.IdServicios).Include(x => x.IddivisaNavigation)
.Include(c => c.IdtipropiedadNavigation)
.Where(x => x.Idestado == 4 && !x.Venta.Any(x => x.Idestado == 2))
.Skip(pag * 10).Take(10);
return props;
}
public int ObtenerPaginasDePropiedadesEnVenta(){
public int ObtenerPaginasDePropiedadesEnVenta()
{
var con = Context;
var props = con.Propiedades.Where(x=>x.Idestado ==4 && !x.Venta.Any(x=>x.Idestado ==2)).Count();
var props = con.Propiedades.Where(x => x.Idestado == 4 && !x.Venta.Any(x => x.Idestado == 2)).Count();
return (int)Math.Ceiling((double)props / 10);
}
public IQueryable<Propiedade> ObtenerPropiedadesAVentaPorDni(long dni) {
public IQueryable<Propiedade> ObtenerPropiedadesAVentaPorDni(long dni)
{
var con = Context;
var l = con.Propiedades.Include(x=>x.IdServicios).Include(x=>x.IdtipropiedadNavigation)
.Where(x=>x.Dnipropietario == dni && x.Idestado ==4);
var l = con.Propiedades.Include(x => x.IdServicios).Include(x => x.IdtipropiedadNavigation)
.Where(x => x.Dnipropietario == dni && x.Idestado == 4);
return l;
}
}
}