<?php
namespace App\EventListener;
use App\Entity\AssessmentCycleAssessor;
use App\Enum\Status;
use App\Event\AssessmentCycleExpiredEvent;
use App\Service\Assessment\AssessmentCycleManager;
use App\Service\User\UserService;
use Doctrine\ORM\EntityManagerInterface;
class AssessmentCycleExpiredListener
{
private $em;
private $cycleManager;
private $userService;
/**
* AssessmentCycleExpiredListener constructor.
*
* @param EntityManagerInterface $em
* @param AssessmentCycleManager $cycleManager
* @param UserService $userService
*/
public function __construct(EntityManagerInterface $em, AssessmentCycleManager $cycleManager, UserService $userService)
{
$this->em = $em;
$this->cycleManager = $cycleManager;
$this->userService = $userService;
}
/**
* @param AssessmentCycleExpiredEvent $event
*/
public function onAssessmentCycleExpired(AssessmentCycleExpiredEvent $event)
{
$cycle = $event->getCycle();
$this->userService->updateCompProfileScores($cycle->getUser());
$this->userService->updateSkillProfileScores($cycle->getUser());
$assessmentCycleAssessors = $this->em->getRepository(AssessmentCycleAssessor::class)->findBy([
'cycle' => $cycle,
'status' => Status::INT_ACTIVE
]);
if (!empty($assessmentCycleAssessors)) {
foreach ($assessmentCycleAssessors as $assessor) {
$this->cycleManager->expireCycleAssessor($assessor);
}
}
}
}