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