コード例 #1
0
 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));
     }
 }
コード例 #2
0
        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"));
        }
コード例 #3
0
        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 }));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }