예제 #1
0
        /// <summary>
        /// Guarda los cambios realizados en el producto
        /// </summary>
        /// <param name="idProducto"></param>
        /// <param name="productoDto"></param>
        /// <returns></returns>
        public Producto EditarProducto(int idProducto, Producto productoDto)
        {
            var producto = db.Producto.Where(p => p.IdProducto == idProducto).FirstOrDefault();

            //Edita el producto
            if (producto != null)
            {
                producto.Codigo = productoDto.Codigo;
                producto.Nombre = productoDto.Nombre;
                producto.Valor  = productoDto.Valor;

                db.SaveChanges();
            }

            else
            {
                throw new Exception($"No se encontro el producto con IdProducto {idProducto}");
            }

            return(producto);
        }
예제 #2
0
        /// <summary>
        /// Se realiza una doble validación  para rectifica los valores totales, po si llegan a hackear el valor total en el front
        /// Se crea la factura don sus respectivos items y productos
        /// </summary>
        /// <param name="facturaDto"></param>
        /// <returns></returns>
        public Factura CrearFactura(Factura facturaDto)
        {
            db.Configuration.LazyLoadingEnabled = false;

            //Si la factura no tiene productos
            if (facturaDto.Items.Count() == 0)
            {
                throw new Exception("La factura debe tener como mínimo 1 prodcuto");
            }

            if (facturaDto.Cliente == null)
            {
                throw new Exception("Ingrese el nombre del cliente a la factura");
            }

            var idsProductos = facturaDto.Items.Select(i => i.IdProducto).Distinct().ToArray();

            //Se consultan los productos de la factura, para rectificar el valor total de los productos
            var productos = db.Producto.Where(p => idsProductos.Contains(p.IdProducto)).ToArray();

            decimal totalFactura = 0;


            foreach (var i in facturaDto.Items)
            {
                var producto = productos.Where(p => p.IdProducto == i.IdProducto).FirstOrDefault();

                i.ValorTotal = (decimal)i.Cantidad * (decimal)producto.Valor;

                totalFactura += i.ValorTotal;
                i.Producto    = null;
            }

            //Guarda el costo total de la factura
            facturaDto.ValorTotal = totalFactura;

            db.Factura.Add(facturaDto);

            db.SaveChanges();

            return(facturaDto);
        }