<?php
namespace Pmag\ApiBundle\EventSubscriber;
use Pmag\ApiBundle\ApiEvents\ClientEvents;
use Pmag\ApiBundle\Event\ClientEvent;
use Pmag\ApiBundle\Service\MailerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Twig\Environment;
/**
* UserSubscriber
* @package Pmag\ApiBundle\EventSubscriber
* @author Daly Ala <rafin_ala03@hotmail.fr>
**/
class UserSubscriber implements EventSubscriberInterface
{
/**
* @var MailerInterface
*/
private $mailer;
/**
* @var Environment
*/
private $twig;
/**
* UserSubscriber constructor.
* @param MailerInterface $mailer
* @param Environment $twig
*/
public function __construct(MailerInterface $mailer, Environment $twig)
{
$this->mailer = $mailer;
$this->twig = $twig;
}
/**
* @return array The event names to listen to
*/
public static function getSubscribedEvents()
{
return array(
ClientEvents::CLIENT_REGISTRATION_SUCCESS => 'onRegistrationSuccess',
ClientEvents::CLIENT_CHANGE_PASSWORD_SUCCESS=> 'onChangePasswordSuccess'
);
}
/**
* Actions to perform after client registration success goes here
*
* @param ClientEvent $clientEvent
* @throws \Exception
*/
public function onRegistrationSuccess(ClientEvent $clientEvent)
{
$client = $clientEvent->getClient();
// send confirmation email
$this->mailer->sendEmail(
'Welcome',
$client->getEmail(),
$this->twig->render('emails/security/register.html.twig', [
'client' => $client,
]
)
);
}
/**
* Actions to perform after client reset password success goes here
*
* @param ClientEvent $clientEvent
* @throws \Exception
*/
public function onChangePasswordSuccess(ClientEvent $clientEvent)
{
$client = $clientEvent->getClient();
// send reset password success email
$this->mailer->sendEmail(
'Password Successfully Reset',
$client->getEmail(),
$this->twig->render('emails/security/change-password.html.twig', [
'client' => $client
])
);
}
}