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 });
}