<?php
namespace App\MailBundle\EventListener\Forecast;
use App\Entity\Establishment\EstablishmentStaff;
use App\Entity\Forecast\Establishment\AdministrativeIndemnity\ForecastAdministrativeIndemnity;
use App\Entity\Forecast\Establishment\AdministrativeIndemnity\ForecastAdministrativeIndemnityLine;
use App\Entity\Staff\Staff;
use App\Event\Forecast\MailAlertAdministrativeForecastEvent;
use App\MailBundle\Entity\Mail;
use App\MailBundle\EventListener\MailListener;
use App\MailBundle\Service\MailSender;
use App\Repository\EstablishmentStaffRepository;
use App\Repository\StaffRepository;
use App\Service\Tools;
use Symfony\Component\Security\Core\Security;
use Vich\UploaderBundle\Event\Event;
class MailAlertAdministrativeForecastListener extends MailListener
{
public function __construct(MailSender $mailSender, Tools $tools, StaffRepository $staffRepository, private Security $security,private EstablishmentStaffRepository $establishmentStaffRepository)
{
$this->mailSender = $mailSender;
$this->tools = $tools;
$this->staffRepository = $staffRepository;
}
// Le but de ce listener va être de recuperer l'etablissement
//utilise les function dans le MailListener, si besoin regarde dans les exemples qu'a fait Cedric
/**
* @throws \Twig\Error\SyntaxError
* @throws \Symfony\Component\Mailer\Exception\TransportExceptionInterface
* @throws \App\MailBundle\Exception\MissingTemplateException
* @throws \Twig\Error\RuntimeError
* @throws \Twig\Error\LoaderError
*/
public function sendMailAlertEvent(MailAlertAdministrativeForecastEvent $event)
{
// trie des données reçus par le controller dans l'event
$forecast = $event->getPostData();
if ($forecast instanceof ForecastAdministrativeIndemnity){
$establishmentId = $forecast->getEstablishment()->getId();
$schoolYearId = $forecast->getSchoolYear()->getId();
$queryGetEstablishmentDirectorArray = $this->establishmentStaffRepository->getDirectorEstablishment($establishmentId, $schoolYearId);
$queryGetEstablishmentDirectorCollection = $queryGetEstablishmentDirectorArray[0];
if($queryGetEstablishmentDirectorCollection instanceof EstablishmentStaff)
{
$director = $queryGetEstablishmentDirectorCollection->getStaff();
$directorEmail = $director->getEmail();
// Récupération des templates
$data = $this->getBaseTemplateData();
//email du personnel
$email = [
$directorEmail
];
//informations pour la template du mail
$data['button_url'] = "/indemnites-administratives/" . $forecast->getId();
$data["from"] = $this->security->getUser()->getUserIdentifier();
$data["to"] = $director->getFirstname() . ' ' . $director->getLastname();
$data["current_year"] = $forecast->getSchoolYear()->getName();
// envoie du mail pour les utilisateurs concerné
$mail = new Mail(
Mail::FORECAST_ADMINISTRATIVE_MAIL_ALERTE_TEMPLATE,
$email,
$data
);
$this->mailSender->sendEmail($mail);
}
else
{
echo "Les données reçus ne corresponde pas à l'etablissement du personnel";
}
}
else{
echo "Les données reçus ne concerne pas une prévision d'indemnité administrative.";
}
}
}