<?php
namespace App\EventSubscriber\Timetable;
use App\Event\Timetable\TimetableUpdatedEvent;
use App\EventSubscriber\AbstractEmailSubscriber;
use App\Manager\Mailer;
use App\Manager\MailTypeInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use Twig\Environment;
class TimetableSubscriber extends AbstractEmailSubscriber
{
protected $financialServiceEmail;
public function __construct(
Mailer $mailer,
Environment $templating,
TranslatorInterface $translator,
string $financialServiceEmail
) {
parent::__construct($mailer, $templating, $translator);
$this->financialServiceEmail = $financialServiceEmail;
}
public static function getSubscribedEvents(): array
{
return [
TimetableUpdatedEvent::class => 'onTimetableUpdated',
];
}
public function onTimetableUpdated(TimetableUpdatedEvent $event): void
{
$deadlines = $event->getDeadlines();
$user = $event->getUser();
$subject = $this->transEmail('timetable.updated.subject');
$message = $this->templating->render('email/timetable/updated.html.twig', [
'customer' => $user,
'deadlines' => $deadlines,
]);
$this->mailer->sendMail(
[$user->getEmail(), $this->financialServiceEmail],
$subject,
$message,
MailTypeInterface::TIMETABLE_UPDATED
);
}
}