public async Task <VendorReview> Handle(SetVendorReviewHelpfulnessCommand request, CancellationToken cancellationToken) { //delete previous helpfulness var prh = request.Review.VendorReviewHelpfulnessEntries .FirstOrDefault(x => x.CustomerId == request.Customer.Id); if (prh != null) { //existing one prh.WasHelpful = request.Washelpful; } else { //insert new helpfulness prh = new VendorReviewHelpfulness { VendorReviewId = request.Review.Id, CustomerId = request.Customer.Id, WasHelpful = request.Washelpful, }; request.Review.VendorReviewHelpfulnessEntries.Add(prh); if (!request.Customer.HasContributions) { await _customerService.UpdateContributions(request.Customer); } } //new totals request.Review.HelpfulYesTotal = request.Review.VendorReviewHelpfulnessEntries.Count(x => x.WasHelpful); request.Review.HelpfulNoTotal = request.Review.VendorReviewHelpfulnessEntries.Count(x => !x.WasHelpful); await _vendorService.UpdateVendorReview(request.Review); return(request.Review); }
public virtual IActionResult SetVendorReviewHelpfulness(string VendorReviewId, string vendorId, bool washelpful) { var vendor = _vendorService.GetVendorById(vendorId); var vendorReview = _vendorService.GetVendorReviewById(VendorReviewId); if (vendorReview == null) { throw new ArgumentException("No vendor review found with the specified id"); } var customer = _workContext.CurrentCustomer; if (customer.IsGuest() && !_vendorSettings.AllowAnonymousUsersToReviewVendor) { return(Json(new { Result = _localizationService.GetResource("VendorReviews.Helpfulness.OnlyRegistered"), TotalYes = vendorReview.HelpfulYesTotal, TotalNo = vendorReview.HelpfulNoTotal })); } //customers aren't allowed to vote for their own reviews if (vendorReview.CustomerId == customer.Id) { return(Json(new { Result = _localizationService.GetResource("VendorReviews.Helpfulness.YourOwnReview"), TotalYes = vendorReview.HelpfulYesTotal, TotalNo = vendorReview.HelpfulNoTotal })); } //delete previous helpfulness var prh = vendorReview.VendorReviewHelpfulnessEntries .FirstOrDefault(x => x.CustomerId == customer.Id); if (prh != null) { //existing one prh.WasHelpful = washelpful; } else { //insert new helpfulness prh = new VendorReviewHelpfulness { VendorReviewId = vendorReview.Id, CustomerId = customer.Id, WasHelpful = washelpful, }; vendorReview.VendorReviewHelpfulnessEntries.Add(prh); if (!customer.IsHasVendorReviewH) { customer.IsHasVendorReviewH = true; EngineContext.Current.Resolve <ICustomerService>().UpdateHasVendorReviewH(customer.Id); } } //new totals vendorReview.HelpfulYesTotal = vendorReview.VendorReviewHelpfulnessEntries.Count(x => x.WasHelpful); vendorReview.HelpfulNoTotal = vendorReview.VendorReviewHelpfulnessEntries.Count(x => !x.WasHelpful); _vendorService.UpdateVendorReview(vendorReview); return(Json(new { Result = _localizationService.GetResource("VendorReviews.Helpfulness.SuccessfullyVoted"), TotalYes = vendorReview.HelpfulYesTotal, TotalNo = vendorReview.HelpfulNoTotal })); }