public async Task <RatingVm> PostRating(RatingCreateRequest request)
        {
            var    claimsIdentity = User.Identity as ClaimsIdentity;
            string userId         = claimsIdentity.FindFirst("sub").Value;
            var    rating         = new RatingProduct
            {
                TotalStar         = request.TotalStar,
                Comment           = request.Comment,
                Date              = DateTime.Now,
                ApplicationUserId = userId,
                IDProduct         = request.IDProduct
            };

            _context.RatingProducts.Add(rating);
            await _context.SaveChangesAsync();

            var ratingVm = new RatingVm()
            {
                IDRating  = rating.IDRating,
                TotalStar = rating.TotalStar,
                Comment   = rating.Comment,
                Date      = rating.Date,
                UserId    = rating.ApplicationUserId,
                IDProduct = rating.IDProduct
            };

            return(ratingVm);
        }
        public async Task <RatingProduct> CreateAsync(int IDProduct, string UserId, int TotalStar)
        {
            RatingProduct rate = new RatingProduct {
                IDProduct = IDProduct, ApplicationUserId = UserId, TotalStar = TotalStar
            };
            var result = await _context.RatingProducts.Where(r => r.ApplicationUserId == UserId && r.IDProduct == IDProduct).FirstOrDefaultAsync();

            if (result != null)
            {
                result.TotalStar = rate.TotalStar;
                await _context.SaveChangesAsync();
            }
            else
            {
                _context.Add(rate);
                await _context.SaveChangesAsync();
            }
            return(rate);
        }