Passed
Pull Request — master (#2)
by Igor
08:27
created

ShipmentIndexAction   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 2
eloc 12
c 0
b 0
f 0
dl 0
loc 27
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
A __invoke() 0 11 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Setono\SyliusLagersystemPlugin\Controller\Shipping;
6
7
use FOS\RestBundle\View\View;
8
use FOS\RestBundle\View\ViewHandlerInterface;
9
use Setono\SyliusLagersystemPlugin\Model\PaginatorDetails;
10
use Setono\SyliusLagersystemPlugin\ViewRepository\Shipment\ShipmentViewRepositoryInterface;
11
use Symfony\Component\HttpFoundation\Request;
12
use Symfony\Component\HttpFoundation\Response;
13
14
final class ShipmentIndexAction
15
{
16
    /** @var ViewHandlerInterface */
17
    private $viewHandler;
18
19
    /** @var ShipmentViewRepositoryInterface */
20
    private $shipmentViewRepository;
21
22
    public function __construct(
23
        ViewHandlerInterface $viewHandler,
24
        ShipmentViewRepositoryInterface $shipmentViewRepository
25
    ) {
26
        $this->viewHandler = $viewHandler;
27
        $this->shipmentViewRepository = $shipmentViewRepository;
28
    }
29
30
    public function __invoke(Request $request): Response
31
    {
32
        $page = $this->shipmentViewRepository->getAllPaginated(
33
            new PaginatorDetails($request->attributes->get('_route'), $request->query->all()),
34
            $request->query->get('locale')
35
        );
36
37
        return $this->viewHandler->handle(
38
            View::create(
39
                $page,
40
                Response::HTTP_OK
41
            )
42
        );
43
    }
44
}
45