private string RegistrarSalidaProductoCompuesto(SalidaProductoRequest request, Producto producto) { ProductoCompuesto productoCompuesto; try { productoCompuesto = (ProductoCompuesto)producto; } catch (Exception e) { return("No es un producto Compuesto"); } var productosEnInventario = new List <Producto>(); foreach (var p in productoCompuesto.Ingredientes) { var auxProductos = _productoRepository.FindBy(c => c.Codigo == p.Codigo); foreach (var s in auxProductos) { Console.WriteLine($"nombre {s.Nombre} foregn {s.ProductoCompuestoId}"); } Producto auxProducto; if (p.GetType() == typeof(ProductoCompuesto)) { auxProducto = auxProductos.FirstOrDefault(); } else { auxProducto = auxProductos.FirstOrDefault(x => x.ProductoCompuestoId == null); } if (auxProducto == null) { return("No se encontro el producto"); } productosEnInventario.Add(auxProducto); } productoCompuesto.ProductosEnInventario = productosEnInventario; var response = productoCompuesto.RegistrarSalidaProducto(request.Cantidad); if (response.Contains("Error")) { return(response); } try { foreach (var p in productoCompuesto.ProductosEnInventario) { _productoRepository.Update(p); } } catch (Exception e) { return("no se puede actualizar"); } _unitOfWork.Commit(); return($"se registro la salida de {productoCompuesto.Cantidad} {productoCompuesto.Nombre}"); }
public async Task <List <Producto> > FindBy(Expression <Func <Producto, bool> > predicate) { return(await _productoRepository.FindBy(predicate)); }