public async Task <ActionResult <Resultado <ResultadoInventarioProducto> > > ObtenerInvetarioProducto(string idProducto) { List <string> errores = new List <string>(); if (string.IsNullOrEmpty(idProducto)) { errores.Add("El id del producto no especificado"); } if (idProducto.Length != 36) { errores.Add("El id del producto no tiene la longitud correcta (36 caracteres)"); } if (errores.Count > 0) { return(BadRequest(Resultado <ProductoDto> .Failure(errores))); } Resultado <ResultadoInventarioProducto> resultado = await _servicio.ObtenerInvetarioProducto(idProducto); if (resultado.Correcto) { return(Ok(resultado)); } else { return(BadRequest(resultado)); } }
public async Task <ActionResult <Resultado <MovimientoDto> > > MoverProductoBodegas([FromBody] MovimientoBodegasRequest movimiento) { if (movimiento == null) { return(BadRequest(Resultado <MovimientoDto> .Failure("No se encontraron datos para procesar"))); } var resutlado = await _servicio.MoverProductoBodegas(movimiento); if (resutlado.Correcto) { return(Ok(resutlado)); } else { return(BadRequest(resutlado)); } }
public async Task <Resultado <ResultadoInventarioProducto> > ObtenerInvetarioProducto(string productoId) { List <string> errores = new List <string>(); Guid productoGuid; List <InventarioDto> listaInventario = null; ProductoDto producto = null; if (Guid.TryParse(productoId, out productoGuid)) { producto = await _repositorioProducto.BuscarProducto(productoGuid); if (producto == null) { errores.Add($"El producto con Id {productoId} no esta en el sistema"); } } else { errores.Add("El Id del producto no tiene el formato correcto"); } if (errores.Count > 0) { return(Resultado <ResultadoInventarioProducto> .Failure(errores)); } listaInventario = await _repositorioInventario.ObtenerInvtarioProducto(productoGuid); int cantidadTotal = listaInventario.Sum(s => s.Cantidad); decimal valorTotal = listaInventario.Sum(s => s.ValorAcumulado); ResultadoInventarioProducto respuesta = new ResultadoInventarioProducto() { Producto = producto, CantidadTotal = cantidadTotal, ValorTotal = valorTotal, Detalle = listaInventario }; return(Resultado <ResultadoInventarioProducto> .Success(respuesta)); }
public async Task <ActionResult <Resultado <ProductoDto> > > Get(string id) { List <string> errores = new List <string>(); if (string.IsNullOrEmpty(id)) { errores.Add("Id no especificado"); } if (id.Length != 36) { errores.Add("Id no tiene la longitud correcta (36 caracteres)"); } Guid idGuid; if (!Guid.TryParse(id, out idGuid)) { errores.Add("Id no tiene el formato correcto xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"); } if (errores.Count > 0) { return(BadRequest(Resultado <ProductoDto> .Failure(errores))); } ProductoDto producto = await _servicioProductos.ObtenerProducto(idGuid); if (producto != null) { return(Ok(Resultado <ProductoDto> .Success(producto))); } else { errores.Add("Id no encontrado"); return(NotFound(Resultado <ProductoDto> .Failure(errores))); } }
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)); } }