Skip to content

Commit ebbc94e

Browse files
author
Eric Bohanon
committed
Merge remote-tracking branch 'remotes/origin/MAGETWO-81530-support-all-product-types' into MAGETWO-81530-support-all-product-types
2 parents ac4ffa1 + 819893a commit ebbc94e

File tree

13 files changed

+104
-195
lines changed

13 files changed

+104
-195
lines changed

app/code/Magento/BundleGraphQl/etc/di.xml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,4 @@
1616
</argument>
1717
</arguments>
1818
</type>
19-
<type name="Magento\Framework\GraphQl\Type\Entity\DefaultMapper">
20-
<arguments>
21-
<argument name="map" xsi:type="array">
22-
<item name="catalog_product" xsi:type="array">
23-
<item name="bundle" xsi:type="string">BundleProduct</item>
24-
</item>
25-
</argument>
26-
</arguments>
27-
</type>
2819
</config>

app/code/Magento/BundleGraphQl/etc/graphql/di.xml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
</argument>
2121
</arguments>
2222
</type>
23-
<type name="\Magento\Framework\GraphQl\Type\Enum\DefaultDataMapper">
23+
<type name="Magento\Framework\GraphQl\Type\Enum\DefaultDataMapper">
2424
<arguments>
2525
<argument name="map" xsi:type="array">
2626
<item name="ShipBundleItemsEnum" xsi:type="array">
@@ -38,4 +38,13 @@
3838
</argument>
3939
</arguments>
4040
</type>
41+
<type name="Magento\Framework\GraphQl\Type\Entity\DefaultMapper">
42+
<arguments>
43+
<argument name="map" xsi:type="array">
44+
<item name="catalog_product" xsi:type="array">
45+
<item name="bundle" xsi:type="string">BundleProduct</item>
46+
</item>
47+
</argument>
48+
</arguments>
49+
</type>
4150
</config>

app/code/Magento/CatalogGraphQl/etc/di.xml

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,4 @@
2626
</argument>
2727
</arguments>
2828
</virtualType>
29-
<type name="Magento\Framework\GraphQl\Type\Entity\DefaultMapper">
30-
<arguments>
31-
<argument name="map" xsi:type="array">
32-
<item name="catalog_product" xsi:type="array">
33-
<item name="product" xsi:type="string">ProductInterface</item>
34-
<item name="simple" xsi:type="string">SimpleProduct</item>
35-
<item name="virtual" xsi:type="string">VirtualProduct</item>
36-
</item>
37-
<item name="customizable_options" xsi:type="array">
38-
<item name="field" xsi:type="string">CustomizableFieldOption</item>
39-
<item name="date_time" xsi:type="string">CustomizableDateOption</item>
40-
<item name="file" xsi:type="string">CustomizableFileOption</item>
41-
<item name="area" xsi:type="string">CustomizableAreaOption</item>
42-
<item name="drop_down" xsi:type="string">CustomizableDropDownOption</item>
43-
<item name="radio" xsi:type="string">CustomizableRadioOption</item>
44-
</item>
45-
</argument>
46-
</arguments>
47-
</type>
4829
</config>

app/code/Magento/CatalogGraphQl/etc/graphql/di.xml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,23 @@
5252
</argument>
5353
</arguments>
5454
</type>
55+
<type name="Magento\Framework\GraphQl\Type\Entity\DefaultMapper">
56+
<arguments>
57+
<argument name="map" xsi:type="array">
58+
<item name="catalog_product" xsi:type="array">
59+
<item name="product" xsi:type="string">ProductInterface</item>
60+
<item name="simple" xsi:type="string">SimpleProduct</item>
61+
<item name="virtual" xsi:type="string">VirtualProduct</item>
62+
</item>
63+
<item name="customizable_options" xsi:type="array">
64+
<item name="field" xsi:type="string">CustomizableFieldOption</item>
65+
<item name="date_time" xsi:type="string">CustomizableDateOption</item>
66+
<item name="file" xsi:type="string">CustomizableFileOption</item>
67+
<item name="area" xsi:type="string">CustomizableAreaOption</item>
68+
<item name="drop_down" xsi:type="string">CustomizableDropDownOption</item>
69+
<item name="radio" xsi:type="string">CustomizableRadioOption</item>
70+
</item>
71+
</argument>
72+
</arguments>
73+
</type>
5574
</config>

app/code/Magento/ConfigurableProductGraphQl/etc/di.xml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,4 @@
1616
</argument>
1717
</arguments>
1818
</type>
19-
<type name="Magento\Framework\GraphQl\Type\Entity\DefaultMapper">
20-
<arguments>
21-
<argument name="map" xsi:type="array">
22-
<item name="catalog_product" xsi:type="array">
23-
<item name="configurable" xsi:type="string">ConfigurableProduct</item>
24-
</item>
25-
</argument>
26-
</arguments>
27-
</type>
2819
</config>

app/code/Magento/ConfigurableProductGraphQl/etc/graphql/di.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,13 @@
2020
</argument>
2121
</arguments>
2222
</type>
23+
<type name="Magento\Framework\GraphQl\Type\Entity\DefaultMapper">
24+
<arguments>
25+
<argument name="map" xsi:type="array">
26+
<item name="catalog_product" xsi:type="array">
27+
<item name="configurable" xsi:type="string">ConfigurableProduct</item>
28+
</item>
29+
</argument>
30+
</arguments>
31+
</type>
2332
</config>

