public async Task <IActionResult> Details(MenuItemsAndQuantity CartItemObject) { if (!ModelState.IsValid) { List <MenuItemsAndQuantity> lstShoppingCart = HttpContext.Session.Get <List <MenuItemsAndQuantity> >("ssShoppingCart"); if (lstShoppingCart == null) { lstShoppingCart = new List <MenuItemsAndQuantity>(); } foreach (var a in lstShoppingCart) { if (a.Item.Id == CartItemObject.Item.Id) { a.Quantity += CartItemObject.Quantity; HttpContext.Session.Set(SD.ssShoppingCart, lstShoppingCart); return(RedirectToAction("Index")); } } lstShoppingCart.Add(CartItemObject); HttpContext.Session.Set(SD.ssShoppingCart, lstShoppingCart); return(RedirectToAction("Index")); } else { var menuItemFromDb = await _db.MenuItem.Include(m => m.Category).Include(m => m.SubCategory).Where(m => m.Id == CartItemObject.Item.Id).FirstOrDefaultAsync(); MenuItemsAndQuantity cartObj = new MenuItemsAndQuantity() { Item = menuItemFromDb, Quantity = menuItemFromDb.Id }; return(View(cartObj)); } }
public IActionResult CreateRating(MenuItemsAndQuantity temp) { var userId = _userService.GetUserId(); Rating rating = new Rating() { UserId = userId, PublishedDate = temp.CustomerRating.PublishedDate, RatingStar = temp.CustomerRating.RatingStar, Comment = temp.CustomerRating.Comment, MenuItemId = temp.CustomerRating.MenuItemId }; _unitOfWork.RatingRepository.Create(rating); _unitOfWork.SaveChanges(); return(LocalRedirect("/Customer/Home/Details/" + temp.CustomerRating.MenuItemId)); }
public async Task <IActionResult> Details(int id, int starNumber = 0, int ratingPage = 1) { var userId = _userService.GetUserId(); var menuItemFromDb = await _db.MenuItem.Include(m => m.Category).Include(m => m.SubCategory).Where(m => m.Id == id).FirstOrDefaultAsync(); var listStar = _db.Ratings.Where(a => a.MenuItemId == id).Include(a => a.ApplicationUser).OrderByDescending(p => p.Id).ToList(); StringBuilder param = new StringBuilder(); var listRatingByStarNumber = listStar.ToList(); if (starNumber == 0) { listRatingByStarNumber = listStar.ToList(); } else if (starNumber > 0) { listRatingByStarNumber = listRatingByStarNumber.Where(a => a.RatingStar == starNumber).ToList(); } param.Append("/Customer/Home/Details/" + id + "?starNumber=" + starNumber + "&ratingPage=:"); FavoritedProduct favoritedProduct = new FavoritedProduct(); if (userId != null) { var favor = _db.FavoritedProducts.FirstOrDefault(a => a.ItemId == id && a.UserId == userId); if (favor != null) { favoritedProduct.ItemId = favor.ItemId; favoritedProduct.UserId = favor.UserId; } } ProductStar productStar = new ProductStar(); if (listStar.Count > 0) { productStar.totalOneStar = listStar.Where(a => a.RatingStar == 1).Count(); productStar.totalTwoStar = listStar.Where(a => a.RatingStar == 2).Count(); productStar.totalThreeStar = listStar.Where(a => a.RatingStar == 3).Count(); productStar.totalFourStar = listStar.Where(a => a.RatingStar == 4).Count(); productStar.totalFiveStar = listStar.Where(a => a.RatingStar == 5).Count(); productStar.averageStar = Math.Round(listStar.Average(a => a.RatingStar), 1); } else { productStar.totalOneStar = 0; productStar.totalTwoStar = 0; productStar.totalThreeStar = 0; productStar.totalFourStar = 0; productStar.totalFiveStar = 0; productStar.averageStar = 0; } //Convert Enum Color -> String ViewBag.itemColor = Enum.GetName(typeof(MenuItem.EColor), Convert.ToInt32(menuItemFromDb.Color)); var highLimitPrice = menuItemFromDb.Price + (menuItemFromDb.Price * 25 / 100); var lowLimitPrice = menuItemFromDb.Price - (menuItemFromDb.Price * 25 / 100); var similarPriceProducts = _db.MenuItem.Take(4); MenuItemsAndQuantity menuItemsAndQuantity = new MenuItemsAndQuantity() { Item = menuItemFromDb, Quantity = 1, News = await _db.News.Where(n => n.MenuItemId == id).FirstOrDefaultAsync(), SimilarProducts = similarPriceProducts.ToList(), ExistedRatings = listRatingByStarNumber.Skip((ratingPage - 1) * PageSize).Take(PageSize).ToList(), ProductStar = productStar, FavoritedProduct = favoritedProduct }; var count = listRatingByStarNumber.Count(); menuItemsAndQuantity.PagingInfo = new PagingInfo() { CurrentPage = ratingPage, ItemsPerPage = PageSize, TotalItem = count, urlParam = param.ToString() }; ViewBag.starNumber = starNumber; ViewBag.pageSize = this.PageSize; return(View(menuItemsAndQuantity)); }