public static double RedeemOrNot(OrderDetailsFormViewModel viewModel, Customer customer, ApplicationDbContext _context) { if (viewModel.RedeemBonus) { return(MemberCard.GetNewTotalCost(GetTotalCost(viewModel.Prices, viewModel.Quantities, viewModel.Count, viewModel.AddToCarts), MemberCard.BonusAmount(customer, _context))); } else { return(GetTotalCost(viewModel.Prices, viewModel.Quantities, viewModel.Count, viewModel.AddToCarts)); } }
public ActionResult ConfirmOrder(OrderDetailsFormViewModel viewModel) { if (viewModel.TotalCost == 0) { viewModel.CartIsEmpty = true; viewModel.OrderDate = DateTime.Now; return(View("OrderReceipt", viewModel)); } var customer = _context.Customers.Find(viewModel.CustomerId); Order order = new Order(Order.GetOrderNumber(viewModel.CustomerId, _context) , Order.CheckpaidOffProperty(viewModel.PaymentType) , viewModel.TotalCost, viewModel.PaymentType, customer, Order.SetOrderStatus(Order.CheckpaidOffProperty(viewModel.PaymentType)), Order.SetPayDate(Order.CheckpaidOffProperty(viewModel.PaymentType))); OrderProducts orderProducts = new OrderProducts(); _context.Orders.Add(order); for (int i = 0; i < viewModel.Count; i++) { if (viewModel.AddToCarts[i] && viewModel.Quantities[i] != 0) { orderProducts.OrderID = order.OrderID; orderProducts.ProductStockID = viewModel.ProductStockIds[i]; orderProducts.Quantity = viewModel.Quantities[i]; _context.OrderProducts.Add(orderProducts); var ProductStockToUpdate = _context.ProductStocks.Single(p => p.ProductStockID == orderProducts.ProductStockID); ProductStockToUpdate = ProductStockToUpdate.SendProductStock(viewModel.Quantities[i], orderProducts.ProductStockID); _context.Set <ProductStock>().AddOrUpdate(ProductStockToUpdate); _context.SaveChanges(); } } MemberCard.UpdateCredits(customer, _context, MemberCard.CalculateCredits(order.TotalCost, customer, _context)); MemberCard.CheckMembershipType(customer.MemberCard, customer.MemberCard.Credits, _context); return(RedirectToAction("Index", "Customers")); }
public ActionResult PayOff(OrderDetailsFormViewModel viewModel) { var Order = _context.Orders.Find(viewModel.OrderId); if (viewModel.PaymentType != PaymentType.none) { Order.PaymentType = viewModel.PaymentType; Order.PaidOff = Order.CheckpaidOffProperty(Order.PaymentType); Order.PaymentDate = DateTime.Now; _context.SaveChanges(); } return(RedirectToAction("PendingOrders", new { id = Order.CustomerId })); }
public ActionResult Create(OrderFormViewModel viewModel) { if (!ModelState.IsValid) { return(View("Create", viewModel)); } var customer = _context.Customers.Find(viewModel.CustomerId); OrderDetailsFormViewModel detailsViewModel = Order.FillOrderDetailsViewModel(viewModel, customer, _context); return(View("OrderReceiptUpdated", detailsViewModel)); }
public OrderDetailsFormViewModel FillOrderDetailsViewModel(Order order, ApplicationDbContext _context) { OrderDetailsFormViewModel detailsViewmodel = new OrderDetailsFormViewModel(); List <OrderProducts> orderproducts = OrderProducts .Where(o => o.OrderID == order.OrderID) .ToList(); List <string> productNames = new List <string>(); List <double> prices = new List <double>(); List <int> quantities = new List <int>(); List <string> ProductStockIds = new List <string>(); foreach (var item in orderproducts) { productNames.Add(item.ProductStock.Product.Name); prices.Add(item.ProductStock.Product.Price); quantities.Add(item.Quantity); ProductStockIds.Add(item.ProductStockID); } for (int i = 0; i < orderproducts.Count; i++) { detailsViewmodel.ProductStockIds.Add(ProductStockIds[i]); detailsViewmodel.Quantities.Add(quantities[i]); detailsViewmodel.AddToCarts.Add(true); detailsViewmodel.Prices.Add(prices[i]); detailsViewmodel.ProductNames.Add(productNames[i]); detailsViewmodel.SubTotal.Add(GetSubTotal(prices[i], quantities[i])); } detailsViewmodel.OrderNumber = GetOrderNumber(Customer.CustomerID, _context); detailsViewmodel.TotalCost = TotalCost; detailsViewmodel.OrderDate = Customer.GetCreationDate(); detailsViewmodel.Count = orderproducts.Count; detailsViewmodel.OrderId = order.OrderID; detailsViewmodel.FirstName = Customer.FirstName; detailsViewmodel.LastName = Customer.LastName; detailsViewmodel.City = Customer.City; detailsViewmodel.Country = Customer.Country; detailsViewmodel.Address = Customer.Address; detailsViewmodel.CustomerId = Customer.CustomerID; detailsViewmodel.PhoneNumber = Customer.PhoneNumber; detailsViewmodel.PostalCode = Customer.PostalCode; detailsViewmodel.Email = Customer.Email; detailsViewmodel.PaymentType = order.PaymentType; return(detailsViewmodel); }
public static OrderDetailsFormViewModel FillOrderDetailsViewModel(OrderFormViewModel viewModel, Customer customer, ApplicationDbContext _context) { OrderDetailsFormViewModel detailsViewmodel = new OrderDetailsFormViewModel(); for (int i = 0; i < viewModel.Count; i++) { detailsViewmodel.ProductStockIds.Add(viewModel.ProductStockIds[i]); detailsViewmodel.Quantities.Add(viewModel.Quantities[i]); detailsViewmodel.AddToCarts.Add(viewModel.AddToCarts[i]); detailsViewmodel.Prices.Add(viewModel.Prices[i]); detailsViewmodel.ProductNames.Add(viewModel.ProductNames[i]); detailsViewmodel.SubTotal.Add(GetSubTotal(viewModel.Prices[i], viewModel.Quantities[i])); } detailsViewmodel.OrderNumber = GetOrderNumber(customer.CustomerID, _context); detailsViewmodel.TotalCost = GetTotalCost(viewModel.Prices, viewModel.Quantities, viewModel.Count, viewModel.AddToCarts); detailsViewmodel.OrderDate = customer.GetCreationDate(); detailsViewmodel.Count = viewModel.Count; detailsViewmodel.OrderId = viewModel.OrderId; detailsViewmodel.FirstName = customer.FirstName; detailsViewmodel.LastName = customer.LastName; detailsViewmodel.City = customer.City; detailsViewmodel.Country = customer.Country; detailsViewmodel.Address = customer.Address; detailsViewmodel.CustomerId = customer.CustomerID; detailsViewmodel.PhoneNumber = customer.PhoneNumber; detailsViewmodel.PostalCode = customer.PostalCode; detailsViewmodel.Email = customer.Email; detailsViewmodel.PaymentType = PaymentType.none; // TODO detailsViewmodel.IfBonusIsApplicable = MemberCard.CheckBonus(detailsViewmodel.TotalCost, customer, _context); detailsViewmodel.CartIsEmpty = false; return(detailsViewmodel); }