public async Task <ProductoDto> ObtenerProducto(Guid id) { ProductoDto producto = await _repositorio.BuscarProducto(id); return(producto); }
public async Task <Resultado <MovimientoDto> > CargarProducto(MovimientoRequest movimiento) { List <string> errores = new List <string>(); Guid bodegaId; Guid productoId; BodegaDto bodega = null; ProductoDto producto = null; if (Guid.TryParse(movimiento.BodegaId, out bodegaId)) { bodega = await _repositorioBodega.BuscarBodega(bodegaId); if (bodega == null) { errores.Add($"La bodega con Id {movimiento.BodegaId} no esta en el sistema"); } } else { errores.Add("La Id de la bodega no tiene el formato correcto"); } if (Guid.TryParse(movimiento.ProductoId, out productoId)) { producto = await _repositorioProducto.BuscarProducto(productoId); if (producto == null) { errores.Add($"El producto con Id {movimiento.ProductoId} no esta en el sistema"); } } else { errores.Add("La Id del producto no tiene el formato correcto"); } if (movimiento.Cantidad <= 0) { errores.Add("La cantidad debe ser mayor a 0"); } if (movimiento.Valor <= 0) { errores.Add("El valor debe ser mayor a 0"); } if (errores.Count > 0) { return(Resultado <MovimientoDto> .Failure(errores)); } InventarioDto inventario = await _repositorioInventario.ObtenerInventario(bodega.Id, producto.Id); int capacidadDisponible = 0; if (inventario != null) { capacidadDisponible = bodega.CapacidadMaxima - inventario.Cantidad; } else { capacidadDisponible = bodega.CapacidadMaxima; } if (movimiento.Cantidad > capacidadDisponible) { return(Resultado <MovimientoDto> .Failure("La cantidad de producto a ingresar supera el maximo de productos totales permitido en la bodega")); } MovimientoDto movimientoCrear = new MovimientoDto { Id = Guid.NewGuid(), FechaMovimiento = DateTime.Now, Bodega = bodega, Producto = producto, Cantidad = movimiento.Cantidad, Valor = movimiento.Valor, Tipo = TipoMovimiento.Ingreso }; MovimientoDto movimientoCreado = await _repositorioInventario.GuardarMovimiento(movimientoCrear); if (movimientoCreado != null) { await _repositorioInventario.ActualizarInvetario(movimientoCreado); return(Resultado <MovimientoDto> .Success(movimientoCreado)); } else { errores.Add("Se ha presnetado un problema al guardar el movimiento"); return(Resultado <MovimientoDto> .Failure(errores)); } }