Exemple #1
0
        // GET: Customer/ShoppingCarts
        // Geting the shopping cart items.
        public async Task <IActionResult> Index()
        {
            // Creating an object of Orderheader and initializing it to zero, becouase
            // we will be adding OrderHeader.OrderTotal previous value to a new value. so if no previous value then it will give error
            OrderHeader orderHeader = new OrderHeader();

            // Initialized to zero, to avoid error
            orderHeader.OrderTotal = 0;
            OrderHeaderShoppingCartViewModel detailCart = new OrderHeaderShoppingCartViewModel()
            {
                OrderHeader = orderHeader
            };

            // Initialized order total to Zero.
            orderHeader.OrderTotal = 0;

            // Getting the user Identiy  to know its User Id
            var claimsIdentity = (ClaimsIdentity)this.User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);

            // Retreiving cartfrom Db which is added by this user
            // and assiging it to the detailCard Shopping cart List
            detailCart.ShoppingCart = await _context.shoppingCart.Where(c => c.AppliUserId == claim.Value).ToListAsync();

            if (detailCart.ShoppingCart != null)
            {
                // Adding the Order Total
                // And since the Menu Item is not mapped we can not use the Include statement above and will not be able to navigate to
                // Include Menu Item so we have to assign manually MenuItem object to the detailCart.Shopping Cart List
                // We know we have the menu Item Id so we will  get Menu Item Object for each of that Id and we also have MenuItem Object
                // but we cannot not navigate through it.
                foreach (var item in detailCart.ShoppingCart)
                {
                    //since we have not mappped the menuItem we have to manually add each MenuItem details to the Shopping cart list object
                    // Creating the Menu Item object
                    var menuItem = await _context.MenuItem.Where(m => m.Id == item.MenuItemId).FirstAsync();

                    // Important thing to note he is that we are change the menuItem itself through for each loop.
                    // Assigning and changing the MenuItem
                    item.menuItem = menuItem;
                    // now adding details of menu Item.
                    detailCart.OrderHeader.OrderTotal = detailCart.OrderHeader.OrderTotal + item.menuItem.Price * item.Count;
                }
                // At this time coupon code is not yet applied
                return(View(detailCart));
            }

            return(View());

            // You may be thinking why we are not mapping the MenuItem  to advoid the manual addition.
            // You can do that but then when you want to add menu Item to the List, it will give error since the incoming Object will
            // not have Id of Category or subcategory. If you map it, then the only solution may be to retriview the MenuItem Object for that Id
            // and then add that object to Database.
        }
        public IActionResult Summary()
        {
            CartDetail = new OrderHeaderShoppingCartViewModel
            {
                OrderHeader = new Models.OrderHeader()
            };
            //Get USer Id :
            var claimIdentity = (ClaimsIdentity)User.Identity;
            var claim         = claimIdentity.FindFirst(ClaimTypes.NameIdentifier);
            var userId        = claim.Value;

            //Get User Info :
            var appUser = db.ApplicationUser.SingleOrDefault(x => x.Id == userId);

            CartDetail.OrderHeader.PickUpName  = appUser.NameOfUser;
            CartDetail.OrderHeader.PhoneNumber = appUser.PhoneNumber;
            CartDetail.OrderHeader.PickUpDate  = DateTime.Now;



            var shoppingCarts = db.ShoppingCarts.Where(x => x.ApplicationUserId == userId);

            if (shoppingCarts != null)
            {
                CartDetail.ShoppingCarts = shoppingCarts.ToList();
            }

            foreach (var item in CartDetail.ShoppingCarts)
            {
                item.MenuItem = db.MenuItems.FirstOrDefault(x => x.Id == item.MenuItemId);

                var orderTotal = item.MenuItem.Price * item.Count;
                CartDetail.OrderHeader.OrderTotal += orderTotal;
            }

            CartDetail.OrderHeader.OrderTotalOriginal = CartDetail.OrderHeader.OrderTotal;

            if (HttpContext.Session.GetString(SD.ssCouponCode) != null)
            {
                CartDetail.OrderHeader.CouponCode = HttpContext.Session.GetString(SD.ssCouponCode);
                var couponInDb = db.Coupons.SingleOrDefault(x => x.Name.ToLower() == CartDetail.OrderHeader.CouponCode.ToLower());

                CartDetail.OrderHeader.OrderTotal = SD.DiscountPrice(couponInDb, CartDetail.OrderHeader.OrderTotalOriginal);
            }

            return(View(CartDetail));
        }
        public IActionResult Index()
        {
            CartDetail = new OrderHeaderShoppingCartViewModel
            {
                OrderHeader = new Models.OrderHeader()
            };
            //Get USer Id :
            var claimIdentity = (ClaimsIdentity)User.Identity;
            var claim         = claimIdentity.FindFirst(ClaimTypes.NameIdentifier);
            var userId        = claim.Value;


            var shoppingCarts = db.ShoppingCarts.Where(x => x.ApplicationUserId == userId);

            if (shoppingCarts != null)
            {
                CartDetail.ShoppingCarts = shoppingCarts.ToList();
            }

            foreach (var item in CartDetail.ShoppingCarts)
            {
                item.MenuItem = db.MenuItems.FirstOrDefault(x => x.Id == item.MenuItemId);

                var orderTotal = item.MenuItem.Price * item.Count;
                CartDetail.OrderHeader.OrderTotal += orderTotal;

                item.MenuItem.Description = SD.ConvertToRawHtml(item.MenuItem.Description);
            }

            CartDetail.OrderHeader.OrderTotalOriginal = CartDetail.OrderHeader.OrderTotal;

            if (HttpContext.Session.GetString(SD.ssCouponCode) != null)
            {
                CartDetail.OrderHeader.CouponCode = HttpContext.Session.GetString(SD.ssCouponCode);
                var couponInDb = db.Coupons.SingleOrDefault(x => x.Name.ToLower() == CartDetail.OrderHeader.CouponCode.ToLower());

                CartDetail.OrderHeader.OrderTotal = SD.DiscountPrice(couponInDb, CartDetail.OrderHeader.OrderTotalOriginal);
            }

            return(View(CartDetail));
            ////Get Current User Id:
            //var claimsIdentity = (ClaimsIdentity)User.Identity;
            //var claims = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);
            //var userId = claims.Value;
            //OrderHeaderShoppingCartViewModel vm = new OrderHeaderShoppingCartViewModel
            //{
            //    OrderHeader = new Models.OrderHeader()
            //};
            //var shoppingCart = db.ShoppingCarts.Where(x => x.ApplicationUserId == userId).ToList();
            //if (shoppingCart != null)
            //{
            //    vm.ShoppingCarts = shoppingCart;
            //    vm.OrderHeader.OrderTotal = 0;

            //    foreach (var item in shoppingCart)
            //    {
            //        item.MenuItem = db.MenuItems.SingleOrDefault(x => x.Id == item.MenuItemId);

            //        vm.OrderHeader.OrderTotal = item.Count * item.MenuItem.Price;
            //    }
            //    vm.OrderHeader.OrderTotalOriginal = vm.OrderHeader.OrderTotal;
            //}
            //return View(vm);
        }