public async Task <OrderInventory> AddOrderInventoryAsync(OrderInventory orderInventory) { _dbContext.OrderInventory.Add(orderInventory); await _dbContext.SaveChangesAsync(); return(orderInventory); }
public async Task <IActionResult> HandleCustomerOrderSubmission(CustomerOrderFormViewModel model) { if (!ModelState.IsValid) { return(RedirectToAction("Index", "Order", new { error = "You done goofed!" })); } var customerForOrder = await _dbContext.Customer.SingleOrDefaultAsync(c => c.Email == model.Email); var newOrder = new Order { CustomerId = customerForOrder.Id, DateCreatedUTC = DateTime.UtcNow }; _dbContext.Order.Add(newOrder); await _dbContext.SaveChangesAsync(); decimal orderTotal = 0; foreach (var item in model.OrderInventory) { var inventoryItem = await _dbContext.Inventory.SingleOrDefaultAsync(i => i.Id == item.InventoryId); var enoughInventoryAvailable = inventoryItem.AmountAvailable >= item.Quantity; if (enoughInventoryAvailable) { item.OrderId = newOrder.Id; _dbContext.OrderInventory.Add(item); await _dbContext.SaveChangesAsync(); orderTotal += (inventoryItem.PricePerUnit * item.Quantity); var newAvailableAmount = inventoryItem.AmountAvailable - item.Quantity; inventoryItem.AmountAvailable = newAvailableAmount; _dbContext.Inventory.Update(inventoryItem); await _dbContext.SaveChangesAsync(); } } var newPayment = new Payment { CustomerId = customerForOrder.Id, OrderId = newOrder.Id, Total = orderTotal }; _dbContext.Payment.Add(newPayment); await _dbContext.SaveChangesAsync(); return(RedirectToAction("Index", "Home")); }
public async Task <Customer> CreateCustomerAsync(Customer customer) { _dbContext.Customer.Add(customer); await _dbContext.SaveChangesAsync(); return(customer); }
public async Task <Inventory> UpdateInventoryAsync(Inventory inventory) { _dbContext.Inventory.Update(inventory); await _dbContext.SaveChangesAsync(); return(inventory); }