Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
namespace App\Messenger\Handler;
use App\Entity\Quest;
use App\Messenger\Message\QuestMessage;
use App\Messenger\Objects\QuestsEnd;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\Messenger\Attribute\AsMessageHandler;
use Symfony\Component\Messenger\MessageBusInterface;
#[AsMessageHandler]
class QuestEndMessageHandler
{
public function __construct(
protected MessageBusInterface $bus,
private ManagerRegistry $doctrine,
private string $fromEmail,
)
{
}
/**
* Обработка письма из очереди
*
* @param QuestsEnd $message
*
* @return void
*/
public function __invoke(QuestsEnd $message): void
{
$quests = $this->doctrine->getRepository(Quest::class)->getEndQuests();
foreach ($quests as $quest) {
$appointments = $quest->getAppointments();
$questName = $quest->getName();
foreach ($appointments as $appointment) {
$user = $appointment->getRelatedUser();
if ($user) {
$userName = $user->getFullName();
$questMessage = new QuestMessage(
$this->fromEmail,
$user->getEmail(),
"Квест \"{$questName}\" прошёл!",
<<<HTML
<div>
Здравствуйте, {$userName}!
</div>
<div>
Квест {$questName} уже прошёл, какие у Вас остались впечатления?
</div>
<div>
Оставьте отзыв на сайте
</div>
HTML
);
$this->bus->dispatch($questMessage);
}
}
}
}
}