public void AddUsefulnessScore(QuestionAnswerUserReview review)
        {
            FrequentlyAskedQuestion faq = _ctx.FrequentlyAskedQuestions.Find(review.FrequentlyAskedQuestion_Id);

            // Update existing user usefulness review.
            if (faq != null)
            {
                ICollection <QuestionAnswerUserReview> reviews = faq.UserReviews;

                var existingReviews = reviews.Where(e => e.User_Id == review.User_Id && e.FrequentlyAskedQuestion_Id == review.FrequentlyAskedQuestion_Id);
                QuestionAnswerUserReview existingReview = existingReviews.FirstOrDefault();

                if (existingReview == null)
                {
                    // No existing Review. Add new review.
                    faq.UserReviews.Add(review);
                    faq.TotalUserReviewScore += review.UserReviewScore;
                }
                else
                {
                    // Existing review. Update review.
                    faq.UserReviews.Remove(existingReview);
                    faq.TotalUserReviewScore += -existingReview.UserReviewScore;
                    faq.UserReviews.Add(review);
                    faq.TotalUserReviewScore += review.UserReviewScore;
                }
                _ctx.SaveChanges();
            }
        }
        public async Task <IHttpActionResult> AddUserUsefulnessReview([FromUri] int questionId, [FromUri] int score)
        {
            User user = await _userRepo.FindUserById(RequestContext.Principal.Identity.GetUserId());

            if (user == null)
            {
                return(Unauthorized());
            }

            var review = new QuestionAnswerUserReview(user.Id, questionId, score);

            _faqRepo.AddUsefulnessScore(review);

            return(Ok());
        }