public static IList<ShoppingCartViewModel> GetCartDetail(ViewModels.ShoppingCart cart) { //ViewModels.ShoppingCart cart = ViewModels.ShoppingCart.GetCart(this.HttpContext); using (MyStoreEntities db = new MyStoreEntities()) { foreach (var item in cart.CartDetails) { var query = db.Products.Where(p => p.product_id == item.ProductId).Select(p => new { p.product_description, p.product_image, p.product_name, p.product_price }).Single(); if (query != null) { item.ProductDescription = query.product_description; item.ProductImage = query.product_image; item.Price = query.product_price ?? 1; item.ProductName = query.product_name; } } } return cart.CartDetails; }
public static IList<Menu> BuildMenu() { using (MyStoreEntities dbContext = new MyStoreEntities()) { var query1 = from parent in dbContext.Ref_Product_Type join child in dbContext.Ref_Product_Type on parent.product_type_id equals child.parent_product_type_id select new { ParentId = parent.product_type_id, ParentName = parent.product_type_description_vn, ChildId = (int?)child.product_type_id, ChildName = child.product_type_description_vn }; var query2 = from menu in dbContext.Ref_Product_Type where menu.parent_product_type_id == null select new { ParentId = menu.product_type_id, ParentName = menu.product_type_description_vn, ChildId = menu.parent_product_type_id, ChildName = menu.product_type_description_vn }; var queryResult = query1.Union(query2) .ToList(); if (queryResult != null && queryResult.Count > 0) { IList<Menu> result = new List<Menu>(); foreach (var menu in queryResult) { Menu menuItem = null; if (!result.Any(p => p.MenuId == menu.ParentId)) { menuItem = new Menu() { MenuId = menu.ParentId, MenuDesc = menu.ParentName }; result.Add(menuItem); } else { menuItem = result.Where(p => p.MenuId == menu.ParentId) .SingleOrDefault(); } if (menu.ChildId != null) { if (menuItem.ChildMenu == null) menuItem.ChildMenu = new List<Menu>(); if (!menuItem.ChildMenu.Any(p => p.MenuId == (menu.ChildId ?? 0))) { menuItem.ChildMenu.Add(new Menu() { MenuId = menu.ChildId ?? 0, MenuDesc = menu.ChildName }); } } } return result; } return null; } }
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"); } } }