<?php
namespace App\EventSubscriber;
use App\Events;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Address;
class EmailMessengerSubscriber implements EventSubscriberInterface
{
public function __construct(private MailerInterface $mailer, private string $fromEmail, private string $toEmail){}
public function onMemberRegistered($event): void
{
$email = (new TemplatedEmail())
->from(new Address($this->fromEmail, 'ISTAMMER'))
->to($this->toEmail)
->subject(sprintf('Member Registered - %s %s', $event->getFirstName(), $event->getLastName()))
->htmlTemplate('mail/join_us.html.twig')
->context([
"volunteer"=>$event
])
;
$this->mailer->send($email);
}
public function onSendContactForm($event):void
{
$email = (new TemplatedEmail())
->from(new Address($this->fromEmail, 'ISTAMMER'))
->to($this->toEmail)
->subject(sprintf('A message from %s - ', $event->getFullName()))
->htmlTemplate('mail/contact_message.html.twig')
->context([
"mail"=>$event
])
;
$this->mailer->send($email);
}
public function onVolunteerRegister($event):void
{
$email = (new TemplatedEmail())
->from(new Address($this->fromEmail, 'ISTAMMER'))
->to($this->toEmail)
->subject(sprintf('New volunteer member %s - ', $event->getFirstName().' '. $event->getLastName()))
->htmlTemplate('mail/volunteer.html.twig')
->context([
"volunteer"=>$event
])
;
$this->mailer->send($email);
}
public static function getSubscribedEvents(): array
{
return [
Events::MEMBER_REGISTERED => 'onMemberRegistered',
Events::VISITOR_SEND_CONTACT => 'onSendContactForm',
Events::VOLUNTEER_REGISTERED => 'onVolunteerRegister',
];
}
}