<?php
namespace App\EventSubscriber;
use ApiPlatform\Core\EventListener\EventPriorities;
use App\Entity\BaseUser;
use App\Event\BaseUser\ResetPasswordEvent;
use ExpoSDK\Expo;
use ExpoSDK\ExpoMessage;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Event\ViewEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Mime\Address;
use Symfony\Component\Mailer\MailerInterface;
final class BaseUserSubscriber implements EventSubscriberInterface
{
private $mailer;
public function __construct(MailerInterface $mailer)
{
$this->mailer = $mailer;
}
public static function getSubscribedEvents()
{
return [
ResetPasswordEvent::class => ['resetPassword'],
KernelEvents::VIEW => [
['delete', EventPriorities::POST_WRITE]
],
];
}
public function delete(ViewEvent $event): void
{
$baseUser = $event->getControllerResult();
$method = $event->getRequest()->getMethod();
if (!$baseUser instanceof BaseUser || Request::METHOD_DELETE !== $method) {
return;
}
$this->sendMailRemove($baseUser->getEmail());
}
public function resetPassword(ResetPasswordEvent $event): void
{
$user = $event->getUser();
$resetToken = $event->getResetToken();
$email = (new TemplatedEmail())
->from(new Address('noreply@ores.com', 'ORES'))
->to($user->getEmail())
->subject('RĂ©initialisation du mot de passe')
->htmlTemplate('mails/base_user/reset_password.html.twig')
->context([
'resetToken' => $resetToken,
'user' => $user,
])
;
$this->mailer->send($email);
}
public function sendMailRemove($to)
{
/**
* MAIL:BaseUser
*/
$email = (new TemplatedEmail())
->from(new Address('noreply@ores.com', 'ORES'))
->to($to)
->subject('Suppression de votre offre - ORES BFC')
->htmlTemplate('mails/base_user/remove_account.html.twig')
->context([])
;
$this->mailer->send($email);
}
}