public async Task <IActionResult> OnUpdateRating(string productName, string userId, string value)
        {
            var product = await _productRepository.GetProductByName(productName);

            if (userId != null)
            {
                //var user = await _context.Users.FirstOrDefaultAsync(mbox => mbox.Id == userId);
                var user = await _userRepository.GetUserById(userId);

                var findMark = await _markRepository.GetMarkByUserAndProduct(user, product);

                if (findMark == null)
                {
                    Mark mark = new Mark
                    {
                        User      = user,
                        Product   = product,
                        TotalMark = Int64.Parse(value)
                    };
                    _markRepository.InsertMark(mark);
                }
            }
            var rating = await _markRepository.GetMarkWhereId(product.ProductId);

            double ratingValue = 0;

            foreach (var variable in rating)
            {
                ratingValue += variable.TotalMark;
            }
            if (rating.Count() != 0)
            {
                ratingValue /= rating.Count();
            }

            int             fullStars       = (int)Math.Truncate(ratingValue);
            RatingViewModel ratingViewModel = new RatingViewModel
            {
                MarkCount   = rating.Count(),
                FullStars   = fullStars,
                HalfStar    = (ratingValue - fullStars) >= 0.5,
                EmptyStart  = (int)Math.Round((5 - ratingValue)),
                TotalRating = ratingValue
            };

            return(PartialView("_DisplayRatingPartial", ratingViewModel));
        }
 private Mark SaveMark(Mark _mark)
 {
     _markRepository.InsertMark(_mark);
     return(null);
 }