コード例 #1
0
        public async Task AddRating(RatingCreateRequest request)
        {
            var categoryRatings = request.CategoryRatings;
            var categories      = await _categoryRepository.GetByFilterAsync(c =>
                                                                             categoryRatings.Select(cr => cr.CategoryId).Contains(c.Id));

            var scoreWeights = categoryRatings.Join(categories, cr => cr.CategoryId, c => c.Id, (cr, c) => new ScoreWeight {
                Score = cr.Score, Weight = c.Weight
            }).ToList();
            float totalScore = GetTotalScore(scoreWeights);

            var rating = await _ratingRepository
                         .GetFirstByFilterAsync(r =>
                                                r.PlayerProfileId == request.PlayerProfileId &&
                                                r.ItemId == request.ItemId);

            if (rating == null)
            {
                rating = new Rating
                {
                    ItemId          = request.ItemId,
                    PlayerProfileId = request.PlayerProfileId,
                    TotalScore      = totalScore
                };
                await _ratingRepository.AddAsync(rating);
            }
            else
            {
                rating.TotalScore = totalScore;
                await _ratingRepository.UpdateAsync(rating);
            }
            await AddCategoryRatings(categoryRatings, rating.Id);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        public async Task <ActionResult> PostRating(RatingCreateRequest ratingCreateRequest)
        {
            var transaction = await _context.Database.BeginTransactionAsync();

            var rating = new Rating
            {
                UserId      = ratingCreateRequest.UserId,
                ProductId   = ratingCreateRequest.ProductId,
                Star        = ratingCreateRequest.Star,
                CreatedDate = DateTime.Now,
            };

            try
            {
                await _context.Ratings.AddAsync(rating);

                await _context.SaveChangesAsync();

                var product = await _context.Products.FirstOrDefaultAsync(x => x.ProductId == ratingCreateRequest.ProductId);

                var listrating = await _context.Ratings.Where(x => x.ProductId == ratingCreateRequest.ProductId).ToListAsync();

                product.StarRating = listrating.Sum(x => x.Star) / listrating.Count;

                await _context.SaveChangesAsync();

                await transaction.CommitAsync();
            }
            catch (Exception)
            { }

            return(Accepted());
        }
コード例 #4
0
        public async Task <RatingVm> PostRating(RatingCreateRequest request)
        {
            var rating = new EcommerceShop.Application.Models.Rating()
            {
                RateValue = request.RateValue,
                FeedBack  = request.FeedBack,
                UserId    = request.UserId,
                ProductId = request.ProductId
            };
            var result = await _context.Ratings.Where(r => r.UserId == request.UserId && r.ProductId == request.ProductId).FirstOrDefaultAsync();

            if (result != null)
            {
                return(new RatingVm());
            }
            else
            {
                _context.Ratings.Add(rating);
                await _context.SaveChangesAsync();
            }

            var ratingVm = new RatingVm()
            {
                RatingId  = rating.RatingId,
                RateValue = rating.RateValue,
                FeedBack  = rating.FeedBack,
                UserId    = rating.UserId,
                ProductId = rating.ProductId
            };

            return(ratingVm);
        }
コード例 #5
0
        public async Task <bool> Rating(RatingCreateRequest rateRequest)
        {
            var client = _httpClientFactory.CreateClient();

            var json = JsonConvert.SerializeObject(rateRequest);

            var data = new StringContent(json, Encoding.UTF8, "application/json");

            var res = await client.PostAsync(_configuration.GetValue <string>("Backend") + "Rating", data);

            res.EnsureSuccessStatusCode();

            if (res.ReasonPhrase.Equals("Created"))
            {
                return(true);
            }
            else
            {
                return(false);
            }

/*            var result = await res.Content.ReadAsAsync<bool>();
 *
 *          return result;*/
        }
コード例 #6
0
        public async Task <IActionResult> Create(RatingCreateRequest rating)
        {
            string userToken = await HttpContext.GetTokenAsync("access_token");

            await _ratingClient.PostRating(userToken, rating);

            return(RedirectToAction("Details", "Product", new { id = rating.IDProduct }));
        }
コード例 #7
0
        public async Task <RatingCreateRequest> CreateRating(RatingCreateRequest ratingCreateRequest)
        {
            HttpContent httpContent = new StringContent(JsonConvert.SerializeObject(ratingCreateRequest), Encoding.UTF8, "application/json");
            var         response    = await _httpClient.PostAsync("api/Ratings", httpContent);

            response.EnsureSuccessStatusCode();

            return(await response.Content.ReadAsAsync <RatingCreateRequest>());
        }
コード例 #8
0
        public async Task <RatingVm> PostRating(string userToken, RatingCreateRequest request)
        {
            // 2 dòng dưới dùng khi muốn chèn access token vào httpclient đề lấy api đã dc bảo mật
            _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", userToken);
            var response = await _client.PostAsync("api/rating/", JsonContent.Create(request));

            response.EnsureSuccessStatusCode();
            return(await response.Content.ReadAsAsync <RatingVm>());
        }
コード例 #9
0
        public async Task <IActionResult> CreateRating(int id, int star)
        {
            var    claimIdentity       = User.Identity as ClaimsIdentity;
            string userid              = claimIdentity.FindFirst(ClaimTypes.NameIdentifier).Value;
            var    ratingCreateRequest = new RatingCreateRequest
            {
                UserId    = userid,
                ProductId = id,
                Star      = star,
            };
            await _ratingApiClient.CreateRating(ratingCreateRequest);

            return(RedirectToAction("Detail", "Product", new { id }));
        }
コード例 #10
0
        public async Task <ActionResult <RatingVm> > PostRating(RatingCreateRequest request)
        {
            var    claimsIdentity = User.Identity as ClaimsIdentity;
            string userId         = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier).Value;

            request.UserId = userId;
            var rating = await _ratingService.PostRating(request);

            if (rating.RatingId == 0)
            {
                return(NoContent());
            }
            return(Ok(rating));
        }
