public IActionResult Put(Usuario usuario) { if (usuario.Clave != "") { usuario.Clave = StringExtension.HashPassword(usuario.Clave); } else { using (MisPollosContext context = new MisPollosContext()) { usuario.Clave = context.Usuarios.FirstOrDefault(x => x.Id == usuario.Id).Clave; } } var result = _context.Usuarios.Attach(usuario); _context.Entry(usuario).State = EntityState.Modified; _context.SaveChanges(); return(Ok(result.Entity)); }
public IActionResult Put(PedidoDto dto) { decimal total = 0; // Consulta los id de producto enviados por el frontend var products = _context.Producto.Where(x => dto.ListaProductos.Select(s => s.IdProducto).Contains(x.Id)); // Calcula el valor total del pedido multiplicando el precio de cada producto por su cantidad y sumandolo foreach (var producto in products) { var cantidad = dto.ListaProductos.First(x => x.IdProducto == producto.Id).Cantidad; total += cantidad * producto.Precio; } var pedido = new Pedido { Id = dto.Id, IdCliente = dto.IdCliente, IdUsuario = dto.IdUsuario, ValorTotal = total, }; var result = _context.Pedido.Attach(pedido); _context.Entry(pedido).State = EntityState.Modified; _context.SaveChanges(); var productItems = _context.PedidoProducto.Where(x => x.IdPedido == pedido.Id); foreach (var productItem in productItems) { if (!dto.ListaProductos.Any(x => x.IdProducto == productItem.IdProducto)) { using (MisPollosContext context = new MisPollosContext()) { Producto product = context.Producto.First(x => x.Id == productItem.IdProducto); product.Stock += productItem.Cantidad; context.SaveChanges(); } _context.PedidoProducto.Remove(productItem); } } _context.SaveChanges(); foreach (var item in dto.ListaProductos) { Producto producto = _context.Producto.First(x => x.Id == item.IdProducto); var cantidad = productItems.FirstOrDefault(x => x.IdProducto == item.IdProducto)?.Cantidad ?? 0; // 5 10 producto.Stock += cantidad - item.Cantidad; // 10 5 _context.Producto.Attach(producto); _context.Entry(producto).State = EntityState.Modified; _context.SaveChanges(); var pedidoProducto = productItems.FirstOrDefault(x => x.IdProducto == item.IdProducto); if (pedidoProducto == null) { pedidoProducto = new PedidoProducto { IdPedido = pedido.Id, IdProducto = item.IdProducto, Cantidad = item.Cantidad, ValorTotal = item.Cantidad * producto.Precio }; _context.PedidoProducto.Add(pedidoProducto); _context.SaveChanges(); } else { pedidoProducto.Cantidad = item.Cantidad; _context.PedidoProducto.Attach(pedidoProducto); _context.Entry(pedidoProducto).State = EntityState.Modified; _context.SaveChanges(); } } return(Ok(result.Entity)); }