convertResultsPerPageOptions()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 25
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 14
c 1
b 0
f 0
dl 0
loc 25
rs 9.7998
cc 3
nc 3
nop 1
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 ArrayObject;
11
use FACTFinder\Adapter\Search as FactFinderSearchAdapter;
12
use FACTFinder\Data\AfterSearchNavigation;
13
use FACTFinder\Data\ArticleNumberSearchStatus;
14
use FACTFinder\Data\BreadCrumbTrail;
15
use FACTFinder\Data\CampaignIterator;
16
use FACTFinder\Data\Result;
17
use FACTFinder\Data\ResultsPerPageOptions;
18
use FACTFinder\Data\Sorting;
19
use FACTFinder\Data\SuggestQuery;
20
use Generated\Shared\Transfer\FactFinderSdkDataAfterSearchNavigationTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...earchNavigationTransfer 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...
21
use Generated\Shared\Transfer\FactFinderSdkDataBreadCrumbTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...kDataBreadCrumbTransfer 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...
22
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...
23
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...
24
use Generated\Shared\Transfer\FactFinderSdkDataResultsPerPageOptionsTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...sPerPageOptionsTransfer 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...
25
use Generated\Shared\Transfer\FactFinderSdkDataResultTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...erSdkDataResultTransfer 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...
26
use Generated\Shared\Transfer\FactFinderSdkDataSingleWordSearchItemTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...eWordSearchItemTransfer 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...
27
use Generated\Shared\Transfer\FactFinderSdkDataSuggestQueryTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...ataSuggestQueryTransfer 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...
28
use Generated\Shared\Transfer\FactFinderSdkSearchResponseTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...kSearchResponseTransfer 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...
29
use Generated\Shared\Transfer\FactFinderSearchRedirectTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...rSearchRedirectTransfer 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...
30
use SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\AdvisorQuestionConverterInterface;
31
use SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\FilterGroupConverterInterface;
32
use SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\ItemConverterInterface;
33
use SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\PagingConverterInterface;
34
use SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\RecordConverterInterface;
35
use SprykerEco\Client\FactFinderSdk\FactFinderSdkConfig;
36
use SprykerEco\Shared\FactFinderSdk\FactFinderSdkConstants;
37
38
class SearchResponseConverter extends BaseConverter implements ConverterInterface
39
{
40
    /**
41
     * @var \FACTFinder\Adapter\Search
42
     */
43
    protected $searchAdapter;
44
45
    /**
46
     * @var \Generated\Shared\Transfer\FactFinderSdkSearchResponseTransfer
47
     */
48
    protected $responseTransfer;
49
50
    /**
51
     * @var \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\PagingConverterInterface
52
     */
53
    protected $pagingConverter;
54
55
    /**
56
     * @var \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\ItemConverterInterface
57
     */
58
    protected $itemConverter;
59
60
    /**
61
     * @var \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\RecordConverterInterface
62
     */
63
    protected $recordConverter;
64
65
    /**
66
     * @var \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\FilterGroupConverterInterface
67
     */
68
    protected $filterGroupConverter;
69
70
    /**
71
     * @var \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\AdvisorQuestionConverterInterface
72
     */
73
    protected $advisorQuestionConverter;
74
75
    /**
76
     * @var \SprykerEco\Client\FactFinderSdk\FactFinderSdkConfig
77
     */
78
    private $factFinderSdkConfig;
79
80
    /**
81
     * @param \FACTFinder\Adapter\Search $searchAdapter
82
     * @param \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\PagingConverterInterface $pagingConverter
83
     * @param \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\ItemConverterInterface $itemConverter
84
     * @param \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\RecordConverterInterface $recordConverter
85
     * @param \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\FilterGroupConverterInterface $filterGroupConverter
86
     * @param \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\AdvisorQuestionConverterInterface $advisorQuestionConverter
87
     * @param \SprykerEco\Client\FactFinderSdk\FactFinderSdkConfig $factFinderSdkConfig
88
     */
89
    public function __construct(
90
        FactFinderSearchAdapter $searchAdapter,
91
        PagingConverterInterface $pagingConverter,
92
        ItemConverterInterface $itemConverter,
93
        RecordConverterInterface $recordConverter,
94
        FilterGroupConverterInterface $filterGroupConverter,
95
        AdvisorQuestionConverterInterface $advisorQuestionConverter,
96
        FactFinderSdkConfig $factFinderSdkConfig
97
    ) {
98
        $this->searchAdapter = $searchAdapter;
99
        $this->pagingConverter = $pagingConverter;
100
        $this->itemConverter = $itemConverter;
101
        $this->recordConverter = $recordConverter;
102
        $this->filterGroupConverter = $filterGroupConverter;
103
        $this->advisorQuestionConverter = $advisorQuestionConverter;
104
        $this->factFinderSdkConfig = $factFinderSdkConfig;
105
    }
106
107
    /**
108
     * @return \Generated\Shared\Transfer\FactFinderSdkSearchResponseTransfer
109
     */
110
    public function convert()
111
    {
112
        $this->responseTransfer = new FactFinderSdkSearchResponseTransfer();
113
114
        $this->responseTransfer->setCampaignIterator(
115
            $this->convertCampaigns($this->searchAdapter->getCampaigns())
116
        );
117
        $this->responseTransfer->setAfterSearchNavigation(
118
            $this->convertAfterSearchNavigation($this->searchAdapter->getAfterSearchNavigation())
119
        );
120
        $this->responseTransfer->setBreadCrumbs(
121
            $this->convertBreadCrumbTrail($this->searchAdapter->getBreadCrumbTrail())
122
        );
123
        $this->pagingConverter->setPaging($this->searchAdapter->getPaging());
124
        $this->responseTransfer->setPaging(
125
            $this->pagingConverter->convert()
126
        );
127
        $this->responseTransfer->setResult(
128
            $this->convertResult($this->searchAdapter->getResult())
129
        );
130
        $this->responseTransfer->setResultsPerPageOptions(
131
            $this->convertResultsPerPageOptions($this->searchAdapter->getResultsPerPageOptions())
132
        );
133
        $this->responseTransfer->setSingleWordSearchItems(
134
            $this->convertSingleWordSearch($this->searchAdapter->getSingleWordSearch())
135
        );
136
        $this->responseTransfer->setSortingItems(
137
            $this->convertSorting($this->searchAdapter->getSorting())
138
        );
139
        $this->responseTransfer->setIsSearchTimedOut(
140
            $this->searchAdapter->isSearchTimedOut()
141
        );
142
        $this->responseTransfer->setFollowSearchValue(
143
            $this->searchAdapter->getFollowSearchValue()
144
        );
145
        $this->responseTransfer->setSearchRedirect(
146
            $this->getSearchRedirect($this->responseTransfer)
147
        );
148
149
        return $this->responseTransfer;
150
    }
151
152
    /**
153
     * @param \FACTFinder\Data\CampaignIterator $campaigns
154
     *
155
     * @return \Generated\Shared\Transfer\FactFinderSdkDataCampaignIteratorTransfer
156
     */
157
    protected function convertCampaigns(CampaignIterator $campaigns)
158
    {
159
        $factFinderDataCampaignIteratorTransfer = new FactFinderSdkDataCampaignIteratorTransfer();
160
        $factFinderDataCampaignIteratorTransfer->setHasRedirect($campaigns->hasRedirect());
161
        $factFinderDataCampaignIteratorTransfer->setRedirectUrl($campaigns->getRedirectUrl());
162
        $factFinderDataCampaignIteratorTransfer->setHasFeedback($campaigns->hasFeedback());
163
        $factFinderDataCampaignIteratorTransfer->setHasPushedProducts($campaigns->hasPushedProducts());
164
        /** @var \FACTFinder\Data\Record $pushedProduct */
165
        foreach ($campaigns->getPushedProducts() as $pushedProduct) {
166
            $this->recordConverter->setRecord($pushedProduct);
167
            $factFinderDataCampaignIteratorTransfer->addPushedProducts(
168
                $this->recordConverter->convert()
169
            );
170
        }
171
        $factFinderDataCampaignIteratorTransfer->setHasActiveQuestions($campaigns->hasActiveQuestions());
172
        $factFinderDataCampaignIteratorTransfer->setHasAdvisorTree($campaigns->hasAdvisorTree());
173
        /** @var \FACTFinder\Data\Record $advisorTree */
174
        foreach ($campaigns->getAdvisorTree() as $advisorTree) {
175
            $this->recordConverter->setRecord($advisorTree);
176
            $factFinderDataCampaignIteratorTransfer->addAdvisorTree(
177
                $this->recordConverter->convert()
178
            );
179
        }
180
181
        /** @var \FACTFinder\Data\Campaign $campaign */
182
        foreach ($campaigns as $campaign) {
183
            $factFinderDataCampaignTransfer = new FactFinderSdkDataCampaignTransfer();
184
            $factFinderDataCampaignTransfer->setName($campaign->getName());
185
            $factFinderDataCampaignTransfer->setCategory($campaign->getCategory());
186
            $factFinderDataCampaignTransfer->setRedirectUrl($campaign->getRedirectUrl());
187
            $factFinderDataCampaignTransfer->setFeedback($campaign->getFeedbackArray());
188
            $factFinderDataCampaignTransfer->setHasRedirect($campaign->hasRedirect());
189
            $factFinderDataCampaignTransfer->setHasPushedProducts($campaign->hasPushedProducts());
190
            /** @var \FACTFinder\Data\Record $pushedProduct */
191
            foreach ($campaign->getPushedProducts() as $pushedProduct) {
192
                $this->recordConverter->setRecord($pushedProduct);
193
                $factFinderDataCampaignTransfer->addPushedProducts(
194
                    $this->recordConverter->convert()
195
                );
196
            }
197
            /** @var \FACTFinder\Data\AdvisorQuestion $activeQuestion */
198
            foreach ($campaign->getActiveQuestions() as $activeQuestion) {
199
                $this->advisorQuestionConverter->setAdvisorQuestion($activeQuestion);
200
                $factFinderDataCampaignTransfer->addActiveQuestions(
201
                    $this->advisorQuestionConverter->convert($activeQuestion)
202
                );
203
            }
204
            /** @var \FACTFinder\Data\AdvisorQuestion $advisorTree */
205
            foreach ($campaign->getAdvisorTree() as $advisorTree) {
206
                $this->advisorQuestionConverter->setAdvisorQuestion($advisorTree);
207
                $factFinderDataCampaignTransfer->addAdvisorTree(
208
                    $this->advisorQuestionConverter->convert()
209
                );
210
            }
211
212
            $factFinderDataCampaignIteratorTransfer->addCampaigns($factFinderDataCampaignTransfer);
213
        }
214
215
        return $factFinderDataCampaignIteratorTransfer;
216
    }
217
218
    /**
219
     * @param \FACTFinder\Data\AfterSearchNavigation $afterSearchNavigation
220
     *
221
     * @return \Generated\Shared\Transfer\FactFinderSdkDataAfterSearchNavigationTransfer
222
     */
223
    protected function convertAfterSearchNavigation(AfterSearchNavigation $afterSearchNavigation)
224
    {
225
        $factFinderDataAfterSearchNavigationTransfer = new FactFinderSdkDataAfterSearchNavigationTransfer();
226
        $factFinderDataAfterSearchNavigationTransfer->setHasPreviewImages($afterSearchNavigation->hasPreviewImages());
227
228
        /** @var \FACTFinder\Data\FilterGroup $filterGroup */
229
        foreach ($afterSearchNavigation as $filterGroup) {
230
            $this->filterGroupConverter->setFilterGroup($filterGroup);
231
            $factFinderDataAfterSearchNavigationTransfer->addFilterGroups(
232
                $this->filterGroupConverter->convert()
233
            );
234
        }
235
236
        return $factFinderDataAfterSearchNavigationTransfer;
237
    }
238
239
    /**
240
     * @param \FACTFinder\Data\BreadCrumbTrail $breadCrumbTrail
241
     *
242
     * @return \ArrayObject|\Generated\Shared\Transfer\FactFinderSdkDataBreadCrumbTransfer[]
243
     */
244
    protected function convertBreadCrumbTrail(BreadCrumbTrail $breadCrumbTrail)
245
    {
246
        $breadCrumbs = new ArrayObject();
247
        /** @var \FACTFinder\Data\BreadCrumb $breadCrumb */
248
        foreach ($breadCrumbTrail as $breadCrumb) {
249
            $factFinderDataBreadCrumbTransfer = new FactFinderSdkDataBreadCrumbTransfer();
250
            $factFinderDataBreadCrumbTransfer->setIsSearchBreadCrumb($breadCrumb->isSearchBreadCrumb());
251
            $factFinderDataBreadCrumbTransfer->setIsFilterBreadCrumb($breadCrumb->isFilterBreadCrumb());
252
            $factFinderDataBreadCrumbTransfer->setFieldName($breadCrumb->getFieldName());
253
254
            $this->itemConverter->setItem($breadCrumb);
255
            $factFinderDataBreadCrumbTransfer->setItem($this->itemConverter->convert());
256
257
            $breadCrumbs->append($factFinderDataBreadCrumbTransfer);
258
        }
259
260
        return $breadCrumbs;
261
    }
262
263
    /**
264
     * @param \FACTFinder\Data\Result $result
265
     *
266
     * @return \Generated\Shared\Transfer\FactFinderSdkDataResultTransfer
267
     */
268
    protected function convertResult(Result $result)
269
    {
270
        $factFinderDataResultTransfer = new FactFinderSdkDataResultTransfer();
271
        $factFinderDataResultTransfer->setFoundRecordsCount($result->getFoundRecordsCount());
272
        $factFinderDataResultTransfer->setFieldNames($this->factFinderSdkConfig->getItemFields());
273
        /** @var \FACTFinder\Data\Record $record */
274
        foreach ($result as $record) {
275
            $this->recordConverter->setRecord($record);
276
            $factFinderDataResultTransfer->addRecords(
277
                $this->recordConverter->convert()
278
            );
279
        }
280
281
        return $factFinderDataResultTransfer;
282
    }
283
284
    /**
285
     * @param \FACTFinder\Data\ResultsPerPageOptions|null $resultsPerPageOptions
286
     *
287
     * @return \Generated\Shared\Transfer\FactFinderSdkDataResultsPerPageOptionsTransfer
288
     */
289
    protected function convertResultsPerPageOptions(?ResultsPerPageOptions $resultsPerPageOptions = null)
290
    {
291
        $factFinderDataResultsPerPageOptionsTransfer = new FactFinderSdkDataResultsPerPageOptionsTransfer();
292
293
        if ($resultsPerPageOptions === null) {
294
            return $factFinderDataResultsPerPageOptionsTransfer;
295
        }
296
297
        $this->itemConverter->setItem($resultsPerPageOptions->getDefaultOption());
298
        $factFinderDataResultsPerPageOptionsTransfer->setDefaultOption(
299
            $this->itemConverter->convert()
300
        );
301
        $this->itemConverter->setItem($resultsPerPageOptions->getSelectedOption());
302
        $factFinderDataResultsPerPageOptionsTransfer->setSelectedOption(
303
            $this->itemConverter->convert()
304
        );
305
        /** @var \FACTFinder\Data\Item $resultsPerPageOption */
306
        foreach ($resultsPerPageOptions as $resultsPerPageOption) {
307
            $this->itemConverter->setItem($resultsPerPageOption);
308
            $factFinderDataResultsPerPageOptionsTransfer->addItems(
309
                $this->itemConverter->convert()
310
            );
311
        }
312
313
        return $factFinderDataResultsPerPageOptionsTransfer;
314
    }
315
316
    /**
317
     * @param \FACTFinder\Data\SingleWordSearchItem[] $singleWordSearch
318
     *
319
     * @return \ArrayObject|\Generated\Shared\Transfer\FactFinderSdkDataSingleWordSearchItemTransfer[]
320
     */
321
    protected function convertSingleWordSearch($singleWordSearch)
322
    {
323
        $singleWordSearchItems = new ArrayObject();
324
        foreach ($singleWordSearch as $singleWordSearchItem) {
325
            $factFinderDataSingleWordSearchItemTransfer = new FactFinderSdkDataSingleWordSearchItemTransfer();
326
            /** @var \FACTFinder\Data\Record $previewRecord */
327
            foreach ($singleWordSearchItem->getPreviewRecords() as $previewRecord) {
328
                $this->recordConverter->setRecord($previewRecord);
329
                $factFinderDataSingleWordSearchItemTransfer->addPreviewRecords(
330
                    $this->recordConverter->convert()
331
                );
332
            }
333
            $factFinderDataSingleWordSearchItemTransfer->setSuggestQuery(
334
                $this->convertSuggestQuery($singleWordSearchItem)
335
            );
336
337
            $singleWordSearchItems->append($factFinderDataSingleWordSearchItemTransfer);
338
        }
339
340
        return $singleWordSearchItems;
341
    }
342
343
    /**
344
     * @param \FACTFinder\Data\SuggestQuery $suggestQuery
345
     *
346
     * @return \Generated\Shared\Transfer\FactFinderSdkDataSuggestQueryTransfer
347
     */
348
    protected function convertSuggestQuery(SuggestQuery $suggestQuery)
349
    {
350
        $factFinderDataSuggestQueryTransfer = new FactFinderSdkDataSuggestQueryTransfer();
351
        $factFinderDataSuggestQueryTransfer->setHitCount($suggestQuery->getHitCount());
352
        $factFinderDataSuggestQueryTransfer->setType($suggestQuery->getType());
353
        $factFinderDataSuggestQueryTransfer->setImageUrl($suggestQuery->getImageUrl());
354
        $factFinderDataSuggestQueryTransfer->setAttributes($suggestQuery->getAttributes());
355
356
        return $factFinderDataSuggestQueryTransfer;
357
    }
358
359
    /**
360
     * @param \FACTFinder\Data\Sorting|null $sorting
361
     *
362
     * @return \ArrayObject|\Generated\Shared\Transfer\FactFinderSdkDataItemTransfer[]
363
     */
364
    protected function convertSorting(?Sorting $sorting = null)
365
    {
366
        $sortingItems = new ArrayObject();
367
368
        if ($sorting === null) {
369
            return $sortingItems;
370
        }
371
372
        /** @var \FACTFinder\Data\Item $sortingItem */
373
        foreach ($sorting as $sortingItem) {
374
            $this->itemConverter->setItem($sortingItem);
375
376
            $sortingItems->append($this->itemConverter->convert());
377
        }
378
379
        return $sortingItems;
380
    }
381
382
    /**
383
     * @param \Generated\Shared\Transfer\FactFinderSdkSearchResponseTransfer $sdkSearchResponseTransfer
384
     *
385
     * @return \Generated\Shared\Transfer\FactFinderSearchRedirectTransfer
386
     */
387
    protected function getSearchRedirect(FactFinderSdkSearchResponseTransfer $sdkSearchResponseTransfer)
388
    {
389
        $searchRedirectTransfer = new FactFinderSearchRedirectTransfer();
390
        $articleNumberStatus = $this->searchAdapter->getArticleNumberStatus();
391
        $foundRecordsCount = $sdkSearchResponseTransfer->getResult()->getFoundRecordsCount();
392
393
        if ($foundRecordsCount !== 1 || $articleNumberStatus !== ArticleNumberSearchStatus::IsArticleNumberResultFound()) {
394
            return $searchRedirectTransfer;
395
        }
396
397
        $record = $sdkSearchResponseTransfer->getResult()->getRecords()[0];
398
        $productUrl = $record->getFields()[FactFinderSdkConstants::ITEM_PRODUCT_URL];
399
        $searchRedirectTransfer->setUrl($productUrl);
400
        $searchRedirectTransfer->setRedirect(true);
401
402
        return $searchRedirectTransfer;
403
    }
404
}
405