/**
  * @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);
     }
 }