src/EventListener/AssessmentCycleExpiredListener.php line 35

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Entity\AssessmentCycleAssessor;
  4. use App\Enum\Status;
  5. use App\Event\AssessmentCycleExpiredEvent;
  6. use App\Service\Assessment\AssessmentCycleManager;
  7. use App\Service\User\UserService;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. class AssessmentCycleExpiredListener
  10. {
  11.     private $em;
  12.     private $cycleManager;
  13.     private $userService;
  14.     /**
  15.      * AssessmentCycleExpiredListener constructor.
  16.      *
  17.      * @param EntityManagerInterface $em
  18.      * @param AssessmentCycleManager      $cycleManager
  19.      * @param UserService            $userService
  20.      */
  21.     public function __construct(EntityManagerInterface $emAssessmentCycleManager $cycleManagerUserService $userService)
  22.     {
  23.         $this->em $em;
  24.         $this->cycleManager $cycleManager;
  25.         $this->userService $userService;
  26.     }
  27.     /**
  28.      * @param AssessmentCycleExpiredEvent $event
  29.      */
  30.     public function onAssessmentCycleExpired(AssessmentCycleExpiredEvent $event)
  31.     {
  32.         $cycle $event->getCycle();
  33.         $this->userService->updateCompProfileScores($cycle->getUser());
  34.         $this->userService->updateSkillProfileScores($cycle->getUser());
  35.         $assessmentCycleAssessors $this->em->getRepository(AssessmentCycleAssessor::class)->findBy([
  36.             'cycle' => $cycle,
  37.             'status' => Status::INT_ACTIVE
  38.         ]);
  39.         if (!empty($assessmentCycleAssessors)) {
  40.             foreach ($assessmentCycleAssessors as $assessor) {
  41.                 $this->cycleManager->expireCycleAssessor($assessor);
  42.             }
  43.         }
  44.     }
  45. }