Ejemplo n.º 1
0
        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));
            }
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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));
        }