using Entidades; using Modelo; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Controladora { public class ControladoraLotes : Singleton { public string DisminuirStock(ReadOnlyCollection detalleFactura) { var ret = false; foreach (var detalle in detalleFactura) { if (detalle == null) return "El detalle es nulo"; if (detalle.Producto.Id < 0) return "Esta mal cargada la Id de producto"; var productos = RepositorioProductos.Instance.Listar(); if (!productos.Any(x => x.Id == detalle.Producto.Id)) return "No hay Productos con esa id"; ret = RepositorioLote.Instance.DisminuirStock(detalle); } return (ret) ? "Se Descontaron los productos": "Se fallo al diminuir el stock"; } public int MostrarStockDeProducto(Producto producto) { if (producto == null) return 0; if (producto.Id < 0) return 0; var lotes = RepositorioLote.Instance.Listar(); if (!lotes.Any(x => x.Producto.Id == producto.Id)) return 0; // basicamente no hay productos con esa id var CantidadStock = lotes .Where(x => x.Producto.Id == producto.Id) .Sum(x=> x.Cantidad); return CantidadStock; } public ReadOnlyCollection Listar() { try { return RepositorioLote.Instance.Listar().Where(x=> x.Habilitado == true) .ToList().AsReadOnly(); } catch (Exception ex) { // Captura cualquier excepción no prevista throw new InvalidOperationException($"Ocurrió un error inesperado: {ex.Message}"); } } } }