<?php
namespace App\EventListener;
use App\Entity\User\User;
use App\Event\User\UserAddedEvent;
use App\Event\User\UserDeletedEvent;
use App\Repository\AvailableDayRepository;
use App\Repository\VacationRepository;
use App\Services\Helpers\MailDriver;
use PHPMailer\PHPMailer\PHPMailer;
class UserListener
{
public function __construct(
public MailDriver $mailDriver,
public PHPMailer $phpMailer,
public AvailableDayRepository $availableDayRepository,
public VacationRepository $vacationRepository,
)
{
$mailDriver->setMailerClient($phpMailer);
$mailDriver->initMailer();
$mailDriver::getInstance();
}
public function onUserDeleted(UserDeletedEvent $event): void
{
$user = $event->getUser();
$availableDays = $this->availableDayRepository->findOneBy((['user' => $user]));
$vacations = $this->vacationRepository->findBy(['user' => $user]);
$this->availableDayRepository->remove($availableDays);
foreach ($vacations as $vacation) {
$this->vacationRepository->remove($vacation);
}
}
public function onUserAdded(UserAddedEvent $event): void
{
$user = $event->getUser();
$addres = $user->getUserIdentifier();
$subject = "Письмо с данными для входа";
$message = "<div class='mail-container'>
<h3>Добро пожаловать в команду Nova!</h3>
<p><b>Ваши данные для входа в консоль:</b></p>
<p>Почта: {$user->getUserIdentifier()}</p>
<p>Логин Redmine: {$user->getSlackNick()}</p>
<p>Пароль: {$event->getPassword()}</p>
</div>";
$this->mailDriver->send($subject, $message, $addres);
}
}