src/User/EventSubscriber/DeleteUserSubscriber.php line 57

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Harmonizely\User\EventSubscriber;
  4. use Harmonizely\Core\Email\ListContainer\EmailListContainer;
  5. use Harmonizely\Entity\Company\DeletionReasonEntity;
  6. use Harmonizely\Mailer\InternalMailer;
  7. use Harmonizely\Repository\Company\Contract\IDeletionReasonRepository;
  8. use Harmonizely\User\UserDeletedEvent;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. use Symfony\Component\Mime\Address;
  11. class DeleteUserSubscriber implements EventSubscriberInterface
  12. {
  13.     /**
  14.      * @var EmailListContainer
  15.      */
  16.     private EmailListContainer $emailListContainer;
  17.     /**
  18.      * @var IDeletionReasonRepository
  19.      */
  20.     private IDeletionReasonRepository $deletionReasonRepository;
  21.     /**
  22.      * @var InternalMailer
  23.      */
  24.     private InternalMailer $internalMailer;
  25.     /**
  26.      * @param EmailListContainer $emailListContainer
  27.      * @param IDeletionReasonRepository $deletionReasonRepository
  28.      * @param InternalMailer $internalMailer
  29.      */
  30.     public function __construct(
  31.         EmailListContainer $emailListContainer,
  32.         IDeletionReasonRepository $deletionReasonRepository,
  33.         InternalMailer $internalMailer
  34.     )
  35.     {
  36.         $this->emailListContainer $emailListContainer;
  37.         $this->deletionReasonRepository $deletionReasonRepository;
  38.         $this->internalMailer $internalMailer;
  39.     }
  40.     public static function getSubscribedEvents(): array
  41.     {
  42.         return [
  43.             UserDeletedEvent::NAME => 'onUserDeleted',
  44.         ];
  45.     }
  46.     public function onUserDeleted(UserDeletedEvent $event): void
  47.     {
  48.         $user $event->getUser();
  49.         $this->deletionReasonRepository->save(new DeletionReasonEntity(
  50.             $user->getEmail(),
  51.             $event->getReason(),
  52.             $event->isDeleted()
  53.         ));
  54.         $this->internalMailer->send(
  55.             'user_deleted.html.twig',
  56.             'Account has been deleted!',
  57.             [
  58.                 $this->emailListContainer->get('main')->getEmail() => $this->emailListContainer->get('main')->getName(),
  59. //                'victoria@notando.is' => 'Victoria',
  60. //                'nicholas@notando.is' => 'Kolya',
  61. //                'mykola.alias@gmail.com' => 'Kolya 2',
  62.             ],
  63.             [
  64.                 'username' => $user->getFullName(),
  65.                 'emailCanonical' => $user->getEmailCanonical(),
  66.                 'reason' => $event->getReason(),
  67.                 'recipient' => $this->emailListContainer->get('main')->getEmail(),
  68.             ],
  69.             'notification',
  70.             false
  71.         );
  72.     }
  73. }