SubscriptionFacade::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PH\Bundle\CoreBundle\Facade;
6
7
use PH\Component\Core\Model\SubscriptionInterface;
8
use PH\Component\Core\Processor\SubscriptionProcessorInterface;
9
use PH\Component\Subscription\Model\SubscriptionItemInterface;
10
use Sylius\Component\Resource\Factory\FactoryInterface;
11
12
final class SubscriptionFacade implements SubscriptionFacadeInterface
13
{
14
    /**
15
     * @var FactoryInterface
16
     */
17
    private $subscriptionItemFactory;
18
19
    private $subscriptionProcessor;
20
21
    /**
22
     * SubscriptionFacade constructor.
23
     *
24
     * @param FactoryInterface               $subscriptionItemFactory
25
     * @param SubscriptionProcessorInterface $subscriptionProcessor
26
     */
27
    public function __construct(FactoryInterface $subscriptionItemFactory, SubscriptionProcessorInterface $subscriptionProcessor)
28
    {
29
        $this->subscriptionItemFactory = $subscriptionItemFactory;
30
        $this->subscriptionProcessor = $subscriptionProcessor;
31
    }
32
33
    public function prepareSubscription(SubscriptionInterface $subscription): SubscriptionInterface
34
    {
35
        /** @var SubscriptionItemInterface $subscriptionItem */
36
        $subscriptionItem = $this->subscriptionItemFactory->createNew();
37
38
        $subscriptionItem->setUnitPrice($subscription->getAmount());
39
        $subscriptionItem->setQuantity(1);
40
        $subscriptionItem->setTotal($subscription->getAmount());
41
        $subscription->addItem($subscriptionItem);
42
43
        $subscription->recalculateItemsTotal();
44
45
        $this->subscriptionProcessor->process($subscription);
46
47
        return $subscription;
48
    }
49
}
50