Beispiel #1
0
        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());
        }