src/MailBundle/EventListener/Forecast/MailAlertAdministrativeForecastListener.php line 43

Open in your IDE?
  1. <?php
  2. namespace App\MailBundle\EventListener\Forecast;
  3. use App\Entity\Establishment\EstablishmentStaff;
  4. use App\Entity\Forecast\Establishment\AdministrativeIndemnity\ForecastAdministrativeIndemnity;
  5. use App\Entity\Forecast\Establishment\AdministrativeIndemnity\ForecastAdministrativeIndemnityLine;
  6. use App\Entity\Staff\Staff;
  7. use App\Event\Forecast\MailAlertAdministrativeForecastEvent;
  8. use App\MailBundle\Entity\Mail;
  9. use App\MailBundle\EventListener\MailListener;
  10. use App\MailBundle\Service\MailSender;
  11. use App\Repository\EstablishmentStaffRepository;
  12. use App\Repository\StaffRepository;
  13. use App\Service\Tools;
  14. use Symfony\Component\Security\Core\Security;
  15. use Vich\UploaderBundle\Event\Event;
  16. class MailAlertAdministrativeForecastListener extends MailListener
  17. {
  18.     
  19.     
  20.     public function __construct(MailSender $mailSenderTools $toolsStaffRepository $staffRepository, private Security $security,private EstablishmentStaffRepository $establishmentStaffRepository)
  21.     {
  22.         $this->mailSender $mailSender;
  23.         $this->tools $tools;
  24.         $this->staffRepository $staffRepository;
  25.         
  26.         
  27.     }
  28.     // Le but de ce listener va être de recuperer l'etablissement
  29.     
  30.     //utilise les function dans le MailListener, si besoin regarde dans les exemples qu'a fait Cedric
  31.     /**
  32.      * @throws \Twig\Error\SyntaxError
  33.      * @throws \Symfony\Component\Mailer\Exception\TransportExceptionInterface
  34.      * @throws \App\MailBundle\Exception\MissingTemplateException
  35.      * @throws \Twig\Error\RuntimeError
  36.      * @throws \Twig\Error\LoaderError
  37.      */
  38.     public function sendMailAlertEvent(MailAlertAdministrativeForecastEvent $event)
  39.     {
  40.         // trie des données reçus par le controller dans l'event
  41.         $forecast $event->getPostData();
  42.         if ($forecast instanceof ForecastAdministrativeIndemnity){
  43.             
  44.             $establishmentId $forecast->getEstablishment()->getId();
  45.             
  46.             $schoolYearId $forecast->getSchoolYear()->getId();
  47.             
  48.             $queryGetEstablishmentDirectorArray $this->establishmentStaffRepository->getDirectorEstablishment($establishmentId$schoolYearId);
  49.             
  50.             $queryGetEstablishmentDirectorCollection $queryGetEstablishmentDirectorArray[0];
  51.                 
  52.                 
  53.                 if($queryGetEstablishmentDirectorCollection instanceof EstablishmentStaff)
  54.                 {
  55.                     $director $queryGetEstablishmentDirectorCollection->getStaff();
  56.                     $directorEmail $director->getEmail();
  57.                     
  58.                         
  59.                         // Récupération des templates
  60.                         $data $this->getBaseTemplateData();
  61.                         
  62.                         //email du personnel
  63.                         $email = [
  64.                             $directorEmail
  65.                         ];
  66.                         
  67.                         //informations pour la template du mail
  68.                         $data['button_url'] = "/indemnites-administratives/" $forecast->getId();
  69.                         $data["from"] = $this->security->getUser()->getUserIdentifier();
  70.                         $data["to"] = $director->getFirstname() . ' ' $director->getLastname();
  71.                         $data["current_year"] = $forecast->getSchoolYear()->getName();
  72.                         
  73.                         // envoie du mail pour les utilisateurs concerné
  74.                         $mail = new Mail(
  75.                             Mail::FORECAST_ADMINISTRATIVE_MAIL_ALERTE_TEMPLATE,
  76.                             $email,
  77.                             $data
  78.                         );
  79.                         
  80.                         $this->mailSender->sendEmail($mail);
  81.                         
  82.                     
  83.                 }
  84.                 
  85.                 else
  86.                 {
  87.                     echo "Les données reçus ne corresponde pas à l'etablissement du personnel";
  88.                 }
  89.                 
  90.             }
  91.         
  92.         
  93.         else{
  94.             echo "Les données reçus ne concerne pas une prévision d'indemnité administrative.";
  95.         }
  96.             
  97.         
  98.         
  99.     }
  100. }