src/EventSubscriber/Contact/ContactSubscriber.php line 48

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber\Contact;
  3. use App\Entity\ContactSheet\ContactSheet;
  4. use App\Entity\User;
  5. use App\Event\Contact\ContactUpdatedEvent;
  6. use App\EventSubscriber\AbstractEmailSubscriber;
  7. use App\Manager\ContactSheetManager;
  8. use App\Manager\Mailer;
  9. use App\Manager\MailTypeInterface;
  10. use App\Repository\App\ContactSheet\ContactSheetRepository;
  11. use App\Repository\Scp\CenterRepository;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. use Symfony\Contracts\Translation\TranslatorInterface;
  14. use Twig\Environment;
  15. class ContactSubscriber  extends AbstractEmailSubscriber implements EventSubscriberInterface
  16. {
  17.     protected $contactSheetManager;
  18.     protected $contactSheetRepository;
  19.     protected $centerRepository;
  20.     protected $mdtEmail;
  21.     public function __construct(
  22.         Mailer $mailer,
  23.         Environment $templating,
  24.         TranslatorInterface $translator,
  25.         ContactSheetManager $contactSheetManager,
  26.         ContactSheetRepository $contactSheetRepository,
  27.         CenterRepository $centerRepository,
  28.         string $mdtEmail
  29.     ) {
  30.         parent::__construct($mailer$templating$translator);
  31.         $this->contactSheetManager $contactSheetManager;
  32.         $this->contactSheetRepository $contactSheetRepository;
  33.         $this->centerRepository $centerRepository;
  34.         $this->mdtEmail $mdtEmail;
  35.     }
  36.     public static function getSubscribedEvents(): array
  37.     {
  38.         return [
  39.             ContactUpdatedEvent::class => 'onUpdated',
  40.         ];
  41.     }
  42.     public function onUpdated(ContactUpdatedEvent $event)
  43.     {
  44.         $contact $event->getUser();
  45.         $mainAccount $contact->getMainAccount();
  46.         $contactSheets $this->contactSheetRepository->findAllByUserId($contact->getId());
  47.         foreach ($contactSheets as $contactSheet){
  48.             $this->contactSheetManager->generateFile($contactSheet$mainAccount);
  49.             $this->sendEmail(
  50.                 $contactSheet,
  51.                 $mainAccount,
  52.                 'contact_sheet.updated.subject',
  53.                 'email/contact_sheet/updated.html.twig',
  54.                 MailTypeInterface::CONTACT_SHEET_CREATED
  55.             );
  56.         }
  57.     }
  58.     protected function sendEmail(ContactSheet $contactSheetUser $userstring $subjectstring $templatestring $mailType): void
  59.     {
  60.         $subject $this->transEmail($subject);
  61.         $message $this->templating->render($template, [
  62.             'customer'     => $user,
  63.             'contactSheet' => $contactSheet,
  64.         ]);
  65.         $to = [$user->getEmail(), $this->mdtEmail];
  66.         $center $this->centerRepository->findOneByContractNumber($contactSheet->getContractNumber());
  67.         if (null !== $center) {
  68.             $to[] = $center['Email'];
  69.         }
  70.         $filePath $this->contactSheetManager->getFilePath($contactSheet);
  71.         $this->mailer->sendMail(
  72.             $to,
  73.             $subject,
  74.             $message,
  75.             $mailType,
  76.             [\Swift_Attachment::fromPath($filePath)]
  77.         );
  78.     }
  79. }