Example #1
0
        public ActionResult CreateOrder()
        {
            CheckoutViewModel model = this.Session[CHECKOUT_SESSION_KEY] as CheckoutViewModel;
            if (model == null)
            {
                return RedirectToAction("ShowCart", "Product");
            }
            else
            {
                if (model.CurrentStep != CheckoutStep.PaymentInfo)
                {
                    return Index();
                }
                else
                {
                    using (MyStoreEntities db = new MyStoreEntities())
                    {
                        Order newOrder = new Order();
                        newOrder.Order_Status_Codes = db.Order_Status_Codes.Where(p => p.order_status_description == "New").SingleOrDefault();
                        newOrder.date_order_placed = DateTime.Now;

                        if (model.IsPassword ?? true)
                            newOrder.user_id = WebSecurity.CurrentUserId;
                        else
                            newOrder.email_address = model.UserName;
                        newOrder.receipter_name = model.CustomerName;
                        newOrder.order_address = model.OrderAddress;
                        newOrder.phone_number = model.PhoneNumber;
                        newOrder.order_description = model.OrderDescription;
                        var cartDetailsList = CartHelper.GetCartDetail(this.HttpContext);
                        if (cartDetailsList != null)
                        {
                            foreach (var item in cartDetailsList)
                            {
                                Order_Items newItem = new Order_Items();
                                var inventory = db.Products.Where(p => p.product_id == item.ProductId)
                                                           .Select(p => p.product_quantity)
                                                           .SingleOrDefault();
                                if (inventory < item.TotalQuantity)
                                    newItem.Ref_Order_Item_Status_Codes = db.Ref_Order_Item_Status_Codes.Where(p => p.order_item_status_description == "Out Of Stock")
                                                                                                        .SingleOrDefault();
                                else
                                    newItem.Ref_Order_Item_Status_Codes = db.Ref_Order_Item_Status_Codes.Where(p => p.order_item_status_description == "Normal")
                                                                                                        .SingleOrDefault();
                                newItem.product_id = item.ProductId;
                                newItem.order_item_quantity = item.TotalQuantity;
                                newItem.order_item_amount = item.TotalAmount;
                                newOrder.Order_Items.Add(newItem);
                            }
                        }

                        db.Orders.Add(newOrder);
                        db.SaveChanges();
                    }
                    this.Session[CHECKOUT_SESSION_KEY] = null;
                    Utilities.CartHelper.EmptyCart(this.HttpContext);
                    return RedirectToAction("Index", "Product");
                }
            }
        }