src/EventSubscriber/ConsumptionExport/ConsumptionExportSubscriber.php line 33

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber\ConsumptionExport;
  3. use App\Event\ConsumptionExport\ConsumptionExportEvent;
  4. use App\EventSubscriber\AbstractEmailSubscriber;
  5. use App\Manager\Mailer;
  6. use App\Manager\MailTypeInterface;
  7. use App\Repository\App\UserRepository;
  8. use Symfony\Contracts\Translation\TranslatorInterface;
  9. use Twig\Environment;
  10. class ConsumptionExportSubscriber extends AbstractEmailSubscriber
  11. {
  12.     public function __construct(
  13.         Mailer $mailer,
  14.         Environment $templating,
  15.         TranslatorInterface $translator,
  16.         private UserRepository $userRepository
  17.     )
  18.     {
  19.         parent::__construct($mailer$templating$translator);
  20.     }
  21.     public static function getSubscribedEvents(): array
  22.     {
  23.         return [
  24.             ConsumptionExportEvent::class => ['onConsumptionExport'],
  25.         ];
  26.     }
  27.     public function onConsumptionExport(ConsumptionExportEvent $event): void
  28.     {
  29.         $consumptionExport $event->getConsumptionExport();
  30.         $customerNumber $consumptionExport->getCustomerNumber();
  31.         $user $this->userRepository->findOneBy(
  32.             ['customerNumber' => $customerNumber]
  33.         );
  34.         if (!$user) {
  35.             throw new \RuntimeException("Unable de retrieve user with customerNumber {$customerNumber}");
  36.         }
  37.         $this->mailer->sendMail(
  38.             [$user->getEmail()],
  39.             $this->transEmail('export_consumption.subject'),
  40.             $this->templating->render('email/consumption/export/exportCreation.twig', [
  41.                 'customer' => $user,
  42.                 'consumptionExport' => $consumptionExport,
  43.             ]),
  44.             MailTypeInterface::CONSUMPTION_EXPORT
  45.         );
  46.     }
  47. }