EmailNotificationStrategy::notify()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of the Explicit Architecture POC,
7
 * which is created on top of the Symfony Demo application.
8
 *
9
 * (c) Herberto Graça <[email protected]>
10
 *
11
 * For the full copyright and license information, please view the LICENSE
12
 * file that was distributed with this source code.
13
 */
14
15
namespace Acme\App\Infrastructure\Notification\Strategy\Email;
16
17
use Acme\App\Core\Port\Notification\Client\Email\EmailerInterface;
18
use Acme\App\Core\Port\Notification\NotificationInterface;
19
use Acme\App\Infrastructure\Notification\NotificationType;
20
use Acme\App\Infrastructure\Notification\Strategy\AbstractNotificationStrategy;
21
22
/**
23
 * @author Herberto Graca <[email protected]>
24
 * @author Nicolae Nichifor
25
 */
26
final class EmailNotificationStrategy extends AbstractNotificationStrategy
27
{
28
    /**
29
     * @var NotificationType
30
     */
31
    private $type;
32
33
    /**
34
     * @var EmailerInterface
35
     */
36
    private $emailer;
37
38
    public function __construct(EmailerInterface $emailer)
39
    {
40
        $this->type = NotificationType::email();
41
        $this->emailer = $emailer;
42
    }
43
44
    public function getType(): NotificationType
45
    {
46
        return $this->type;
47
    }
48
49
    public function notify(NotificationInterface $notification): void
50
    {
51
        $this->emailer->send($this->generateNotificationMessage($notification));
52
    }
53
}
54