<?php
namespace App\MailBundle\EventListener\ValidationRequest;
use App\Entity\Declaration\Indemnity\DeclarationIndemnity;
use App\Entity\Declaration\Staff\DeclarationMonth;
use App\Entity\Declaration\Staff\DeclarationTrimester;
use App\Event\Declaration\ReminderValidationEvent;
use App\MailBundle\Entity\Mail;
use JetBrains\PhpStorm\NoReturn;
class ReminderValidationEventListener extends ValidationRequestEventListener
{
#[NoReturn]
public function onReminderValidation(ReminderValidationEvent $event)
{
$data = $this->getBaseTemplateData();
$declaration = $event->getDeclaration();
$establishment = $declaration?->getEstablishmentDiploma()?->getEstablishment();
$schoolYear = $declaration?->getEstablishmentDiploma()?->getSchoolYear();
$data["validation_date"] = $declaration?->getValidationDate();
$data["establishment"] = $establishment->getName();
$data["school_year"] = $schoolYear->getName();
$data["validation_request_data_type"] = $declaration->getEmailLabelValidationDataType();
switch ($declaration::class) {
case DeclarationMonth::class:
$data["month_number"] = $declaration->getMonth()->getMonthNumber();
break;
case DeclarationIndemnity::class:
case DeclarationTrimester::class:
$data["trimester_number"] = $declaration->getTrimester()->getPosition();
break;
}
$emails = [
$this->payrollDepartmentEmail,
$this->establishmentStaffRepository->getEstablishmentDiplomaManagerAndHigher($establishment, $schoolYear),
];
$mail = new Mail(
Mail::FORECASTED_HOUR_EXCEEDED_TEMPLATE,
$emails,
$data
);
$this->mailSender->sendEmail($mail);
}
}