Completed
Push — master ( 41948a...5bb6bb )
by Łukasz
17:08 queued 13:33
created

PickupCartHandler::handle()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 14
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 8
nc 1
nop 1
1
<?php
2
3
namespace Sylius\ShopApiPlugin\Handler;
4
5
use Sylius\Component\Channel\Repository\ChannelRepositoryInterface;
6
use Sylius\Component\Core\Model\ChannelInterface;
7
use Sylius\Component\Core\Model\OrderInterface;
8
use Sylius\Component\Core\Repository\OrderRepositoryInterface;
9
use Sylius\Component\Resource\Factory\FactoryInterface;
10
use Sylius\ShopApiPlugin\Command\PickupCart;
11
12
final class PickupCartHandler
13
{
14
    /**
15
     * @var FactoryInterface
16
     */
17
    private $cartFactory;
18
19
    /**
20
     * @var OrderRepositoryInterface
21
     */
22
    private $cartRepository;
23
24
    /**
25
     * @var ChannelRepositoryInterface
26
     */
27
    private $channelRepository;
28
29
    /**
30
     * @param FactoryInterface $cartFactory
31
     * @param OrderRepositoryInterface $cartRepository
32
     * @param ChannelRepositoryInterface $channelRepository
33
     */
34
    public function __construct(FactoryInterface $cartFactory, OrderRepositoryInterface $cartRepository, ChannelRepositoryInterface $channelRepository)
35
    {
36
        $this->cartFactory = $cartFactory;
37
        $this->cartRepository = $cartRepository;
38
        $this->channelRepository = $channelRepository;
39
    }
40
41
    /**
42
     * @param PickupCart $pickupCart
43
     */
44
    public function handle(PickupCart $pickupCart)
45
    {
46
        /** @var ChannelInterface $channel */
47
        $channel = $this->channelRepository->findOneByCode($pickupCart->channelCode());
48
49
        /** @var OrderInterface $cart */
50
        $cart = $this->cartFactory->createNew();
51
        $cart->setChannel($channel);
52
        $cart->setCurrencyCode($channel->getBaseCurrency()->getCode());
53
        $cart->setLocaleCode($channel->getDefaultLocale()->getCode());
54
        $cart->setTokenValue($pickupCart->token());
55
56
        $this->cartRepository->add($cart);
57
    }
58
}
59