// 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); }