<?phpnamespace App\EventSubscriber;use App\Event\CanceledRepairAppointmentEvent;use App\Event\CancelFreematicaRepairAppointmentEvent;use App\Event\CreatedRepairAppointmentEvent;use App\Event\InsertFreematicaRepairAppointmentEvent;use App\Event\UpdatedRepairAppointmentEvent;use App\Event\UpdateFreematicaRepairAppointmentEvent;use App\Service\MailService;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\Mailer\Exception\TransportExceptionInterface;use Twig\Error\LoaderError;use Twig\Error\RuntimeError;use Twig\Error\SyntaxError;class RepairAppointmentSubscriber implements EventSubscriberInterface{ /** @var MailService $mailer */ private $mailer; /** * RepairAppointmentSubscriber constructor. * @param MailService $mailer */ public function __construct(MailService $mailer) { $this->mailer = $mailer; } /** * @return string[] */ public static function getSubscribedEvents(): array { return [ CreatedRepairAppointmentEvent::class => 'onCreatedRepairAppointment', UpdatedRepairAppointmentEvent::class => 'onUpdatedRepairAppointment', CanceledRepairAppointmentEvent::class => 'onCanceledRepairAppointment', InsertFreematicaRepairAppointmentEvent::class => 'onInsertFreematicaRepairAppointment', UpdateFreematicaRepairAppointmentEvent::class => 'onUpdateFreematicaRepairAppointment', CancelFreematicaRepairAppointmentEvent::class => 'onCancelFreematicaRepairAppointment', ]; } /** * @param CreatedRepairAppointmentEvent $event * @throws TransportExceptionInterface * @throws LoaderError * @throws RuntimeError * @throws SyntaxError */ public function onCreatedRepairAppointment(CreatedRepairAppointmentEvent $event) { $this->mailer->createdRepairAppointmentToAdmin($event->getRepairAppointment()); } /** * @param UpdatedRepairAppointmentEvent $event * @throws LoaderError * @throws RuntimeError * @throws SyntaxError * @throws TransportExceptionInterface */ public function onUpdatedRepairAppointment(UpdatedRepairAppointmentEvent $event) { $this->mailer->updatedRepairAppointmentToAdmin($event->getRepairAppointment()); } /** * @param CanceledRepairAppointmentEvent $event * @throws LoaderError * @throws RuntimeError * @throws SyntaxError * @throws TransportExceptionInterface */ public function onCanceledRepairAppointment(CanceledRepairAppointmentEvent $event) { $this->mailer->canceledRepairAppointmentToAdmin($event->getRepairAppointment()); } /** * @param InsertFreematicaRepairAppointmentEvent $event * @throws LoaderError * @throws RuntimeError * @throws SyntaxError * @throws TransportExceptionInterface */ public function onInsertFreematicaRepairAppointment(InsertFreematicaRepairAppointmentEvent $event) { $this->mailer->insertFreematicaRepairAppointmentToCustomerSupport($event->getRepairAppointment()); } /** * @param UpdateFreematicaRepairAppointmentEvent $event * @throws LoaderError * @throws RuntimeError * @throws SyntaxError * @throws TransportExceptionInterface */ public function onUpdateFreematicaRepairAppointment(UpdateFreematicaRepairAppointmentEvent $event) { $this->mailer->updateFreematicaRepairAppointmentToCustomerSupport($event->getRepairAppointment()); } /** * @param CancelFreematicaRepairAppointmentEvent $event * @throws LoaderError * @throws RuntimeError * @throws SyntaxError * @throws TransportExceptionInterface */ public function onCancelFreematicaRepairAppointment(CancelFreematicaRepairAppointmentEvent $event) { $this->mailer->cancelFreematicaRepairAppointmentToCustomerSupport($event->getRepairAppointment()); }}