public async Task <ActionResult <string> > HandleAction(string orderID, string action) { string response = "default"; PaymentViewModel paymentViewModel = new PaymentViewModel(); paymentViewModel.ActiveOrder = new OrderViewModel(); paymentViewModel.ActiveOrder.Order = _context.Orders.Where(i => i.ID.ToString() == orderID).First(); if (action == "Edit") { response = "Edit"; } else if (action == "Delete") { paymentViewModel.ActiveOrder.Order.Status = "Cancelled"; _context.Orders.Update(paymentViewModel.ActiveOrder.Order); await _context.SaveChangesAsync(); response = "Deleted"; } else if (action == "Pay") { paymentViewModel.ActiveOrder.Order.IsPaid = true; paymentViewModel.ActiveOrder.Order.Status = "Complete"; paymentViewModel.ActiveOrder.Order.OrderStartTime = DateTime.UtcNow; Payment newPayment = new Payment { ID = Guid.NewGuid(), Name = paymentViewModel.ActiveOrder.Order.Name, Description = paymentViewModel.ActiveOrder.Order.Description, DateCreated = DateTime.UtcNow, Method = "Card", EmployeeName = paymentViewModel.ActiveOrder.Order.Employee, CustomerName = paymentViewModel.ActiveOrder.Order.CustomerName, Amount = paymentViewModel.ActiveOrder.Order.AmountDue }; PaymentJOrder paymentOrder = new PaymentJOrder { ID = Guid.NewGuid(), OrderID = Guid.Parse(orderID), PaymentID = newPayment.ID, Order = paymentViewModel.ActiveOrder.Order, Payment = newPayment }; newPayment.PaymentOrder = paymentOrder; paymentViewModel.ActiveOrder.Order.PaymentOrder = paymentOrder; var newReceipt = new Receipt { ID = Guid.NewGuid(), Name = "Receipt for " + newPayment.CustomerName, Description = newPayment.Description, DateCreated = DateTime.UtcNow, CustomerName = newPayment.CustomerName, EmployeeName = newPayment.EmployeeName, CardNumber = "4916239779719037", MerchantID = "654asd-fdacd2-566ddc-5dv2z5", Total = newPayment.Amount }; var orderItem = _context.OrderItems.Where(i => i.OrderID == paymentViewModel.ActiveOrder.Order.ID); var orderMenu = _context.OrderMenus.Where(i => i.OrderID == paymentViewModel.ActiveOrder.Order.ID); var items = await _context.Items.ToListAsync(); var menus = await _context.Menus.ToListAsync(); var itemToAdd = new List <Item>(); string orderDetail = ""; foreach (OrderJItem oj in orderItem) { foreach (Item item in items) { if (item.ID == oj.ItemID) { var amountDue = oj.ItemsSold * item.Price; orderDetail = orderDetail + item.Name + ":" + oj.ItemsSold + ":" + amountDue + ","; } } } foreach (OrderJMenu om in orderMenu) { foreach (Menu menu in menus) { if (menu.ID == om.MenuID) { var amountDue = om.MenusSold * menu.Price; orderDetail = orderDetail + menu.Name + ":" + om.MenusSold + ":" + amountDue + ","; } } } var newPaymentReceipt = new PaymentJReceipt { ID = Guid.NewGuid(), PaymentID = newPayment.ID, ReceiptID = newReceipt.ID, Payment = newPayment, Receipt = newReceipt }; newReceipt.OrderDetail = orderDetail; newReceipt.PaymentReceipt = newPaymentReceipt; _context.Receipts.Add(newReceipt); _context.PaymentReceipt.Add(newPaymentReceipt); _context.Payment.Add(newPayment); _context.PaymentOrder.Add(paymentOrder); _context.Orders.Update(paymentViewModel.ActiveOrder.Order); await _context.SaveChangesAsync(); response = "Paid"; } return(response); }
public async Task <IActionResult> Index(string orderID = null) { ReceiptViewModel receiptViewModel = new ReceiptViewModel(); if (orderID != null) { Payment currentPayment = _context.Payment.Where(i => i.PaymentOrder.OrderID.ToString() == orderID).First(); PaymentJReceipt paymentReceipt = _context.PaymentReceipt.Where(i => i.PaymentID == currentPayment.ID).FirstOrDefault(); if (paymentReceipt == null) { Order currentOrder = _context.Orders.Where(i => i.ID.ToString() == orderID).First(); var newReceipt = new Receipt { ID = Guid.NewGuid(), Name = "Receipt for " + currentPayment.CustomerName, Description = currentPayment.Description, DateCreated = DateTime.UtcNow, CustomerName = currentPayment.CustomerName, EmployeeName = currentPayment.EmployeeName, CardNumber = "4916239779719037", MerchantID = "654asd-fdacd2-566ddc-5dv2z5", Total = currentPayment.Amount }; var orderItem = _context.OrderItems.Where(i => i.OrderID == currentOrder.ID); var orderMenu = _context.OrderMenus.Where(i => i.OrderID == currentOrder.ID); var items = await _context.Items.ToListAsync(); var menus = await _context.Menus.ToListAsync(); var itemToAdd = new List <Item>(); string orderDetail = ""; foreach (OrderJItem oj in orderItem) { foreach (Item item in items) { if (item.ID == oj.ItemID) { var amountDue = oj.ItemsSold * item.Price; orderDetail = orderDetail + item.Name + ":" + oj.ItemsSold + ":" + amountDue + ","; } } } foreach (OrderJMenu om in orderMenu) { foreach (Menu menu in menus) { if (menu.ID == om.MenuID) { var amountDue = om.MenusSold * menu.Price; orderDetail = orderDetail + menu.Name + ":" + om.MenusSold + ":" + amountDue + ","; } } } var newPaymentReceipt = new PaymentJReceipt { ID = Guid.NewGuid(), PaymentID = currentPayment.ID, ReceiptID = newReceipt.ID, Payment = currentPayment, Receipt = newReceipt }; newReceipt.OrderDetail = orderDetail; newReceipt.PaymentReceipt = newPaymentReceipt; receiptViewModel.CurrentReceipt = newReceipt; _context.Receipts.Add(newReceipt); _context.PaymentReceipt.Add(newPaymentReceipt); await _context.SaveChangesAsync(); } else { Receipt currentReceipt = _context.Receipts.Where(i => i.PaymentReceipt.PaymentID == currentPayment.ID).First(); receiptViewModel.CurrentReceipt = currentReceipt; } receiptViewModel.ActiveOrderID = orderID; } receiptViewModel.Receipts = await _context.Receipts .Include(i => i.PaymentReceipt) .ThenInclude(i => i.Payment) .ThenInclude(i => i.PaymentOrder) .ThenInclude(i => i.Order) .ToListAsync(); return(View(receiptViewModel)); }