public async Task <ProductoDto> Handle(DataRequest request, CancellationToken cancellationToken) { var productoExistente = await dBContext.Producto.Where(p => p.ProductoId == request.ProductoId).FirstOrDefaultAsync(); if (productoExistente != null) { productoExistente.ProductoNombre = request.ProductoNombre; productoExistente.ProductoDescripcion = request.ProductoDescripcion; productoExistente.ProductoCantidad = request.ProductoCantidad; productoExistente.ProductoPrecioUnitario = request.ProductoPrecioUnitario; productoExistente.CategoriaId = request.CategoriaId; dBContext.Update(productoExistente); var result = await dBContext.SaveChangesAsync(); if (result > 0) { return(new ProductoDto() { ProductoId = productoExistente.ProductoId, ProductoNombre = productoExistente.ProductoNombre, ProductoDescripcion = productoExistente.ProductoDescripcion, ProductoCantidad = productoExistente.ProductoCantidad, ProductoPrecioUnitario = productoExistente.ProductoPrecioUnitario, CategoriaId = productoExistente.CategoriaId }); } throw new Exception("No se pudo editar producto"); } throw new Exception("No existe producto"); }
public async Task <ProductoDto> Handle(DataRequest request, CancellationToken cancellationToken) { var nuevoProducto = new Producto() { ProductoId = new Guid(), ProductoNombre = request.ProductoNombre, ProductoDescripcion = request.ProductoDescripcion, ProductoCantidad = request.ProductoCantidad, ProductoPrecioUnitario = request.ProductoPrecioUnitario, CategoriaId = request.CategoriaId }; await dBContext.Producto.AddAsync(nuevoProducto); var result = await dBContext.SaveChangesAsync(); if (result > 0) { return(new ProductoDto() { ProductoId = nuevoProducto.ProductoId, ProductoNombre = nuevoProducto.ProductoNombre, ProductoDescripcion = nuevoProducto.ProductoDescripcion, ProductoCantidad = nuevoProducto.ProductoCantidad, ProductoPrecioUnitario = nuevoProducto.ProductoPrecioUnitario, CategoriaId = nuevoProducto.CategoriaId }); } throw new Exception("No se pudo crear el producto"); }
public async Task <Unit> Handle(DataRequest request, CancellationToken cancellationToken) { var productoExistente = await dBContext.Producto.Where(p => p.ProductoId == request.ProductoId).FirstOrDefaultAsync(); if (productoExistente != null) { dBContext.Producto.Remove(productoExistente); var result = await dBContext.SaveChangesAsync(); if (result > 0) { return(Unit.Value); } throw new Exception("No se puede eliminar producto, puede ser que este relacionado en una factura"); } throw new Exception("Producto no existe"); }
public async Task <Unit> Handle(DataRequest request, CancellationToken cancellationToken) { var facturaExistente = await dBContext.Factura.Where(f => f.FacturaId == request.FacturaId).FirstOrDefaultAsync(); if (facturaExistente != null) { //Eliminamos los productos facturados var listaProductosFacturados = await dBContext.DescripcionFactura.Where(d => d.FacturaId == facturaExistente.FacturaId).ToListAsync(); dBContext.RemoveRange(listaProductosFacturados); //Eliminamos la factura dBContext.Remove(facturaExistente); var result = await dBContext.SaveChangesAsync(); if (result > 0) { return(Unit.Value); } throw new Exception("No se pudo Eliminar la factura"); } throw new Exception("Factura no encontrada"); }
public async Task <FacturaDto> Handle(DataRequest request, CancellationToken cancellationToken) { //Declaracion de variables decimal _subtotal = 0; var listaDescripcionProductoFacturadoDto = new List <DescripcionFacturadoDto>(); var listaDescripcionProductoFacturado = new List <DescripcionFactura>(); //Evaluamos las cantidades existentes de cada producto y si existe foreach (var producto in request.ProductosFacturar) { var productoExistente = await dBContext.Producto.Where(x => x.ProductoId == producto.ProductoId).FirstOrDefaultAsync(); if (productoExistente == null) { throw new Exception("Producto No existe"); } var productoCantidadRestante = productoExistente.ProductoCantidad - producto.CantidadFacturar; if (productoCantidadRestante < 5) { throw new Exception("El stock mínimo es de 5"); } //Calculo de subtotal de los productos _subtotal = (_subtotal + (producto.CantidadFacturar * productoExistente.ProductoPrecioUnitario)); } //Creamos factura para guardarla en la base de datos var facturaNueva = new Factura() { FacturaId = new Guid(), FacturaFecha = request.FacturaFecha, ClienteId = request.ClienteId, FacturaIvaporcentaje = request.FacturaIvaporcentaje, FacturaSubtotal = _subtotal, FacturaIvatotal = _subtotal * (request.FacturaIvaporcentaje / 100), FacturaTotal = _subtotal + (_subtotal * (request.FacturaIvaporcentaje / 100)) }; //Guardamos la factura await dBContext.Factura.AddAsync(facturaNueva); var result = await dBContext.SaveChangesAsync(); ////////////////////////////////////////////////////// if (result > 0) { var cliente = await dBContext.Cliente.Where(x => x.ClienteId == facturaNueva.ClienteId).FirstOrDefaultAsync(); //Actualizamos la cantidad del producto facturado y registramos a descripcion de la facturacion foreach (var producto in request.ProductosFacturar) { var productoExistente = await dBContext.Producto.Where(x => x.ProductoId == producto.ProductoId).FirstOrDefaultAsync(); var productoCantidadRestante = productoExistente.ProductoCantidad - producto.CantidadFacturar; productoExistente.ProductoCantidad = productoCantidadRestante; var _DescripcionFacturaProducto = new DescripcionFactura() { DescripcionFacturaId = new Guid(), DescripcionFacturaCantidad = producto.CantidadFacturar, DescripcionFacturaPrecio = producto.CantidadFacturar * productoExistente.ProductoPrecioUnitario, FacturaId = facturaNueva.FacturaId, ProductoId = producto.ProductoId, }; listaDescripcionProductoFacturado.Add(_DescripcionFacturaProducto); listaDescripcionProductoFacturadoDto.Add(new DescripcionFacturadoDto() { DescripcionFacturaCantidad = (int)_DescripcionFacturaProducto.DescripcionFacturaCantidad, DescripcionFacturaPrecio = (decimal)_DescripcionFacturaProducto.DescripcionFacturaPrecio, ProductoId = productoExistente.ProductoId, ProductoNombre = productoExistente.ProductoNombre }); await dBContext.DescripcionFactura.AddAsync(_DescripcionFacturaProducto); dBContext.Update(productoExistente); var resultActualizarProducto = await dBContext.SaveChangesAsync(); if (resultActualizarProducto <= 0) { throw new Exception("No se pudó actualizar la cantidad del producto o la descripcion de la factura"); } } return(new FacturaDto() { FacturaId = facturaNueva.FacturaId, FacturaFecha = facturaNueva.FacturaFecha, ClienteId = facturaNueva.ClienteId, ClienteNombre = cliente.ClienteNombre, FacturaSubtotal = facturaNueva.FacturaSubtotal, FacturaIvaporcentaje = facturaNueva.FacturaIvaporcentaje, FacturaIvatotal = facturaNueva.FacturaIvatotal, FacturaTotal = facturaNueva.FacturaTotal, ListaDescripcionFactura = listaDescripcionProductoFacturadoDto }); } throw new Exception("No se pudó registrar la factura"); }