public ActionResult SetProductReviewHelpfulness(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 (_workContext.CurrentCustomer.IsGuest() && !_catalogSettings.AllowAnonymousUsersToReviewProduct) { return Json(new { Result = _localizationService.GetResource("Reviews.Helpfulness.OnlyRegistered"), TotalYes = productReview.HelpfulYesTotal, TotalNo = productReview.HelpfulNoTotal }); } //delete previous helpfulness var oldPrh = (from prh in productReview.ProductReviewHelpfulnessEntries where prh.CustomerId == _workContext.CurrentCustomer.Id select prh).FirstOrDefault(); if (oldPrh != null) _customerContentService.DeleteCustomerContent(oldPrh); //insert new helpfulness var newPrh = new ProductReviewHelpfulness() { ProductReviewId = productReview.Id, CustomerId = _workContext.CurrentCustomer.Id, IpAddress = _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 { Result = _localizationService.GetResource("Reviews.Helpfulness.SuccessfullyVoted"), TotalYes = productReview.HelpfulYesTotal, TotalNo = productReview.HelpfulNoTotal }); }
public ActionResult SetProductReviewHelpfulness(int productReviewId, bool washelpful) { var productReview = _productService.GetProductReviewById(productReviewId); if (productReview == null) throw new ArgumentException("No product review found with the specified id"); if (_workContext.CurrentCustomer.IsGuest() && !_catalogSettings.AllowAnonymousUsersToReviewProduct) { return Json(new { Result = _localizationService.GetResource("Reviews.Helpfulness.OnlyRegistered"), TotalYes = productReview.HelpfulYesTotal, TotalNo = productReview.HelpfulNoTotal }); } //customers aren't allowed to vote for their own reviews if (productReview.CustomerId == _workContext.CurrentCustomer.Id) { return Json(new { Result = _localizationService.GetResource("Reviews.Helpfulness.YourOwnReview"), TotalYes = productReview.HelpfulYesTotal, TotalNo = productReview.HelpfulNoTotal }); } //delete previous helpfulness var prh = productReview.ProductReviewHelpfulnessEntries .FirstOrDefault(x => x.CustomerId == _workContext.CurrentCustomer.Id); if (prh != null) { //existing one prh.WasHelpful = washelpful; } else { //insert new helpfulness prh = new ProductReviewHelpfulness { ProductReviewId = productReview.Id, CustomerId = _workContext.CurrentCustomer.Id, WasHelpful = washelpful, }; productReview.ProductReviewHelpfulnessEntries.Add(prh); } _productService.UpdateProduct(productReview.Product); //new totals productReview.HelpfulYesTotal = productReview.ProductReviewHelpfulnessEntries.Count(x => x.WasHelpful); productReview.HelpfulNoTotal = productReview.ProductReviewHelpfulnessEntries.Count(x => !x.WasHelpful); _productService.UpdateProduct(productReview.Product); return Json(new { Result = _localizationService.GetResource("Reviews.Helpfulness.SuccessfullyVoted"), 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", } } }; context.Set<CustomerContent>().Add(productReview); context.Set<CustomerContent>().Add(productReviewHelpfulness); context.Set<CustomerContent>().Add(blogComment); context.SaveChanges(); context.Dispose(); context = new NopObjectContext(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); }