7
7
8
8
namespace Magento \CatalogGraphQl \Model \Resolver ;
9
9
10
+ use Magento \CatalogGraphQl \DataProvider \Product \LayeredNavigation \LayerBuilder ;
11
+ use Magento \Directory \Model \PriceCurrency ;
12
+ use Magento \Framework \App \ObjectManager ;
10
13
use Magento \Framework \GraphQl \Config \Element \Field ;
11
14
use Magento \Framework \GraphQl \Query \ResolverInterface ;
12
15
use Magento \Framework \GraphQl \Schema \Type \ResolveInfo ;
13
- use Magento \CatalogGraphQl \DataProvider \Product \LayeredNavigation \LayerBuilder ;
14
16
use Magento \Store \Api \Data \StoreInterface ;
15
17
16
18
/**
@@ -28,16 +30,24 @@ class Aggregations implements ResolverInterface
28
30
*/
29
31
private $ layerBuilder ;
30
32
33
+ /**
34
+ * @var PriceCurrency
35
+ */
36
+ private $ priceCurrency ;
37
+
31
38
/**
32
39
* @param \Magento\CatalogGraphQl\Model\Resolver\Layer\DataProvider\Filters $filtersDataProvider
40
+ * @param PriceCurrency $priceCurrency
33
41
* @param LayerBuilder $layerBuilder
34
42
*/
35
43
public function __construct (
36
44
\Magento \CatalogGraphQl \Model \Resolver \Layer \DataProvider \Filters $ filtersDataProvider ,
37
- LayerBuilder $ layerBuilder
45
+ LayerBuilder $ layerBuilder ,
46
+ PriceCurrency $ priceCurrency = null
38
47
) {
39
48
$ this ->filtersDataProvider = $ filtersDataProvider ;
40
49
$ this ->layerBuilder = $ layerBuilder ;
50
+ $ this ->priceCurrency = $ priceCurrency ?: ObjectManager::getInstance ()->get (PriceCurrency::class);
41
51
}
42
52
43
53
/**
@@ -60,7 +70,16 @@ public function resolve(
60
70
/** @var StoreInterface $store */
61
71
$ store = $ context ->getExtensionAttributes ()->getStore ();
62
72
$ storeId = (int )$ store ->getId ();
63
- return $ this ->layerBuilder ->build ($ aggregations , $ storeId );
73
+ $ results = $ this ->layerBuilder ->build ($ aggregations , $ storeId );
74
+ if (isset ($ results ['price_bucket ' ])) {
75
+ foreach ($ results ['price_bucket ' ]['options ' ] as &$ value ) {
76
+ list ($ from , $ to ) = explode ('- ' , $ value ['label ' ]);
77
+ $ newLabel = $ this ->priceCurrency ->convertAndRound ($ from ) . '- ' . $ this ->priceCurrency ->convertAndRound ($ to );
78
+ $ value ['label ' ] = $ newLabel ;
79
+ $ value ['value ' ] = str_replace ('- ' , '_ ' , $ newLabel );
80
+ }
81
+ }
82
+ return $ results ;
64
83
} else {
65
84
return [];
66
85
}
0 commit comments