Passed
Push — master ( 66fdc9...e2b180 )
by Alexander
08:00 queued 05:21
created

Mailer   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Test Coverage

Coverage 84.62%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 25
c 1
b 0
f 0
dl 0
loc 48
ccs 22
cts 26
cp 0.8462
rs 10
wmc 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A message() 0 8 1
A __construct() 0 4 1
A send() 0 26 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace App\Service;
6
7
use Yiisoft\Form\FormModelInterface;
8
use Yiisoft\Mailer\MailerInterface;
9
10
final class Mailer
11
{
12
    private MailerInterface $mailer;
13
    private string $emailTo;
14
15 6
    public function __construct(string $emailTo, MailerInterface $mailer)
16
    {
17 6
        $this->emailTo = $emailTo;
18 6
        $this->mailer = $mailer;
19 6
    }
20
21 2
    public function message(FormModelInterface $form): Message
22
    {
23 2
        return new Message(
24 2
            $form->getAttributeValue('username'),
25 2
            $form->getAttributeValue('email'),
26 2
            $form->getAttributeValue('subject'),
27 2
            $form->getAttributeValue('body'),
28 2
            $this->emailTo,
29
        );
30
    }
31
32 2
    public function send(Message $contactMessage)
33
    {
34 2
        $message = $this->mailer->compose(
35 2
            'contact',
36
            [
37 2
                'name' => $contactMessage->getName(),
38 2
                'content' => $contactMessage->getContent(),
39
            ]
40
        )
41 2
        ->setSubject($contactMessage->getSubject())
42 2
        ->setFrom($contactMessage->getEmail())
43 2
        ->setTo($contactMessage->getTo());
44
45 2
        $files = $contactMessage->getFiles();
46
47 2
        foreach ($files as $file) {
48
            $message->attachContent(
49
                (string)$file->getStream(),
50
                [
51
                    'fileName' => $file->getClientFilename(),
52
                    'contentType' => $file->getClientMediaType(),
53
                ]
54
            );
55
        }
56
57 2
        $message->send();
58 2
    }
59
}
60