Passed
Push — master ( 60a4ae...29fcc8 )
by
unknown
46:42 queued 14:26
created

SspAssetSearchResultFormatter   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 64
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 24
c 1
b 0
f 0
dl 0
loc 64
rs 10
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A mapResultToTransfer() 0 17 2
A formatResult() 0 17 3
1
<?php
2
3
/**
4
 * Copyright © 2016-present Spryker Systems GmbH. All rights reserved.
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
declare(strict_types=1);
9
10
namespace SprykerFeature\Client\SelfServicePortal\Search\ResultFormatter;
11
12
use ArrayObject;
13
use Elastica\Result;
14
use Elastica\ResultSet;
15
use Generated\Shared\Transfer\SspAssetSearchCollectionTransfer;
16
use Generated\Shared\Transfer\SspAssetSearchTransfer;
17
18
class SspAssetSearchResultFormatter implements SspAssetSearchResultFormatterInterface
19
{
20
    /**
21
     * @var string
22
     */
23
    protected const SEARCH_RESULT_DATA_KEY = 'search-result-data';
24
25
    /**
26
     * @var string
27
     */
28
    protected const SEARCH_DATA_NAME_KEY = 'name';
29
30
    /**
31
     * @var string
32
     */
33
    protected const SEARCH_DATA_SERIAL_NUMBER_KEY = 'serial_number';
34
35
    /**
36
     * @var string
37
     */
38
    protected const SEARCH_DATA_REFERENCE_KEY = 'reference';
39
40
    /**
41
     * @param \Elastica\ResultSet|mixed $searchResult
42
     * @param array<string, mixed> $requestParameters
43
     *
44
     * @return \Generated\Shared\Transfer\SspAssetSearchCollectionTransfer
45
     */
46
    public function formatResult($searchResult, array $requestParameters = []): SspAssetSearchCollectionTransfer
47
    {
48
        if (!$searchResult instanceof ResultSet) {
49
            return new SspAssetSearchCollectionTransfer();
50
        }
51
52
        $collection = new SspAssetSearchCollectionTransfer();
53
        $sspAssetSearchTransfers = new ArrayObject();
54
55
        foreach ($searchResult->getResults() as $result) {
56
            $sspAssetSearchTransfer = $this->mapResultToTransfer($result);
57
            $sspAssetSearchTransfers->append($sspAssetSearchTransfer);
58
        }
59
60
        $collection->setSspAssets($sspAssetSearchTransfers);
61
62
        return $collection;
63
    }
64
65
    protected function mapResultToTransfer(Result $result): SspAssetSearchTransfer
66
    {
67
        $sspAssetTransfer = new SspAssetSearchTransfer();
68
        $source = $result->getSource();
69
70
        $sspAssetTransfer->setIdSspAsset((int)$result->getId());
71
72
        if (!isset($source[static::SEARCH_RESULT_DATA_KEY])) {
73
            return $sspAssetTransfer;
74
        }
75
76
        $searchData = $source[static::SEARCH_RESULT_DATA_KEY];
77
        $sspAssetTransfer->setName($searchData[static::SEARCH_DATA_NAME_KEY] ?? '');
78
        $sspAssetTransfer->setSerialNumber($searchData[static::SEARCH_DATA_SERIAL_NUMBER_KEY] ?? '');
79
        $sspAssetTransfer->setReference($searchData[static::SEARCH_DATA_REFERENCE_KEY] ?? '');
80
81
        return $sspAssetTransfer;
82
    }
83
}
84