Completed
Push — master ( 8d10db...a4c05f )
by Łukasz
10s
created

AddressAction::__invoke()   A

Complexity

Conditions 2
Paths 1

Size

Total Lines 14
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 14
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 9
nc 1
nop 1
1
<?php
2
3
namespace Sylius\ShopApiPlugin\Controller\Checkout;
4
5
use FOS\RestBundle\View\View;
6
use FOS\RestBundle\View\ViewHandlerInterface;
7
use League\Tactician\CommandBus;
8
use Sylius\ShopApiPlugin\Command\AddressOrder;
9
use Sylius\ShopApiPlugin\Model\Address;
10
use Symfony\Component\HttpFoundation\Request;
11
use Symfony\Component\HttpFoundation\Response;
12
13
final class AddressAction
14
{
15
    /**
16
     * @var ViewHandlerInterface
17
     */
18
    private $viewHandler;
19
20
    /**
21
     * @var CommandBus
22
     */
23
    private $bus;
24
25
    /**
26
     * @param ViewHandlerInterface $viewHandler
27
     * @param CommandBus $bus
28
     */
29
    public function __construct(ViewHandlerInterface $viewHandler, CommandBus $bus)
30
    {
31
        $this->viewHandler = $viewHandler;
32
        $this->bus = $bus;
33
    }
34
35
    /**
36
     * @param Request $request
37
     *
38
     * @return Response
39
     */
40
    public function __invoke(Request $request)
41
    {
42
        $this->bus->handle(AddressOrder::create(
43
            $request->attributes->get('token'),
44
            Address::createFromArray($request->request->get('shippingAddress')),
45
            Address::createFromArray(
46
                $request->request->has('billingAddress') ?
47
                    $request->request->get('billingAddress') :
48
                    $request->request->get('shippingAddress')
49
            )
50
        ));
51
52
        return $this->viewHandler->handle(View::create(null, Response::HTTP_NO_CONTENT));
53
    }
54
}
55