Passed
Push — master ( bc22b4...147e17 )
by Angel Fernando Quiroz
08:19 queued 30s
created

MessageHandler   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 27
c 1
b 0
f 0
dl 0
loc 43
rs 10
wmc 7

2 Methods

Rating   Name   Duplication   Size   Complexity  
B __invoke() 0 37 6
A __construct() 0 3 1
1
<?php
2
3
declare(strict_types=1);
4
5
/* For licensing terms, see /license.txt */
6
7
namespace Chamilo\CoreBundle\MessageHandler;
8
9
use Chamilo\CoreBundle\Entity\Message;
10
use Chamilo\CoreBundle\Entity\MessageRelUser;
11
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
12
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
13
use Symfony\Component\Mailer\Mailer;
14
use Symfony\Component\Messenger\Attribute\AsMessageHandler;
15
use Symfony\Component\Mime\Address;
16
17
#[AsMessageHandler]
18
class MessageHandler
19
{
20
    public function __construct(
21
        private readonly Mailer $mailer
22
    ) {}
23
    public function __invoke(Message $message): void
24
    {
25
        if (Message::MESSAGE_TYPE_INBOX !== $message->getMsgType()) {
26
            // Only send messages to the inbox.
27
            return;
28
        }
29
30
        $email = (new TemplatedEmail())
31
            ->subject($message->getTitle())
32
            ->from(new Address($message->getSender()->getEmail(), $message->getSender()->getFirstname()))
33
            ->htmlTemplate('@ChamiloCore/Mailer/Default/default.html.twig')
34
            ->textTemplate('@ChamiloCore/Mailer/Default/default.text.twig')
35
        ;
36
        foreach ($message->getReceivers() as $messageRelUser) {
37
            $receiver = $messageRelUser->getReceiver();
38
            $address = new Address($receiver->getEmail(), $receiver->getFirstname());
39
40
            if (MessageRelUser::TYPE_TO === $messageRelUser->getReceiverType()) {
41
                $email->addTo($address);
42
            } elseif (MessageRelUser::TYPE_CC === $messageRelUser->getReceiverType()) {
43
                $email->addBcc($address);
44
            }
45
        }
46
47
        $params = [
48
            'content' => $message->getContent(),
49
            'automatic_email_text' => '',
50
            'mail_header_style' => '',
51
            'mail_content_style' => '',
52
            'theme' => '',
53
        ];
54
        $email->context($params);
55
56
        try {
57
            $this->mailer->send($email);
58
        } catch (TransportExceptionInterface $e) {
59
            error_log('MessageHandler exception: '.$e->getMessage());
60
        }
61
    }
62
}
63