104 lines
3.0 KiB
C#
104 lines
3.0 KiB
C#
using System;
|
|
using System.Reflection.Metadata.Ecma335;
|
|
using Entidades;
|
|
using Entidades.Dto;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Modelo;
|
|
|
|
public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades>
|
|
{
|
|
|
|
public IQueryable<PropiedadesDto> ListarPropiedades(){
|
|
FormattableString sqlq = $"""
|
|
SELECT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion AS TipoPropiedad FROM Propiedades p
|
|
JOIN EstadoPropiedad ep ON p.idestado = 1
|
|
JOIN TipoPropiedad tp ON p.idtipropiedad = tp.id
|
|
""";
|
|
|
|
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
|
|
return ret;
|
|
}
|
|
|
|
public Propiedade? ObtenerPropiedadPorId(int Id) {
|
|
|
|
FormattableString sqlq = $"""
|
|
SELECT * FROM Propiedades p
|
|
WHERE p.id = {Id}
|
|
LIMIT 1
|
|
""";
|
|
|
|
Propiedade? prop = Context.Database.SqlQuery<Propiedade>(sqlq).First();
|
|
if (prop == null || prop.Id == 0) {
|
|
return null;
|
|
}
|
|
|
|
return prop;
|
|
}
|
|
|
|
public bool AñadirPropiedad(Propiedade? prop){
|
|
if (prop == null) return false;
|
|
|
|
var con = Context;
|
|
|
|
int count = con.Propiedades.Count()+1;
|
|
|
|
prop.Id = count;
|
|
prop.Idestado = 1;
|
|
con.Propiedades.Add(prop);
|
|
return Guardar(con);
|
|
}
|
|
|
|
public IQueryable<PropiedadesDto> ObtenerPropiedadesPorEmail(string email) {
|
|
FormattableString sqlq = $"""
|
|
SELECT p.id, p.ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion as TipoPropiedad From Propiedades p
|
|
JOIN Clientes c ON c.dni = p.dnipropietario
|
|
JOIN TipoPropiedad tp ON tp.id = p.idtipropiedad
|
|
WHERE c.email = {email}
|
|
""";
|
|
var ret = Context.Database.SqlQuery<PropiedadesDto>(sqlq);
|
|
return ret;
|
|
}
|
|
|
|
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) {
|
|
Servicio? servicio = con.Servicios.Find(id);
|
|
if (servicio == null) return false;
|
|
|
|
prop.IdServicios.Add(servicio);
|
|
}
|
|
|
|
return Guardar(con);
|
|
}
|
|
|
|
public bool BajaPropiedad(int id) {
|
|
var con = Context;
|
|
Propiedade prop = con.Propiedades.Find(id);
|
|
prop.Idestado = 3;
|
|
|
|
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;
|
|
|
|
|
|
foreach (int id in idserv) {
|
|
Servicio? servicio = con.Servicios.Find(id);
|
|
if (servicio == null) return false;
|
|
|
|
if (prop.IdServicios.Contains(servicio)){
|
|
prop.IdServicios.Remove(servicio);
|
|
}
|
|
}
|
|
|
|
return Guardar(con);
|
|
}
|
|
} |