<?php
namespace App\EventSubscriber\User;
use App\Event\MyProfile\GuestAccountActivatedEvent;
use App\Event\MyProfile\GuestCreatedEvent;
use App\Event\MyProfile\GuestDeletedEvent;
use App\EventSubscriber\AbstractEmailSubscriber;
use App\Manager\MailTypeInterface;
class ContactSubscriber extends AbstractEmailSubscriber
{
public function onGuestCreated(GuestCreatedEvent $event): void
{
$guest = $event->getUser();
$firstname = $guest->getMainAccount()->getFirstName();
$lastname = $guest->getMainAccount()->getLastName();
$subject = $this->transEmail('my_profile.guest.created.subject', [
'firstname' => $firstname,
'lastname' => $lastname,
]);
$message = $this->templating->render('email/contact/creation.html.twig', [
'guest' => $guest,
]);
$this->mailer->sendMail([$guest->getEmail()], $subject, $message, MailTypeInterface::ACCOUNT_GUEST_CREATED);
}
public function onGuestAccountActivated(GuestAccountActivatedEvent $event): void
{
$guest = $event->getUser();
$main = $guest->getMainAccount();
$subjectGuest = $this->transEmail('my_profile.guest.validation.subject');
$messageGuest = $this->templating->render('email/contact/validation.html.twig', [
'guest' => $guest,
]);
$subjectMain = $this->transEmail('my_profile.guest.activated.subject', [
'firstname' => $guest->getFirstName(),
'lastname' => $guest->getLastName(),
]);
$messageMain = $this->templating->render('email/contact/activated.html.twig', [
'customer' => $main,
'guest' => $guest,
]);
$this->mailer->sendMail(
[$guest->getEmail()],
$subjectGuest,
$messageGuest,
MailTypeInterface::ACCOUNT_GUEST_ACTIVATED_GUEST
);
$this->mailer->sendMail(
[$main->getEmail()],
$subjectMain,
$messageMain,
MailTypeInterface::ACCOUNT_GUEST_ACTIVATED_MAIN
);
}
public function onGuestDeleted(GuestDeletedEvent $event): void
{
$guest = $event->getUser();
$main = $guest->getMainAccount();
$subject = $this->transEmail('my_profile.guest.deleted.subject', ['firstname' => $guest->getFirstName(), 'lastname' => $guest->getLastName()]);
$message = $this->templating->render('email/contact/delete.html.twig', [
'customer' => $main,
'guest' => $guest,
]);
$this->mailer->sendMail(
[$main->getEmail()],
$subject,
$message,
MailTypeInterface::ACCOUNT_GUEST_DELETED_MAIN
);
}
public static function getSubscribedEvents(): array
{
return [
GuestCreatedEvent::class => 'onGuestCreated',
GuestAccountActivatedEvent::class => 'onGuestAccountActivated',
GuestDeletedEvent::class => 'onGuestDeleted',
];
}
}