Files
AlquilaFacil/Modelo/RepositorioPropiedades.cs

106 lines
3.1 KiB
C#

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<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);
if (prop == null) return false;
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);
}
}