/** * @param GenericEvent $event */ public function recalculateSubjectRating(GenericEvent $event) { $subject = $event->getSubject(); if (!$subject instanceof ReviewInterface) { throw new UnexpectedTypeException($subject, ReviewInterface::class); } if (ReviewInterface::STATUS_ACCEPTED === $subject->getStatus()) { $this->averageRatingUpdater->update($subject->getReviewSubject()); } }
/** * {@inheritdoc} */ public function removeReviewerReviews(ReviewerInterface $author) { $reviewSubjectsToRecalculate = []; foreach ($this->reviewRepository->findBy(['author' => $author]) as $review) { $reviewSubjectsToRecalculate = $this->removeReviewsAndExtractSubject($review, $reviewSubjectsToRecalculate); } $this->reviewManager->flush(); foreach ($reviewSubjectsToRecalculate as $reviewSubject) { $this->averageRatingUpdater->update($reviewSubject); } }