using Entidades; namespace Modelo { public sealed class RepositorioLote : Repositorio { public RepositorioLote(Context context) { this.context = context; } public override List Listar() { return context.Lotes.ToList(); } public Lote ObtenerPorId(int Tid) { Lote lot = context.Lotes.First(x => x.Id == Tid); return lot ?? new Lote(); } public override void Add(Lote t) { context.Lotes.Add(t); } public override void Del(Lote t) { Lote lot = context.Lotes.First(x => x.Id == t.Id); if (lot == null) return; context.Lotes.Remove(lot); } public override void Mod(Lote t) { context.Lotes.Update(t); } public bool DisminuirStock(DetalleFactura detalleFactura) { var detalle = context.DetalleFacturas.First(x => x.Id == detalleFactura.Id); bool ret = false; int cantidad = detalle.Cantidad; while (cantidad > 0) { var elementoAdisminuir = context.Lotes.Where(x => x.Habilitado == true) .First(x => x.Producto.Id == detalle.Producto.Id); cantidad -= elementoAdisminuir.Cantidad; if (cantidad > 0) { elementoAdisminuir.Cantidad = 0; elementoAdisminuir.Habilitado = false; } else if (cantidad == 0) { elementoAdisminuir.Cantidad = 0; elementoAdisminuir.Habilitado = false; ret = true; } else { elementoAdisminuir.Cantidad = -cantidad; ret = true; } context.Lotes.Update(elementoAdisminuir); } context.DetalleFacturas.Update(detalle); return ret; } } }