private Producto ComprobarExistenciasDeEnMateriasPrimas(FabricacionRequest request, Fabricacion fabricacion, Producto temp) { foreach (FabricacionDetalleRequest detalle in request.Detalles) { Producto productoMateriaPrima = this._unitOfWork.ProductoRepository. FindFirstOrDefault(producto => producto.Nombre == detalle.NombreMateriaPrima); if (productoMateriaPrima == null) { break; } else if (productoMateriaPrima. PuedeDescontarCantidad(detalle.CantidadMateriaPrima).Any()) { temp = productoMateriaPrima; break; } fabricacion. AgregarDetalle(new FabricacionDetalle(fabricacion, productoMateriaPrima, detalle.CantidadMateriaPrima)); } return(temp); }
public void FabricacionConDetalleErradoUltimoIndice() { FabricacionRequest request = new FabricacionRequest("1065840833", 1 , 0, 0, Especificacion.Duro, fabricacionDetalleRequestsConErrorEnUltimoIndice); Response obtenido = new FabricacionCrearService(_unitOfWork).IniciarFabricacion(request); Assert.AreEqual("No hay cantidades suficientes " + $"de AZÚCAR, solo hay 30", obtenido.Mensaje); }
public void FabricacionProbar(string identificaciónEmpleado, int idProducto, Especificacion contestura, string esperado) { FabricacionRequest request = new FabricacionRequest(identificaciónEmpleado, idProducto, 0, 0, contestura, fabricacionDetalleRequestsCorrectos); Response obtenido = new FabricacionCrearService(_unitOfWork).IniciarFabricacion(request); Assert.AreEqual(esperado, obtenido.Mensaje); }
public ActionResult <Response> PostFabricar(FabricacionRequest fabricacionRequest) { Response response = new FabricacionCrearService(_unitOfWork). IniciarFabricacion(fabricacionRequest); if (response.Data == null) { return(BadRequest(response.Mensaje)); } return(Ok(response)); }
public Response IniciarFabricacion(FabricacionRequest request) { Producto productoParaFabricar = this._unitOfWork.ProductoRepository. FindBy(producto => producto.Id == request.IdProducto, includeProperties: "Fabricaciones").FirstOrDefault(); if (productoParaFabricar == null) { return(new Response { Mensaje = "El producto para fabricar no existe, agréguelo" }); } if (productoParaFabricar.Especificacion == Especificacion.MateriaPrima) { return(new Response { Mensaje = $"El {productoParaFabricar.Nombre} no se puede fabricar" }); } TerceroEmpleado empleado = this._unitOfWork.TerceroEmpleadoRepository. FindBy(empleado => empleado.Tercero.Nit == request.NitEmpleado, includeProperties: "Tercero").FirstOrDefault(); if (empleado == null) { return(new Response { Mensaje = $"No hay un empleado con identificación {request.NitEmpleado}" }); } if (request.Detalles.Count == 0) { return(new Response { Mensaje = $"Por favor, agregue materias primas " + $"para fabricar el {productoParaFabricar.Nombre}" }); } Fabricacion fabricacion = new Fabricacion(empleado); productoParaFabricar.AgregarFabricacion(fabricacion); Producto temp = null; temp = ComprobarExistenciasDeEnMateriasPrimas(request, fabricacion, temp); if (fabricacion.FabricacionDetalles.Count != request.Detalles.Count) { if (temp == null) { return(new Response { Mensaje = "El " + $"{request.Detalles[fabricacion.FabricacionDetalles.Count].NombreMateriaPrima}" + " no se encuentra en el sistema, agréguelo" }); } return(new Response { Mensaje = $"No hay cantidades suficientes de {temp.Nombre}, " + $"solo hay {temp.Cantidad}" }); } fabricacion.DescontarCantidadesEnMateriasPrimas(); this._unitOfWork.ProductoRepository.Edit(productoParaFabricar); this._unitOfWork.Commit(); return(new Response { Mensaje = "Fabricacion realizada con éxito, a espera de definir la cantidad producida", Data = request.Map(fabricacion) }); }