<?php
namespace App\MailBundle\EventListener\Declaration;
use App\Entity\Declaration\Declaration;
use App\Entity\ValidationRequest;
use App\Event\Declaration\ForecastedHourExceededEvent;
use App\MailBundle\Entity\Mail;
use App\MailBundle\EventListener\MailListener;
use App\MailBundle\Exception\MissingTemplateException;
use App\MailBundle\Service\MailSender;
use JetBrains\PhpStorm\NoReturn;
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Error\SyntaxError;
use Vich\UploaderBundle\Event\Event;
class ForecastedHourExceededEventListener extends DeclarationEventListener
{
/**
* @throws SyntaxError
* @throws MissingTemplateException
* @throws TransportExceptionInterface
* @throws RuntimeError
* @throws LoaderError
*/
#[NoReturn]
public function onForecastedHourExceeded(ForecastedHourExceededEvent $event)
{
$data = $this->getBaseTemplateData();
$establishment = $event->getDeclaration()?->getEstablishmentDiploma()?->getEstablishment();
$diploma = $event->getDeclaration()?->getEstablishmentDiploma()?->getDiploma();
$schoolYear = $event->getDeclaration()?->getEstablishmentDiploma()?->getSchoolYear();
$data['button_url'] = $this->establishmentEditRoute . $establishment->getSlug();
$data["from"] = $event?->getFrom()?->getFullName();
$data["to"] = $event?->getTo()?->getFullName();
$data["nb_hour"] = $event?->getDeclarationLineStaff()?->getHourWorked();
$data["hour_type"] = $event?->getDeclarationLineStaff()?->getForecastStaffLine()?->getHourType();
$data["discipline"] = $event?->getDeclarationLineStaff()?->getForecastStaffLine()?->getDiscipline()?->getName();
$data['diploma'] = $diploma?->getDataOfYear($schoolYear)?->getName();
$emails = [
$this->payrollDepartmentEmail,
$event->getFrom()->getEmail(),
$this->establishmentStaffRepository->getEstablishmentDiplomaManagerAndHigher($establishment, $schoolYear),
];
$mail = new Mail(
Mail::FORECASTED_HOUR_EXCEEDED_TEMPLATE,
$emails,
$data
);
$this->mailSender->sendEmail($mail);
}
}