src/EventListener/ClientCreatedEmail.php line 32
<?phpnamespace App\EventListener;use App\Entity\Client;use App\Event\ForgottenPasswordEvent;use App\Repository\SettingRepository;use Doctrine\ORM\EntityManagerInterface;use Symfony\Bridge\Twig\Mime\TemplatedEmail;use Symfony\Component\DependencyInjection\Attribute\Autowire;use Symfony\Component\EventDispatcher\Attribute\AsEventListener;use Symfony\Component\Mailer\MailerInterface;#[AsEventListener(event: ForgottenPasswordEvent::NAME, method: 'forgottenPassword')]class ClientCreatedEmail{public function __construct(private readonly MailerInterface $mailer,private readonly EntityManagerInterface $em,private SettingRepository $settingRepository,#[Autowire('%env(MAIL_FROM)%')]private readonly string $mailFrom,) {}public function prePersist(Client $client, mixed $event): void{$this->sendPasswordEmail($client);}public function forgottenPassword(ForgottenPasswordEvent $event): void{$client = $event->getClient();$this->sendPasswordEmail($client);$this->em->persist($client);$this->em->flush();}private function sendPasswordEmail(Client $client): void{$setting = $this->settingRepository->findOneBy([]);if (null === $client->getPasswordToken()) {$client->generatePasswordToken();}$email = $client->getUtilisateur()->getEmail();if (null !== $email) {$email = (new TemplatedEmail())->from($this->mailFrom)->to($email)->subject($setting->getName().' - Création de votre mot de passe')->text('Sending emails is fun again!')->htmlTemplate('emails/client_password.html.twig')->context(['client' => $client]);$this->mailer->send($email);}}}