convertCampaigns()   B
last analyzed

Complexity

Conditions 8
Paths 72

Size

Total Lines 67
Code Lines 41

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 41
dl 0
loc 67
rs 8.0195
c 0
b 0
f 0
cc 8
nc 72
nop 1

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
/**
4
 * MIT License
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerEco\Client\FactFinderSdk\Business\Api\Converter;
9
10
use FACTFinder\Adapter\ProductCampaign as FactFinderProductCampaign;
11
use Generated\Shared\Transfer\FactFinderSdkDataCampaignIteratorTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...ampaignIteratorTransfer 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 Generated\Shared\Transfer\FactFinderSdkDataCampaignTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...SdkDataCampaignTransfer 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...
13
use Generated\Shared\Transfer\FactFinderSdkProductCampaignResponseTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...ampaignResponseTransfer 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...
14
use SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\AdvisorQuestionConverterInterface;
15
use SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\RecordConverterInterface;
16
17
class ProductCampaignResponseConverter extends BaseConverter implements ConverterInterface
18
{
19
    /**
20
     * @var \FACTFinder\Adapter\ProductCampaign
21
     */
22
    protected $productCampaignAdapter;
23
24
    /**
25
     * @var \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\RecordConverterInterface
26
     */
27
    protected $recordConverter;
28
29
    /**
30
     * @var \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\AdvisorQuestionConverterInterface
31
     */
32
    protected $advisorQuestionConverter;
33
34
    /**
35
     * @param \FACTFinder\Adapter\ProductCampaign $productCampaignAdapter
36
     * @param \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\RecordConverterInterface $recordConverter
37
     * @param \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\AdvisorQuestionConverterInterface $advisorQuestionConverter
38
     */
39
    public function __construct(
40
        FactFinderProductCampaign $productCampaignAdapter,
41
        RecordConverterInterface $recordConverter,
42
        AdvisorQuestionConverterInterface $advisorQuestionConverter
43
    ) {
44
        $this->productCampaignAdapter = $productCampaignAdapter;
45
        $this->recordConverter = $recordConverter;
46
        $this->advisorQuestionConverter = $advisorQuestionConverter;
47
    }
48
49
    /**
50
     * @return \Generated\Shared\Transfer\FactFinderSdkProductCampaignResponseTransfer
51
     */
52
    public function convert()
53
    {
54
        $responseTransfer = new FactFinderSdkProductCampaignResponseTransfer();
55
        /** @var \FACTFinder\Data\CampaignIterator $campaigns */
56
        $campaigns = $this->productCampaignAdapter->getCampaigns();
57
58
        $responseTransfer->setCampaignIterator(
59
            $this->convertCampaigns($campaigns)
60
        );
61
62
        return $responseTransfer;
63
    }
64
65
    /**
66
     * @param \FACTFinder\Data\CampaignIterator $campaigns
67
     *
68
     * @return \Generated\Shared\Transfer\FactFinderSdkDataCampaignIteratorTransfer
69
     */
70
    protected function convertCampaigns($campaigns)
71
    {
72
        $factFinderDataCampaignIteratorTransfer = new FactFinderSdkDataCampaignIteratorTransfer();
73
        $factFinderDataCampaignIteratorTransfer->setHasRedirect($campaigns->hasRedirect());
74
        $factFinderDataCampaignIteratorTransfer->setRedirectUrl($campaigns->getRedirectUrl());
75
        $factFinderDataCampaignIteratorTransfer->setHasFeedback($campaigns->hasFeedback());
76
//        $factFinderDataCampaignIteratorTransfer->setFeedback($campaigns->getFeedback());
77
        $factFinderDataCampaignIteratorTransfer->setHasPushedProducts($campaigns->hasPushedProducts());
78
        /** @var \FACTFinder\Data\Record $pushedProduct */
79
        foreach ($campaigns->getPushedProducts() as $pushedProduct) {
80
            $this->recordConverter->setRecord($pushedProduct);
81
            $factFinderDataCampaignIteratorTransfer->addPushedProducts(
82
                $this->recordConverter->convert()
83
            );
84
        }
85
        $factFinderDataCampaignIteratorTransfer->setHasActiveQuestions($campaigns->hasActiveQuestions());
86
        /** @var \FACTFinder\Data\Record $activeQuestion */
87
        foreach ($campaigns->getActiveQuestions() as $activeQuestion) {
88
            $this->recordConverter->setRecord($activeQuestion);
89
            $factFinderDataCampaignIteratorTransfer->addGetActiveQuestions(
90
                $this->recordConverter->convert()
91
            );
92
        }
93
        $factFinderDataCampaignIteratorTransfer->setHasAdvisorTree($campaigns->hasAdvisorTree());
94
        /** @var \FACTFinder\Data\Record $advisorTree */
95
        foreach ($campaigns->getAdvisorTree() as $advisorTree) {
96
            $this->recordConverter->setRecord($advisorTree);
97
            $factFinderDataCampaignIteratorTransfer->addAdvisorTree(
98
                $this->recordConverter->convert()
99
            );
100
        }
101
102
        /** @var \FACTFinder\Data\Campaign $campaign */
103
        foreach ($campaigns as $campaign) {
104
            $factFinderDataCampaignTransfer = new FactFinderSdkDataCampaignTransfer();
105
            $factFinderDataCampaignTransfer->setName($campaign->getName());
106
            $factFinderDataCampaignTransfer->setCategory($campaign->getCategory());
107
            $factFinderDataCampaignTransfer->setRedirectUrl($campaign->getRedirectUrl());
108
            $factFinderDataCampaignTransfer->setFeedback($campaign->getFeedbackArray());
109
            $factFinderDataCampaignTransfer->setHasRedirect($campaign->hasRedirect());
110
            $factFinderDataCampaignTransfer->setHasPushedProducts($campaign->hasPushedProducts());
111
            /** @var \FACTFinder\Data\Record $pushedProduct */
112
            foreach ($campaign->getPushedProducts() as $pushedProduct) {
113
                $this->recordConverter->setRecord($pushedProduct);
114
                $factFinderDataCampaignTransfer->addPushedProducts(
115
                    $this->recordConverter->convert()
116
                );
117
            }
118
            /** @var \FACTFinder\Data\AdvisorQuestion $activeQuestion */
119
            foreach ($campaign->getActiveQuestions() as $activeQuestion) {
120
                $this->advisorQuestionConverter->setAdvisorQuestion($activeQuestion);
121
                $factFinderDataCampaignTransfer->addActiveQuestions(
122
                    $this->advisorQuestionConverter->convert()
123
                );
124
            }
125
            /** @var \FACTFinder\Data\AdvisorQuestion $advisorTree */
126
            foreach ($campaign->getAdvisorTree() as $advisorTree) {
127
                $this->advisorQuestionConverter->setAdvisorQuestion($advisorTree);
128
                $factFinderDataCampaignTransfer->addAdvisorTree(
129
                    $this->advisorQuestionConverter->convert()
130
                );
131
            }
132
133
            $factFinderDataCampaignIteratorTransfer->addCampaigns($factFinderDataCampaignTransfer);
134
        }
135
136
        return $factFinderDataCampaignIteratorTransfer;
137
    }
138
}
139