<?php
namespace App\EventSubscriber;
use App\Service\EsMail;
use App\Entity\MeetingBooking;
use App\Event\MeetingBookingPostUpdateEvent;
use App\Event\MeetingBookingPostPersistEvent;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class MeetingBookingSubscriber implements EventSubscriberInterface
{
public function __construct(
private EsMail $esMail,
private Security $security
) {}
public static function getSubscribedEvents(): array
{
return [
MeetingBookingPostPersistEvent::NAME => 'onCreate',
MeetingBookingPostUpdateEvent::NAME => 'onUpdate'
];
}
public function onCreate(MeetingBookingPostPersistEvent $event)
{
$object = $event->getObject();
$this->esMail->meetingConfirmationEmail($this->security->getUser(), $object);
}
public function onUpdate(MeetingBookingPostUpdateEvent $event)
{
$object = $event->getObject();
if ($object->getStatus() === MeetingBooking::STATUS_CANCELED) {
$this->esMail->meetingCancelationEmail($this->security->getUser(), $object);
}
}
}