SubscriptionFacade   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 0
Metric Value
wmc 2
lcom 1
cbo 4
dl 0
loc 38
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A prepareSubscription() 0 16 1
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