app/code/Magento/DownloadableGraphQl/Model/Plugin/Model/Resolver/Products/DataProvider/Product/Formatter/DownloadableOptions.php

Lines changed: 0 additions & 33 deletions
This file was deleted.

app/code/Magento/DownloadableGraphQl/Model/Plugin/Model/Resolver/Products/DataProvider/ProductPlugin.php

Lines changed: 0 additions & 62 deletions
This file was deleted.

app/code/Magento/DownloadableGraphQl/Model/Resolver/Products/Query/DownloadableProductPostProcessor.php renamed to app/code/Magento/DownloadableGraphQl/Model/Resolver/Products/DataProvider/Product/Formatter/DownloadableOptions.php

Lines changed: 46 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,21 @@
44
* See COPYING.txt for license details.
55
*/
66

7-
namespace Magento\DownloadableGraphQl\Model\Resolver\Products\Query;
7+
namespace Magento\DownloadableGraphQl\Model\Resolver\Products\DataProvider\Product\Formatter;
88

9+
use Magento\Catalog\Model\Product;
910
use Magento\Downloadable\Model\Product\Type as Downloadable;
11+
use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\FormatterInterface;
1012
use Magento\Framework\Data\Collection;
1113
use Magento\Framework\GraphQl\Query\EnumLookup;
1214
use Magento\Downloadable\Helper\Data as DownloadableHelper;
15+
use Magento\Downloadable\Model\ResourceModel\Sample\Collection as SampleCollection;
16+
use Magento\Downloadable\Model\ResourceModel\Link\Collection as LinkCollection;
1317

1418
/**
15-
* Retrieves simple product data for child products, and formats configurable data
19+
* Post formatting plugin to continue formatting data for downloadable type products
1620
*/
17-
class DownloadableProductPostProcessor implements \Magento\Framework\GraphQl\Query\PostFetchProcessorInterface
21+
class DownloadableOptions implements FormatterInterface
1822
{
1923
/**
2024
* @var EnumLookup
@@ -26,46 +30,65 @@ class DownloadableProductPostProcessor implements \Magento\Framework\GraphQl\Que
2630
*/
2731
private $downloadableHelper;
2832

33+
/**
34+
* @var SampleCollection
35+
*/
36+
private $sampleCollection;
37+
38+
/**
39+
* @var LinkCollection
40+
*/
41+
private $linkCollection;
42+
2943
/**
3044
* @param EnumLookup $enumLookup
45+
* @param DownloadableHelper $downloadableHelper
46+
* @param SampleCollection $sampleCollection
47+
* @param LinkCollection $linkCollection
3148
*/
32-
public function __construct(EnumLookup $enumLookup, DownloadableHelper $downloadableHelper)
33-
{
49+
public function __construct(
50+
EnumLookup $enumLookup,
51+
DownloadableHelper $downloadableHelper,
52+
SampleCollection $sampleCollection,
53+
LinkCollection $linkCollection
54+
) {
3455
$this->enumLookup = $enumLookup;
3556
$this->downloadableHelper = $downloadableHelper;
57+
$this->sampleCollection = $sampleCollection;
58+
$this->linkCollection = $linkCollection;
3659
}
3760

3861
/**
39-
* Process all downloadable product data, including adding simple product data and formatting relevant attributes.
62+
* Add downloadable options and options to configurable types
4063
*
41-
* @param array $resultData
42-
* @return array
64+
* {@inheritdoc}
4365
*/
44-
public function process(array $resultData)
66+
public function format(Product $product, array $productData = [])
4567
{
46-
foreach ($resultData as $productKey => $product) {
47-
if (isset($product['type_id']) && $product['type_id'] === Downloadable::TYPE_DOWNLOADABLE) {
48-
if (isset($product['downloadable_product_samples'])) {
49-
$resultData[$productKey]['downloadable_product_samples']
50-
= $this->formatSamples($product['downloadable_product_samples']);
51-
}
52-
if (isset($product['downloadable_product_links'])) {
53-
$resultData[$productKey]['downloadable_product_links']
54-
= $this->formatLinks($product['downloadable_product_links']);
55-
}
56-
}
68+
if ($product->getTypeId() === Downloadable::TYPE_DOWNLOADABLE) {
69+
$samples = $this->sampleCollection->addTitleToResult($product->getStoreId())
70+
->addProductToFilter($product->getId());
71+
$links = $this->linkCollection->addTitleToResult($product->getStoreId())
72+
->addPriceToResult($product->getStore()->getWebsiteId())
73+
->addProductToFilter($product->getId());
74+
$productData['downloadable_product_links'] = $this->formatLinks(
75+
$links
76+
);
77+
$productData['downloadable_product_samples'] = $this->formatSamples(
78+
$samples
79+
);
5780
}
5881

59-
return $resultData;
82+
return $productData;
6083
}
6184

6285
/**
6386
* Format links from collection as array
6487
*
65-
* @param Collection $links
88+
* @param \Magento\Downloadable\Api\Data\LinkInterface[] $links
6689
* @return array
6790
*/
68-
private function formatLinks(Collection $links)
91+
private function formatLinks($links)
6992
{
7093
$resultData = [];
7194
foreach ($links as $linkKey => $link) {

app/code/Magento/DownloadableGraphQl/etc/di.xml

Lines changed: 0 additions & 28 deletions
This file was deleted.

0 commit comments

Comments
 (0)