Passed
Push — master ( f10e67...52beba )
by Julito
07:56
created

MessageHandler   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 23
c 1
b 0
f 0
dl 0
loc 38
rs 10
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 27 3
A __construct() 0 4 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\Repository\MessageRepository;
11
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
12
use Symfony\Component\Mailer\Mailer;
13
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
14
use Symfony\Component\Mime\Address;
15
16
class MessageHandler implements MessageHandlerInterface
17
{
18
    private Mailer $mailer;
19
    private MessageRepository $repo;
20
21
    public function __construct(Mailer $mailer, MessageRepository $repo)
22
    {
23
        $this->mailer = $mailer;
24
        $this->repo = $repo;
25
    }
26
27
    public function __invoke(Message $message): void
28
    {
29
        if (Message::MESSAGE_TYPE_INBOX !== $message->getMsgType()) {
30
            // Only send messages to the inbox.
31
            return;
32
        }
33
34
        $email = (new TemplatedEmail())
35
            ->subject($message->getTitle())
36
            ->from(new Address($message->getSender()->getEmail(), $message->getSender()->getFirstname()))
37
            ->htmlTemplate('@ChamiloCore/Mailer/Default/default.html.twig')
38
            ->textTemplate('@ChamiloCore/Mailer/Default/default.text.twig')
39
        ;
40
        foreach ($message->getReceivers() as $receiver) {
41
            $address = new Address($receiver->getEmail(), $receiver->getFirstname());
42
            $email->addBcc($address);
43
        }
44
45
        $params = [
46
            'content' => $message->getContent(),
47
            'automatic_email_text' => '',
48
            'mail_header_style' => '',
49
            'mail_content_style' => '',
50
            'theme' => '',
51
        ];
52
        $email->context($params);
53
        $this->mailer->send($email);
54
    }
55
}
56