Newer
Older
<?php
namespace IQDEV\ElasticSearchTests\Helpers;
use IQDEV\ElasticSearch\Facet\Item\FacetItemList;
use IQDEV\ElasticSearch\Facet\Item\FacetItemRange;
use IQDEV\ElasticSearch\Result;
class FormatData
{
public static function formatData(Result $result): array
{
$oProductCollection = $result->getProducts();
$aResult = ['hits' => []];
foreach ($oProductCollection as $oProduct) {
/** @var Product $oProduct */
$aResult['hits'][] = $oProduct->id;
}
return $aResult;
}
public static function formatDataWFacets(Result $result): array
{
$aResult = ['facets' => []];
$aResult['hits'] = static::formatData($result)['hits'];
foreach ($result->getFacets() as $facet) {
$dataFacet = [
'code' => $facet->getCode(),
'label' => null, // $facet->getLabel(),
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
'items' => [
'list' => [],
'range' => []
],
];
$items = $facet->products->sort('getValue');
foreach ($items as $item) {
if ($item instanceof FacetItemList) {
/** @var FacetItemList $item */
$dataFacet['items']['list'][] = [
'label' => $item->getLabel(),
'value' => $item->getValue(),
'count' => $item->getCount(),
'active' => $item->isActive(),
];
}
if ($item instanceof FacetItemRange) {
/** @var FacetItemRange $item */
$aData = [
'label' => $item->getLabel(),
'count' => $item->getCount(),
'active' => $item->isActive(),
];
$aData['fullRange'] = $item->getFullRange();
$aData['activeRange'] = $item->getSelectedRange();
if ($result->getTotal() > 0 && empty(array_filter($aData['activeRange']))) {
$aData['activeRange'] = $aData['fullRange'];
}
$dataFacet['items']['range'][] = $aData;
}
}
$aResult['facets'][] = $dataFacet;
}
return $aResult;
}
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
public static function formatDataProducts(Result $result): array
{
$products = [];
/** @var Product $product */
foreach ($result->getProducts() as $product) {
$data = [
'id' => $product->id,
'category' => $product->info['category_id']
];
if ($product->title) {
$data['name'] = $product->title;
}
if (isset($product->info['search_data'])) {
$props = $product->info['search_data'];
if (!empty($props['keyword_facet'])) {
foreach ($props['keyword_facet'] as $prop) {
$data['properties'][$prop['facet_code']] = $prop['facet_value'];
}
}
if (!empty($props['number_facet'])) {
foreach ($props['number_facet'] as $prop) {
$data['properties'][$prop['facet_code']] = $prop['facet_value'];
}
}
}
$products[] = $data;
}
return ['products' => $products];
}