public string Handle(SalidaProductoRequest request) { var producto = _productoRepository.FindFirstOrDefault(p => p.Codigo == request.Codigo); if (producto == null) { return("No existe el producto"); } if (request.Tipo == "Compuesto") { return(RegistrarSalidaProductoCompuesto(request, producto)); } var response = ""; response = producto.RegistrarSalidaProducto(request.Cantidad); try { _productoRepository.Update(producto); } catch (Exception e) { return("no se pudo guardar"); } _unitOfWork.Commit(); return(response); }
public string PostRegistrarSalida(SalidaProductoRequest request) { var service = new RegistrarSalidaProductoService(_unitOfWork, _productoRepository); var response = service.Handle(request); return(response); }
public SalidaProductoResponse PostSalidaProducto(SalidaProductoRequest request) { var service = new SalidaProductoService(_unitOfWork, _productoRepository); var response = service.Ejecutar(request); return(response); }
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 void NoPuedoRegistrarLaSalidaDeProductoSimpleSiLaCantidadExcedeLaDisponible() { var gaseosaInv = new ProductoSimple("sadad", "gaseosa", 5, 100, 200); _productoRepository.Add(gaseosaInv); _dbContext.SaveChanges(); var request = new SalidaProductoRequest("Simple", gaseosaInv.Codigo, 6); var resultado = _registrarSalidaProductoService.Handle(request); Assert.AreEqual("Error gaseosa: La cantidad de la salida no puede ser mayor a la disponible", resultado); }
public void PuedoRegistrarLaSalidaDeProductoSimple() { var gaseosaInv = new ProductoSimple("sadad", "gaseosa", 5, 100, 200); _productoRepository.Add(gaseosaInv); _dbContext.SaveChanges(); var request = new SalidaProductoRequest("Simple", gaseosaInv.Codigo, 1); var resultado = _registrarSalidaProductoService.Handle(request); Assert.AreEqual("La nueva cantidad del producto gaseosa es 4", resultado); }
public void NoPuedoRegistrarLaSalidaDeProductoCompuestoSiNoHayProductosParaHacerlo() { var ensalada = ProductoCompuestoMother.CrearProducto(); _productoRepository.Add(ensalada); _productoRepository.AddRange(ensalada.ProductosEnInventario); _dbContext.SaveChanges(); var request = new SalidaProductoRequest("Simple", ensalada.Codigo, 6); var resultado = _registrarSalidaProductoService.Handle(request); Assert.AreEqual("Error tomate: La cantidad de la salida no puede ser mayor a la disponible", resultado); }
public void PuedoRegistrarLaSalidaDeProductoCompuesto() { var ensaladaConG = ProductoCompuestoMother.CrearProductoCompuestoComplejo(); _productoRepository.Add(ensaladaConG); _productoRepository.AddRange(ensaladaConG.ProductosEnInventario); _dbContext.SaveChanges(); var request = new SalidaProductoRequest("Compuesto", ensaladaConG.Codigo, 1); var resultado = _registrarSalidaProductoService.Handle(request); Assert.AreEqual("se registro la salida de 1 Ensalada Con Gaseosa", resultado); }
public void PuedoRegistrarLaSalidaDeProducto() { var ensalada = ProductoCompuestoMother.CrearProducto(); var gaseosa = new ProductoSimple("sadad", "gaseosa", 1, 100, 200); var gaseosaInv = new ProductoSimple("sadad", "gaseosa", 5, 100, 200); var ing = new List <Producto>(); ing.Add(ensalada); ing.Add(gaseosa); var ensaladaConG = new ProductoCompuesto("dasd", "ensaladaconG", 1, 2, ing, ensalada.ProductosEnInventario); _productoRepository.Add(ensaladaConG); _productoRepository.AddRange(ensalada.ProductosEnInventario); _productoRepository.Add(gaseosaInv); _dbContext.SaveChanges(); var request = new SalidaProductoRequest("Compuesto", ensaladaConG.Codigo, 1); var resultado = _registrarSalidaProductoService.Handle(request); Assert.AreEqual("se registro la salida de 1 ensaladaconG", resultado); }
public SalidaProductoResponse Ejecutar(SalidaProductoRequest request) { try { var prod = ProductoRepository.FindFirstOrDefault(prd => prd.Codigo == request.Codigo); if (prod == null) { return(new SalidaProductoResponse(1, "No se encuentra el producto")); } if (prod is ProductoCompuesto) { prod = ProductoRepository.FindFirstOrDefaultIncluded(prd => prd.Codigo == request.Codigo); } var respuesta = prod.RegistrarSalida(request.Cantidad); UnitOfWork.Commit(); return(new SalidaProductoResponse(0, respuesta)); } catch (Exception e) { return(new SalidaProductoResponse(1, "Error " + e)); } }