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 Añadir(Lote t) { if (t == null) return "El Lote es nulo, falló la carga"; try { bool resultado = RepositorioLote.Instance.Add(t); return resultado ? $"El Lote con el ID {t.Id} se cargó correctamente" : $"Falló la carga del Lote con el ID {t.Id}"; } catch (Exception ex) { // Captura cualquier excepción no prevista return $"Ocurrió un error inesperado: {ex.Message}"; } } public string Modificar(Lote t) { if (t == null) return "El Lote es nulo, falló la modificación"; try { bool resultado = RepositorioLote.Instance.Mod(t); return resultado ? $"El Lote con el ID {t.Id} se modificó correctamente" : $"Falló la modificación del Lote con el ID {t.Id}"; } catch (Exception ex) { // Captura cualquier excepción no prevista return $"Ocurrió un error inesperado: {ex.Message}"; } } public string Eliminar(Lote t) { if (t == null) return "El Lote es nulo, falló la eliminación"; try { bool resultado = RepositorioLote.Instance.Del(t); return resultado ? $"El Lote con el ID {t.Id} se eliminó correctamente" : $"Falló la eliminación del Lote con el ID {t.Id}"; } catch (Exception ex) { // Captura cualquier excepción no prevista return $"Ocurrió un error inesperado: {ex.Message}"; } } */ 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}"); } } } }