コード例 #11
0
        public async Task <ActionResult> Rating(RatingCreateRequest ratingCreateRequest)
        {
            var product = await _context.Products.FindAsync(ratingCreateRequest.ProductId);

            if (product == null)
            {
                return(NotFound());
            }

            var Rating = await _context.UserRatings
                         .Where(r => r.ProductId == ratingCreateRequest.ProductId && r.UserId == _userUtility.GetUserId())
                         .ToListAsync();

            if (Rating.Count() == 0)
            {
                _context.UserRatings.Add(new UserRating
                {
                    UserId    = _userUtility.GetUserId(),
                    ProductId = ratingCreateRequest.ProductId,
                    Rating    = ratingCreateRequest.Rating
                });
                await _context.SaveChangesAsync();
            }
            else
            {
                Rating[0].Rating = ratingCreateRequest.Rating;
                await _context.SaveChangesAsync();
            }

            var ListRating = await _context.UserRatings
                             .Where(r => r.ProductId == ratingCreateRequest.ProductId)
                             .Select(x => new UserRating
            {
                Rating = x.Rating
            })
                             .ToListAsync();

            var totalRating = 0;

            ListRating.ForEach(x =>
            {
                totalRating += x.Rating;
            });

            product.Rating      = totalRating / ListRating.Count();
            product.RatingCount = ListRating.Count();
            await _context.SaveChangesAsync();

            return(Ok());
        }
コード例 #12
0
        public async Task <IActionResult> PutRating(int id, RatingCreateRequest ratingCreateRequest)
        {
            var rating = await _context.Ratings.FindAsync(id);

            if (rating == null)
            {
                return(NotFound());
            }

            rating.RatingValue = ratingCreateRequest.RatingValue;
            rating.RatingBody  = ratingCreateRequest.RatingBody;
            await _context.SaveChangesAsync();

            return(NoContent());
        }
コード例 #13
0
        public async Task AddRating([GameCode] string gameCode, RatingCreateRequest request)
        {
            int.TryParse(Context.Items[KeyConstants.GameCode] as string, out int gameId);
            if (int.TryParse(Context.UserIdentifier, out int userId) && userId != 0)
            {
                request.PlayerProfileId = await _profileService.GetProfileIdByUserGame(userId, gameId);
            }

            await _ratingService.AddRating(request);

            var(ratingsCount, expectedRatingsCount) =
                await _gameService.GetVotingStatus(gameId, request.ItemId);

            await Clients.Group(gameCode).RefreshVotingProgress(ratingsCount, expectedRatingsCount);
        }
