Files
AlquilaFacil/Modelo/RepositorioContratos.cs
2025-01-13 17:10:42 -03:00

148 lines
5.6 KiB
C#

using Entidades;
using Microsoft.EntityFrameworkCore;
namespace Modelo;
public class RepositorioContratos: RepositorioBase<RepositorioContratos> {
public IQueryable<Contrato>? ObtenerContratosPorEmailInquilino(string email) {
var con = Context;
try{
var listcont = con.Contratos.Where(x=>x.DniinquilinoNavigation.Email == email);
return listcont;
} catch {
return null;
}
}
public bool CargaPrecontrato(Contrato? c = null, Notificacione? n = null) {
if (c == null || c.Habilitado == 1) return false;
if (n == null) return false;
var con = Context;
var prop = con.Propiedades.FirstOrDefault(x=>x.Id==c.Idpropiedad);
if (prop == null) return false;
prop.Idestado = 2;
c.Id = (con.Contratos.Any() ? con.Contratos.Max(x => x.Id) : 0) + 1;
c.Monto = prop.Monto;
con.Contratos.Add(c);
con.Notificaciones.Add(n);
return Guardar(con);
}
public bool CargaGarantes(List<Garante> gar, string emailInquilino, int idpropiedad) {
var con = Context;
Contrato? contr = con.Contratos.Include(x=>x.DniinquilinoNavigation).Include(x=>x.Idgarantes)
.FirstOrDefault(x=>x.Idpropiedad == idpropiedad &&
x.DniinquilinoNavigation.Email == emailInquilino &&
x.Habilitado == 0 &&
x.Cancelado == 0);
if (contr == null) return false;
int inicial = (con.Garantes.Any()? con.Garantes.Max(x=>x.Id): 0) + 1;
foreach (var i in gar) {
i.Id = inicial;
inicial++;
con.Garantes.Add(i);
contr.Idgarantes.Add(i);
}
return Guardar(con);
}
public int CantidadGarantesEncontrato(string emailInquilino, int idpropiedad) {
var con = Context;
Contrato? contr = con.Contratos.Include(x=>x.DniinquilinoNavigation)
.FirstOrDefault(x=>x.Idpropiedad == idpropiedad &&
x.DniinquilinoNavigation.Email == emailInquilino &&
x.Habilitado == 0 &&
x.Cancelado == 0);
if (contr == null) return 0;
return contr.Cantgarantemin;
}
public Contrato? ObtenerContrato(string emailInquilino, int idpropiedad) {
var con = Context;
Contrato? contr = con.Contratos.Include(x=>x.DniinquilinoNavigation)
.FirstOrDefault(x=>x.Idpropiedad == idpropiedad &&
x.DniinquilinoNavigation.Email == emailInquilino &&
x.Habilitado == 0 &&
x.Cancelado == 0);
if (contr == null) return null;
return contr;
}
public bool CancelarPrecontrato(string emailInquilino, int idpropiedad) {
var con = Context;
Contrato? contr = con.Contratos.Include(x=>x.DniinquilinoNavigation)
.FirstOrDefault(x=>x.Idpropiedad == idpropiedad &&
x.DniinquilinoNavigation.Email == emailInquilino &&
x.Habilitado == 0 &&
x.Cancelado == 0);
if (contr == null || contr.IdpropiedadNavigation == null) return false;
contr.Cancelado = 1;
contr.IdpropiedadNavigation.Idestado = 1;
return Guardar(con);
}
public Contrato? ObtenerPreContratoPorId(long idcontrato) {
var con = Context;
Contrato? contr = con.Contratos
.Include(x=>x.DnipropietarioNavigation)
.Include(x=>x.Idgarantes)
.Where(x=>x.Cancelado == 0 && x.Habilitado == 0)
.FirstOrDefault(x=>x.Id == idcontrato);
if (contr == null) return null;
return contr;
}
public bool AddUrl(long id, string nuevoNombreArchivo) {
var con = Context;
Contrato? contrato = con.Contratos
.FirstOrDefault(x=>x.Id == id);
if (contrato == null) return false;
contrato.UrlContrato = nuevoNombreArchivo;
return Guardar(con);
}
public bool AceptarContrato(long idcontrato) {
var con = Context;
Contrato? cont = con.Contratos
.Include(x=>x.Idcanons)
.Include(x=>x.IdpropiedadNavigation)
.FirstOrDefault(x=>x.Id ==idcontrato &&
x.Habilitado ==0 &&
x.Cancelado == 0);
if (cont == null || cont.IdpropiedadNavigation==null) return false;
cont.Habilitado = 1;
var fecha = cont.Fechainicio;
for (int i = 0; i < cont.MesesHastaAumento; i++) {
Canon can = new Canon{
Fecha = fecha.AddMonths(i),
Monto = cont.IdpropiedadNavigation.Monto,
Pagado = 0,
};
can.Id = (con.Canons.Any()? con.Canons.Max(x=>x.Id) :0)+1;
can.Idcontratos.Add(cont);
con.Canons.Add(can);
cont.Idcanons.Add(can);
}
return Guardar(con);
}
public bool CancelarPrecontrato(long idcontrato) {
var con = Context;
Contrato? cont = con.Contratos.Include(x=>x.IdpropiedadNavigation).FirstOrDefault(x=>x.Id ==idcontrato && x.Habilitado ==0);
if (cont == null|| cont.IdpropiedadNavigation==null) return false;
cont.Cancelado = 1;
cont.IdpropiedadNavigation.Idestado = 1;
return Guardar(con);
}
}