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