src/EventListener/UserListener.php line 39

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Entity\User\User;
  4. use App\Event\User\UserAddedEvent;
  5. use App\Event\User\UserDeletedEvent;
  6. use App\Repository\AvailableDayRepository;
  7. use App\Repository\VacationRepository;
  8. use App\Services\Helpers\MailDriver;
  9. use PHPMailer\PHPMailer\PHPMailer;
  10. class UserListener
  11. {
  12.     public function __construct(
  13.         public MailDriver $mailDriver,
  14.         public PHPMailer $phpMailer,
  15.         public AvailableDayRepository $availableDayRepository,
  16.         public VacationRepository $vacationRepository,
  17.     )
  18.     {
  19.         $mailDriver->setMailerClient($phpMailer);
  20.         $mailDriver->initMailer();
  21.         $mailDriver::getInstance();
  22.     }
  23.     public function onUserDeleted(UserDeletedEvent $event): void
  24.     {
  25.         $user $event->getUser();
  26.         $availableDays $this->availableDayRepository->findOneBy((['user' => $user]));
  27.         $vacations $this->vacationRepository->findBy(['user' => $user]);
  28.         $this->availableDayRepository->remove($availableDays);
  29.         foreach ($vacations as $vacation) {
  30.             $this->vacationRepository->remove($vacation);
  31.         }
  32.     }
  33.     public function onUserAdded(UserAddedEvent $event): void
  34.     {
  35.         $user $event->getUser();
  36.         $addres $user->getUserIdentifier();
  37.         $subject "Письмо с данными для входа";
  38.         $message "<div class='mail-container'>
  39.                         <h3>Добро пожаловать в команду Nova!</h3>
  40.                         <p><b>Ваши данные для входа в консоль:</b></p>
  41.                         <p>Почта: {$user->getUserIdentifier()}</p>
  42.                         <p>Логин Redmine: {$user->getSlackNick()}</p>
  43.                         <p>Пароль: {$event->getPassword()}</p>
  44.                    </div>";
  45.         $this->mailDriver->send($subject$message$addres);
  46.     }
  47. }