Passed
Push — master ( 6afdcd...dc022a )
by Hirofumi
05:03
created

FilterNotificationsHandler   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 2
lcom 1
cbo 3
dl 0
loc 43
ccs 13
cts 13
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
A handle() 0 14 1
1
<?php
2
declare(strict_types=1);
3
4
namespace Shippinno\Notification\Application\Query;
5
6
use Shippinno\Notification\Application\DataTransformer\NotificationDataTransformer;
7
use Shippinno\Notification\Domain\Model\Notification;
8
use Shippinno\Notification\Domain\Model\NotificationRepository;
9
10
class FilterNotificationsHandler
11
{
12
    /**
13
     * @var NotificationRepository
14
     */
15
    private $notificationRepository;
16
17
    /**
18
     * @var NotificationDataTransformer
19
     */
20
    private $notificationDataTransformer;
21
22
    /**
23
     * @param NotificationRepository $notificationRepository
24
     * @param NotificationDataTransformer $notificationDataTransformer
25
     */
26 1
    public function __construct(
27
        NotificationRepository $notificationRepository,
28
        NotificationDataTransformer $notificationDataTransformer
29
    ) {
30 1
        $this->notificationRepository = $notificationRepository;
31 1
        $this->notificationDataTransformer = $notificationDataTransformer;
32 1
    }
33
34
    /**
35
     * @param FilterNotifications $query
36
     * @return array
37
     */
38 1
    public function handle(FilterNotifications $query): array
39
    {
40 1
        $notifications = $this->notificationRepository->query(
41 1
            $query->specification(),
42 1
            $query->orderings(),
43 1
            $query->maxResults(),
44 1
            $query->firstResult()
45
        );
46
47
        return array_map(function (Notification $notification) {
48 1
            $this->notificationDataTransformer->write($notification);
49 1
            return $this->notificationDataTransformer->read();
50 1
        }, $notifications);
51
    }
52
}
53