using System; using System.Reflection.Metadata.Ecma335; using System.Runtime.ConstrainedExecution; using Entidades; using Entidades.Dto; using Microsoft.EntityFrameworkCore; using Modelo; public class RepositorioPropiedades: RepositorioBase { public IQueryable 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(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(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 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(sqlq); return ret; } public bool AƱadirServicioAPropiedad(int idprop, List 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); if (prop == null) return false; prop.Idestado = 3; return Guardar(con); } public bool BajaServiciosAPropiedad(int idprop, List 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); } }