Avansamos mucho con el administracion propiedades
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using Entidades;
|
||||
using Entidades.Admin;
|
||||
using Entidades.Dto;
|
||||
using Microsoft.Data.SqlClient;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Identity.Client;
|
||||
using Modelo;
|
||||
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;
|
||||
Propiedade? prop = con.Propiedades.Include(x=>x.IdServicios).FirstOrDefault(x => x.Id == idprop);
|
||||
if (prop == null) return false;
|
||||
@@ -183,7 +196,7 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
|
||||
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
|
||||
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
|
||||
@@ -207,7 +220,7 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
|
||||
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
|
||||
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
|
||||
@@ -221,12 +234,12 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
|
||||
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 = $"""
|
||||
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
|
||||
JOIN EstadoPropiedad ep ON p.idestado = 1
|
||||
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
||||
@@ -246,10 +259,10 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
|
||||
return ret;
|
||||
}
|
||||
|
||||
public IQueryable<PropiedadesDto>? ObtenerPropiedesPorHabitaciones(int cantidadHabitaciones) {
|
||||
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
|
||||
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
|
||||
@@ -263,10 +276,10 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
|
||||
return ret;
|
||||
}
|
||||
|
||||
public IQueryable<PropiedadesDto>? ObtenerPropiedesPorTipo(int tipoPropiedad) {
|
||||
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
|
||||
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
|
||||
@@ -280,11 +293,11 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
|
||||
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()));
|
||||
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
|
||||
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
|
||||
@@ -302,13 +315,14 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
|
||||
""";
|
||||
|
||||
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()));
|
||||
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
|
||||
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
|
||||
@@ -341,4 +355,213 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades> {
|
||||
}
|
||||
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