コード例 #14
0
        public async Task Rating(int productId, int rating)
        {
            var accessToken = await _httpContextAccessor.HttpContext.GetTokenAsync("access_token");

            _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

            var ratingCrequest = new RatingCreateRequest {
                ProductId = productId,
                Rating    = rating
            };
            var response = await _client.PostAsJsonAsync($"{_config["Host"]}/api/Rating", ratingCrequest);

            response.EnsureSuccessStatusCode();

            await response.Content.ReadAsAsync <IList <CartVM> >();
        }
コード例 #15
0
        public async Task <RatingVm> PostRating(RatingCreateRequest ratingCreateRequest)
        {
            //Send access token
            var client      = _httpClientFactory.CreateClient();
            var accessToken = await _httpContextAccessor.HttpContext.GetTokenAsync(OpenIdConnectParameterNames.AccessToken);

            client.SetBearerToken(accessToken);

            //Send json with body
            HttpContent httpContent = new StringContent(JsonConvert.SerializeObject(ratingCreateRequest),
                                                        Encoding.UTF8, "application/json");
            var response = await client.PostAsync(_configuration["BackendUrl:Default"] + "/api/Ratings", httpContent);

            response.EnsureSuccessStatusCode();
            return(await response.Content.ReadFromJsonAsync <RatingVm>());
        }
コード例 #16
0
        public IActionResult AddRating(int ProductId, float rvalue)
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(RedirectToAction(actionName: "SignIn", controllerName: "Account"));
            }

            RatingCreateRequest x = new RatingCreateRequest();

            x.RatingValue = rvalue;

            x.RatingTime = DateTime.Now;
            x.ProductId  = ProductId;

            //var claimsIdentity = User.Identity as ClaimsIdentity;
            //string userId = claimsIdentity.FindFirst("sub").Value;
            x.UserId = User.FindFirstValue(ClaimTypes.NameIdentifier);
            _ratingApiClient.PostRating(x);

            string referer = Request.Headers["Referer"].ToString();

            return(Redirect(referer));
        }
コード例 #17
0
        public async Task <ActionResult <RatingVm> > PostRating(RatingCreateRequest ratingCreateRequest)
        {
            if (CheckIfExist(ratingCreateRequest.ProductId, ratingCreateRequest.UserId) == true)
            {
                var ratin = await _context.Ratings.Where(x => x.ProductId == ratingCreateRequest.ProductId && x.UserId == ratingCreateRequest.UserId).FirstOrDefaultAsync();

                if (ratin == null)
                {
                    return(NotFound());
                }

                ratin.RatingValue = ratingCreateRequest.RatingValue;

                await _context.SaveChangesAsync();

                return(NoContent());
            }

            var rating = new Rating
            {
                RatingValue = ratingCreateRequest.RatingValue,
                RatingBody  = ratingCreateRequest.RatingBody,
                RatingTime  = ratingCreateRequest.RatingTime,
                UserId      = ratingCreateRequest.UserId,
                ProductId   = ratingCreateRequest.ProductId
            };

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

            return(CreatedAtAction("GetRating", new { id = rating.RatingId }, new RatingVm {
                RatingId = rating.RatingId,
                RatingValue = rating.RatingValue,
                RatingBody = rating.RatingBody,
                RatingTime = rating.RatingTime
            }));
        }
コード例 #18
0
        public async Task <IActionResult> PostRating(RatingCreateRequest rateRequest)
        {
            var postRating = new ProductRating
            {
                ProductId     = rateRequest.ProductID,
                CustomerName  = rateRequest.CustomerName,
                CustomerEmail = rateRequest.CustomerEmail,
                Title         = rateRequest.Title,
                Content       = rateRequest.Content,
                Rating        = rateRequest.Rating
            };

            var isPostSuccessRating = await _ratingService.CreateRating(postRating);


            if (isPostSuccessRating)
            {
                return(NoContent());
            }
            else
            {
                return(NotFound());
            }
        }