using Entidades; using Microsoft.EntityFrameworkCore; using Org.BouncyCastle.Math.EC.Rfc7748; namespace Modelo; public class RepositorioCanons: RepositorioBase { public ICollection? ObtenerCanonsPorContrato(int id) { var con = Context; var l = con.Contratos.Include(x=>x.Idcanons).FirstOrDefault(x => x.Id == id); if (l == null) return null; return l.Idcanons; } public Canon? ObtenerCanonContrato(DateTime f, long idcont) { var con = Context; Canon? cc = null; var c = con.Contratos.Include(x=>x.Idcanons).ThenInclude(x=>x.IdreciboNavigation).FirstOrDefault(x => x.Id == idcont); if (c == null) return null; foreach (var j in c.Idcanons) { if (j.Fecha == f) { cc = j; break; } } return cc; } public bool SetRecibo(Canon c, Recibo re) { var con = Context; var cc = con.Canons.FirstOrDefault(x=>x.Id == c.Id); if (cc == null) return false; re.Id = (con.Recibos.Any()?con.Recibos.Max(x=>x.Id):0)+1; con.Recibos.Add(re); cc.Idrecibo = re.Id; cc.Pagado = 1; return Guardar(con); } public bool CrearCanons(decimal aumento, long idcontrato) { //WIP var con = Context; aumento+=1; var cont = con.Contratos.Include(x=>x.Idcanons).FirstOrDefault(x=>x.Id == idcontrato); if (cont == null) return false; int exist = cont.Idcanons.Count(); Canon? d = cont.Idcanons.OrderByDescending(x=>x.Fecha).FirstOrDefault(); if (d == null) return false; if (exist+cont.MesesHastaAumento >= cont.MesesDurationContrato){ exist = cont.MesesDurationContrato-exist; } else{ exist = cont.MesesHastaAumento; } cont.Monto = cont.Monto * aumento; for (int i = 0; i < exist; i++){ Canon c = new Canon{ Fecha = d.Fecha.AddMonths(i==0?1:i+1), Id = con.Canons.Count()+i+1, Monto = cont.Monto, Pagado = 0, }; con.Canons.Add(c); cont.Idcanons.Add(c); } return Guardar(con); } }