public ActionResult SetReviewHelpfulness(int productReviewId, bool washelpful) { var productReview = _customerContentService.GetCustomerContentById(productReviewId) as ProductReview; if (productReview == null) throw new ArgumentException("No product review found with the specified id"); if (_services.WorkContext.CurrentCustomer.IsGuest() && !_catalogSettings.AllowAnonymousUsersToReviewProduct) { return Json(new { Success = false, Result = T("Reviews.Helpfulness.OnlyRegistered").Text, TotalYes = productReview.HelpfulYesTotal, TotalNo = productReview.HelpfulNoTotal }); } //customers aren't allowed to vote for their own reviews if (productReview.CustomerId == _services.WorkContext.CurrentCustomer.Id) { return Json(new { Success = false, Result = T("Reviews.Helpfulness.YourOwnReview").Text, TotalYes = productReview.HelpfulYesTotal, TotalNo = productReview.HelpfulNoTotal }); } //delete previous helpfulness var oldPrh = (from prh in productReview.ProductReviewHelpfulnessEntries where prh.CustomerId == _services.WorkContext.CurrentCustomer.Id select prh).FirstOrDefault(); if (oldPrh != null) _customerContentService.DeleteCustomerContent(oldPrh); //insert new helpfulness var newPrh = new ProductReviewHelpfulness() { ProductReviewId = productReview.Id, CustomerId = _services.WorkContext.CurrentCustomer.Id, IpAddress = _services.WebHelper.GetCurrentIpAddress(), WasHelpful = washelpful, IsApproved = true, //always approved CreatedOnUtc = DateTime.UtcNow, UpdatedOnUtc = DateTime.UtcNow, }; _customerContentService.InsertCustomerContent(newPrh); //new totals int helpfulYesTotal = (from prh in productReview.ProductReviewHelpfulnessEntries where prh.WasHelpful select prh).Count(); int helpfulNoTotal = (from prh in productReview.ProductReviewHelpfulnessEntries where !prh.WasHelpful select prh).Count(); productReview.HelpfulYesTotal = helpfulYesTotal; productReview.HelpfulNoTotal = helpfulNoTotal; _customerContentService.UpdateCustomerContent(productReview); return Json(new { Success = true, Result = T("Reviews.Helpfulness.SuccessfullyVoted").Text, TotalYes = productReview.HelpfulYesTotal, TotalNo = productReview.HelpfulNoTotal }); }
public void Can_get_customer_content_by_type() { var customer = SaveAndLoadEntity<Customer>(GetTestCustomer(), false); var product = SaveAndLoadEntity<Product>(GetTestProduct(), false); var productReview = new ProductReview { Customer = customer, Product = product, Title = "Test", ReviewText = "A review", IpAddress = "192.168.1.1", IsApproved = true, CreatedOnUtc = new DateTime(2010, 01, 01), UpdatedOnUtc = new DateTime(2010, 01, 02), }; var productReviewHelpfulness = new ProductReviewHelpfulness { Customer = customer, ProductReview = productReview, WasHelpful = true, IpAddress = "192.168.1.1", IsApproved = true, CreatedOnUtc = new DateTime(2010, 01, 03), UpdatedOnUtc = new DateTime(2010, 01, 04) }; var blogComment = new BlogComment { Customer = customer, IpAddress = "192.168.1.1", IsApproved = true, CreatedOnUtc = new DateTime(2010, 01, 03), UpdatedOnUtc = new DateTime(2010, 01, 04), BlogPost = new BlogPost() { Title = "Title 1", Body = "Body 1", AllowComments = true, CreatedOnUtc = new DateTime(2010, 01, 01), Language = new Language() { Name = "English", LanguageCulture = "en-Us", } } }; var table = context.Set<CustomerContent>(); table.RemoveRange(table.ToList()); table.Add(productReview); table.Add(productReviewHelpfulness); table.Add(blogComment); context.SaveChanges(); context.Dispose(); context = new SmartObjectContext(GetTestDbName()); var query = context.Set<CustomerContent>(); query.ToList().Count.ShouldEqual(3); var dbReviews = query.OfType<ProductReview>().ToList(); dbReviews.Count().ShouldEqual(1); dbReviews.First().ReviewText.ShouldEqual("A review"); var dbHelpfulnessRecords = query.OfType<ProductReviewHelpfulness>().ToList(); dbHelpfulnessRecords.Count().ShouldEqual(1); dbHelpfulnessRecords.First().WasHelpful.ShouldEqual(true); var dbBlogCommentRecords = query.OfType<BlogComment>().ToList(); dbBlogCommentRecords.Count().ShouldEqual(1); }