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);
        }
示例#2
0
        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
            }));
        }