public IHttpResponse Create() { var orders = Db.Orders.Where(o => o.Status == Status.Active).ToList(); orders.ForEach(o => o.Status = Status.Completed); var receipt = new Receipt { Cashier = Db.Users.Single(c => c.Username.Equals(User.Username)), IssuedOn = DateTime.UtcNow }; Db.Orders.UpdateRange(orders); Db.SaveChanges(); Db.Receipts.Add(receipt); Db.SaveChanges(); var receiptOrder = new ReceiptOrder { Orders = orders, Receipt = receipt }; Db.ReceiptOrders.Add(receiptOrder); Db.SaveChanges(); var userReceipt = new UserReceipt { Receipt = receipt, Cashier = receipt.Cashier }; Db.UserReceipts.Add(userReceipt); Db.SaveChanges(); var orderViewModels = receiptOrder.Orders .Select(o => new OrderViewModel { Id = o.Id, Product = o.Product.Name, Quantity = o.Quantity, Price = o.Product.Price }) .ToList(); var receiptViewModel = new ReceiptDetailsViewModel { Id = receipt.Id, Orders = orderViewModels, IssuedOn = receipt.IssuedOn.ToString("dd/MM/yyyy"), Cashier = receipt.Cashier.Username }; var total = orderViewModels.Sum(ovm => ovm.Quantity * ovm.Price); receiptViewModel.Total = total; return(View("/receipts/details", receiptViewModel)); }
public UserReceipt CreateUserReceipt(Receipt receipt) { var userReceipt = new UserReceipt { Receipt = receipt, Cashier = receipt.Cashier }; context.UserReceipts.Add(userReceipt); context.SaveChanges(); return(userReceipt); }