public IActionResult AssembleCart() { //logged in if (HttpContext.Session.GetString("username") != null) { List<Product> productsInCart = cv.GetProductsInCart(HttpContext.Session.GetString("username")); //empty cart if (productsInCart.Count == 0) ViewData["Message"] = "Your cart is empty."; //something in cart else { List<Product> distinctProductsInCart = productsInCart.GroupBy(x => x.ProductName).Select(g => g.First()).ToList<Product>(); var iter = from product in productsInCart group product by product.ProductName into productGroup select productGroup; List<int> quantity = new List<int>(); foreach (var grp in iter) quantity.Add(grp.Count()); double cartTotalPrice = 0; for (int i = 0; i < quantity.Count(); i++) { cartTotalPrice += distinctProductsInCart[i].UnitPrice * quantity[i]; } ViewData["CartTotalPrice"] = cartTotalPrice; ViewData["ProductData"] = distinctProductsInCart; ViewData["ProductQty"] = quantity; ViewData["username"] = HttpContext.Session.GetString("username"); } return View("index"); } //not logged in else { //empty cart string allItems = HttpContext.Session.GetString("tempCart"); if (String.IsNullOrEmpty(allItems)) { ViewData["Message"] = "Your cart is empty."; } //something in cart else { string[] items = allItems.Split(";"); List<Product> cartItems = new List<Product>(); foreach (string item in items) { Product product = cv.GetProd(item); cartItems.Add(product); } List<Product> distinctProductsInCart = cartItems.GroupBy(x => x.ProductName).Select(g => g.First()).ToList<Product>(); var iter = from product in cartItems group product by product.ProductName into productGroup select productGroup; List<int> quantity = new List<int>(); foreach (var grp in iter) quantity.Add(grp.Count()); double cartTotalPrice = 0; for (int i = 0; i < quantity.Count(); i++) { cartTotalPrice += distinctProductsInCart[i].UnitPrice * quantity[i]; } ViewData["CartTotalPrice"] = cartTotalPrice; ViewData["ProductData"] = distinctProductsInCart; ViewData["ProductQty"] = quantity; } return View("index"); } }
public IActionResult Index(string id) { //initiate session for not logged in users if (HttpContext.Session.GetString("tempCart") == null) { HttpContext.Session.SetString("tempCart", ""); } //search view if (!String.IsNullOrEmpty(id)) { string searchString = id.ToLower(); List <Product> productsNew = new List <Product>(); var products = cv.Listofproduct(); var products2 = products.Where(p => p.ProductName.ToLower().Contains(searchString) || p.ProductDescription.ToLower().Contains(searchString)); foreach (Product product in products2) { productsNew.Add(product); } ViewData["ProductData"] = productsNew; ViewData["session"] = HttpContext.Session.GetString("username"); string username1 = (string)ViewData["session"]; Customer customer1 = cv.GetCust(username1); if (customer1 != null) { ViewData["CartQty"] = (cv.GetQtyInSessionCart(username1)).ToString(); ViewData["customername"] = customer1.FirstName; return(View()); } ViewData["CartQty"] = HttpContext.Session.GetString("cartQty"); return(View()); } ViewData["session"] = HttpContext.Session.GetString("username"); string username = (string)ViewData["session"]; Customer customer = cv.GetCust(username); if (customer != null) { ViewData["customername"] = customer.FirstName; ViewData["ProductData"] = cv.Listofproduct(); string tempCart = HttpContext.Session.GetString("tempCart"); if (tempCart != "") { string[] tempProductList = tempCart.Split(";"); List <Product> products = new List <Product>(); foreach (string tempProd in tempProductList) { Product product = cv.GetProd(tempProd); products.Add(product); } foreach (Product p in products) { ShoppingCart cart1 = cv.GetCart(username, p.ProductName); if (cart1 == null) { cv.CreateCart(username, p.ProductName); } else { cv.IncreaseProductQty(cart1); } } } HttpContext.Session.Remove("tempCart"); ViewData["CartQty"] = (cv.GetQtyInSessionCart(username)).ToString(); return(View()); } ViewData["ProductData"] = cv.Listofproduct(); ViewData["CartQty"] = HttpContext.Session.GetString("cartQty"); return(View()); }