Skip to content

Commit 96e5988

Browse files
committed
Merge remote-tracking branch 'origin/AC-7918' into spartans_pr_19012024
2 parents 1178db3 + ad21e1b commit 96e5988

File tree

3 files changed

+56
-1
lines changed

3 files changed

+56
-1
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\SalesGraphQl\Model\Resolver;
9+
10+
use Magento\Catalog\Model\Product;
11+
use Magento\CatalogGraphQl\Model\ProductDataProvider;
12+
use Magento\Framework\Exception\LocalizedException;
13+
use Magento\Framework\GraphQl\Config\Element\Field;
14+
use Magento\Framework\GraphQl\Query\ResolverInterface;
15+
use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
16+
17+
/**
18+
* Fetches the Product data according to the GraphQL schema
19+
*/
20+
class ProductResolver implements ResolverInterface
21+
{
22+
/**
23+
* @var ProductDataProvider
24+
*/
25+
private $productDataProvider;
26+
27+
/**
28+
* @param ProductDataProvider $productDataProvider
29+
*/
30+
public function __construct(ProductDataProvider $productDataProvider)
31+
{
32+
$this->productDataProvider = $productDataProvider;
33+
}
34+
35+
/**
36+
* @inheritdoc
37+
*/
38+
public function resolve(
39+
Field $field,
40+
$context,
41+
ResolveInfo $info,
42+
array $value = null,
43+
array $args = null
44+
) {
45+
if (!isset($value['associatedProduct'])) {
46+
throw new LocalizedException(__('Missing key "associatedProduct" in Order Item value data'));
47+
}
48+
/** @var Product $product */
49+
$product = $value['associatedProduct'];
50+
51+
return $this->productDataProvider->getProductDataById((int) $product->getId());
52+
}
53+
}

app/code/Magento/SalesGraphQl/composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
"magento/module-tax": "*",
1212
"magento/module-quote": "*",
1313
"magento/module-graph-ql": "*",
14-
"magento/module-shipping": "*"
14+
"magento/module-shipping": "*",
15+
"magento/module-catalog-graph-ql": "*"
1516
},
1617
"license": [
1718
"OSL-3.0",

app/code/Magento/SalesGraphQl/etc/schema.graphqls

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ interface OrderItemInterface @doc(description: "Order item details.") @typeResol
107107
quantity_invoiced: Float @doc(description: "The number of invoiced items.")
108108
quantity_canceled: Float @doc(description: "The number of canceled items.")
109109
quantity_returned: Float @doc(description: "The number of returned items.")
110+
product: ProductInterface @doc(description: "The ProductInterface object, which contains details about the base product") @resolver(class: "Magento\\SalesGraphQl\\Model\\Resolver\\ProductResolver")
110111
}
111112

112113
type OrderItem implements OrderItemInterface {

0 commit comments

Comments
 (0)