TemplatedEmailComposer   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 36
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 14
dl 0
loc 36
ccs 16
cts 16
cp 1
rs 10
c 1
b 0
f 0
wmc 6

3 Methods

Rating   Name   Duplication   Size   Complexity  
A applyTemplates() 0 10 3
A __construct() 0 3 1
A compose() 0 11 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace FH\Bundle\MailerBundle\Composer;
6
7
use FH\Bundle\MailerBundle\Email\MessageOptions;
8
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
9
use Symfony\Component\Mailer\Exception\InvalidArgumentException;
10
use Symfony\Component\Mime\Email;
11
12
final class TemplatedEmailComposer implements ComposerInterface
13
{
14
    /** @var MessageOptions */
15
    private $messageOptions;
16
17 4
    public function __construct(MessageOptions $messageOptions)
18
    {
19 4
        $this->messageOptions = $messageOptions;
20 4
    }
21
22
    /**
23
     * @return TemplatedEmail
24
     */
25 4
    public function compose(array $context = [], Email $message = null): Email
26
    {
27 4
        $message = $message ?? new TemplatedEmail();
28 4
        if (!$message instanceof TemplatedEmail) {
29 1
            throw new InvalidArgumentException(sprintf('Expected instance of %s, instance of %s given', TemplatedEmail::class, \get_class($message)));
30
        }
31
32 3
        (new ApplyEmailMessageOptions())->apply($message, $this->messageOptions);
33 3
        $this->applyTemplates($context, $message);
34
35 3
        return $message;
36
    }
37
38 3
    private function applyTemplates(array $context, TemplatedEmail $message): void
39
    {
40 3
        $message->context($context);
41
42 3
        if ($this->messageOptions->hasHtmlTemplate()) {
43 3
            $message->htmlTemplate($this->messageOptions->getHtmlTemplate());
44
        }
45
46 3
        if ($this->messageOptions->hasTextTemplate()) {
47 3
            $message->textTemplate($this->messageOptions->getTextTemplate());
48
        }
49 3
    }
50
}
51