src/MailBundle/EventListener/ValidationRequest/ReminderValidationEventListener.php line 16

Open in your IDE?
  1. <?php
  2. namespace App\MailBundle\EventListener\ValidationRequest;
  3. use App\Entity\Declaration\Indemnity\DeclarationIndemnity;
  4. use App\Entity\Declaration\Staff\DeclarationMonth;
  5. use App\Entity\Declaration\Staff\DeclarationTrimester;
  6. use App\Event\Declaration\ReminderValidationEvent;
  7. use App\MailBundle\Entity\Mail;
  8. use JetBrains\PhpStorm\NoReturn;
  9. class ReminderValidationEventListener extends ValidationRequestEventListener
  10. {
  11.     #[NoReturn]
  12.     public function onReminderValidation(ReminderValidationEvent $event)
  13.     {
  14.         $data $this->getBaseTemplateData();
  15.         $declaration $event->getDeclaration();
  16.         $establishment $declaration?->getEstablishmentDiploma()?->getEstablishment();
  17.         $schoolYear $declaration?->getEstablishmentDiploma()?->getSchoolYear();
  18.         $data["validation_date"] = $declaration?->getValidationDate();
  19.         $data["establishment"] = $establishment->getName();
  20.         $data["school_year"] = $schoolYear->getName();
  21.         $data["validation_request_data_type"] = $declaration->getEmailLabelValidationDataType();
  22.         switch ($declaration::class) {
  23.             case DeclarationMonth::class:
  24.                 $data["month_number"] = $declaration->getMonth()->getMonthNumber();
  25.                 break;
  26.             case DeclarationIndemnity::class:
  27.             case DeclarationTrimester::class:
  28.                 $data["trimester_number"] = $declaration->getTrimester()->getPosition();
  29.                 break;
  30.         }
  31.         $emails = [
  32.             $this->payrollDepartmentEmail,
  33.             $this->establishmentStaffRepository->getEstablishmentDiplomaManagerAndHigher($establishment$schoolYear),
  34.         ];
  35.         $mail = new Mail(
  36.             Mail::FORECASTED_HOUR_EXCEEDED_TEMPLATE,
  37.             $emails,
  38.             $data
  39.         );
  40.         $this->mailSender->sendEmail($mail);
  41.     }
  42. }