Tracker::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 3
rs 10
1
<?php
2
3
/**
4
 * MIT License
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
namespace SprykerEco\Zed\FactFinder\Business\Tracker;
8
9
use Generated\Shared\Transfer\FactFinderSdkTrackingRequestTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...TrackingRequestTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
10
use Generated\Shared\Transfer\ItemTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\ItemTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
11
use Generated\Shared\Transfer\QuoteTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\QuoteTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
12
use SprykerEco\Client\FactFinderSdk\FactFinderSdkClientInterface;
13
14
class Tracker implements TrackerInterface
15
{
16
    const CHECKOUT_TRACK_EVENT_NAME = 'checkout';
17
18
    /**
19
     * @var \SprykerEco\Client\FactFinderSdk\FactFinderSdkClientInterface
20
     */
21
    protected $factFinderSdkClient;
22
23
    /**
24
     * Tracker constructor.
25
     *
26
     * @param \SprykerEco\Client\FactFinderSdk\FactFinderSdkClientInterface $factFinderSdkClient
27
     */
28
    public function __construct(FactFinderSdkClientInterface $factFinderSdkClient)
29
    {
30
        $this->factFinderSdkClient = $factFinderSdkClient;
31
    }
32
33
    /**
34
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
35
     *
36
     * @return void
37
     */
38
    public function track(QuoteTransfer $quoteTransfer)
39
    {
40
        $trackingRequests = [];
41
42
        foreach ($quoteTransfer->getItems() as $item) {
43
            if (isset($trackingRequests[$item->getSku()])) {
44
                $trackingRequest = $trackingRequests[$item->getSku()];
45
                $trackingRequest->setCount($trackingRequest->getCount() + $item->getQuantity());
46
            } else {
47
                $trackingRequests[$item->getSku()] = $this->createTrackingRequest($item, $quoteTransfer);
48
            }
49
        }
50
        $this->trackItemsCheckout($trackingRequests);
51
    }
52
53
    /**
54
     * @param \Generated\Shared\Transfer\ItemTransfer $itemTransfer
55
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
56
     *
57
     * @return \Generated\Shared\Transfer\FactFinderSdkTrackingRequestTransfer
58
     */
59
    protected function createTrackingRequest(ItemTransfer $itemTransfer, QuoteTransfer $quoteTransfer)
60
    {
61
        $trackingRequest = new FactFinderSdkTrackingRequestTransfer();
62
        $trackingRequest->setEvent(static::CHECKOUT_TRACK_EVENT_NAME);
63
        $trackingRequest->setSid($quoteTransfer->getFactFinderSid());
64
        $trackingRequest->setMasterId($itemTransfer->getAbstractSku());
65
        $trackingRequest->setId($itemTransfer->getSku());
66
        $trackingRequest->setCount($itemTransfer->getQuantity());
67
        $trackingRequest->setPrice($itemTransfer->getUnitPrice() / 100);
68
69
        return $trackingRequest;
70
    }
71
72
    /**
73
     * @param \Generated\Shared\Transfer\FactFinderSdkTrackingRequestTransfer[] $trackingRequests
74
     *
75
     * @return void
76
     */
77
    protected function trackItemsCheckout($trackingRequests)
78
    {
79
        foreach ($trackingRequests as $trackingRequest) {
80
            $this->factFinderSdkClient->track($trackingRequest);
81
        }
82
    }
83
}
84