Very small bug. Forgot to add ProductReviewApprovedEvent.

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.
Il y a 7 ans
NopCommerce uses ProductReviewApprovedEvent for notify about adding reviews.
But you forgot to add it in several methods Edit, DisapproveSelected
It's a very good feature.

1. If customer adds the review and the store's owner enabled the "ProductReviewsMustBeApproved"
NopCommerce sends "ProductReviewApprovedEvent".

2. If the store's owner in Admin mode sets "Approved" for list on reviews
NopCommerce sends "ProductReviewApprovedEvent".

3. If the store's owner in Admin mode opens one review and sets "Approved"
NopCommerce doens't send "ProductReviewApprovedEvent".


Russion.
Вы забыли добавить вызов ProductReviewApprovedEvent при изменении статуса отзыва когда редактировать его по одному (не списком) или снимать статут "Одобрено" для списока отзывов.
Добавьте пожалуйста этот код.



        [HttpPost, ParameterBasedOnFormName("save-continue", "continueEditing")]
        public ActionResult Edit(ProductReviewModel model, bool continueEditing)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageProductReviews))
                return AccessDeniedView();

            var productReview = _productService.GetProductReviewById(model.Id);
            if (productReview == null)
                //No product review found with the specified id
                return RedirectToAction("List");

            if (ModelState.IsValid)
            {
                var previousIsApproved = productReview.IsApproved;

                productReview.Title = model.Title;
                productReview.ReviewText = model.ReviewText;
                productReview.IsApproved = model.IsApproved;
                _productService.UpdateProduct(productReview.Product);
                
                //update product totals
                _productService.UpdateProductReviewTotals(productReview.Product);

                //raise event (only if it wasn't approved before)
                if (!previousIsApproved)
                    _eventPublisher.Publish(new ProductReviewApprovedEvent(productReview));

                SuccessNotification(_localizationService.GetResource("Admin.Catalog.ProductReviews.Updated"));
                return continueEditing ? RedirectToAction("Edit", new { id = productReview.Id}) : RedirectToAction("List");
            }


            //If we got this far, something failed, redisplay form
            PrepareProductReviewModel(model, productReview, true, false);
            return View(model);
        }



        [HttpPost]
        public ActionResult DisapproveSelected(ICollection<int> selectedIds)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageProductReviews))
                return AccessDeniedView();

            if (selectedIds != null)
            {
                var productReviews = _productService.GetProducReviewsByIds(selectedIds.ToArray());
                foreach (var productReview in productReviews)
                {
                    var previousIsApproved = productReview.IsApproved;
                    productReview.IsApproved = false;
                    _productService.UpdateProduct(productReview.Product);
                    //update product totals
                    _productService.UpdateProductReviewTotals(productReview.Product);

                    //raise event (only if it wasn't approved before)
                    if (!previousIsApproved)
                        _eventPublisher.Publish(new ProductReviewApprovedEvent(productReview));
                }
            }

            return Json(new { Result = true });
        }
Il y a 7 ans
Thanks a lot! Here is a work item
Il y a 7 ans
And done. Thanks for the contribution.
This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.