Skip to content

Commit 4dd8d09

Browse files
committed
Added: new module
1 parent 30e97eb commit 4dd8d09

File tree

8 files changed

+221
-2
lines changed

8 files changed

+221
-2
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
## [1.0.0] - 2022-09-20
2+
### Added
3+
- created new module.
4+
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace StorefrontX\CatalogGraphQlExtended\Model\Resolver\DataProvider;
5+
6+
use Magento\InventoryApi\Api\GetSourceItemsBySkuInterface;
7+
use Magento\InventoryApi\Api\SourceRepositoryInterface;
8+
use Psr\Log\LoggerInterface;
9+
10+
class MSI
11+
{
12+
13+
private GetSourceItemsBySkuInterface $sourceItemsBySku;
14+
protected LoggerInterface $logger;
15+
protected SourceRepositoryInterface $sourceRepository;
16+
17+
public function __construct(
18+
GetSourceItemsBySkuInterface $sourceItemsBySku,
19+
SourceRepositoryInterface $sourceRepository,
20+
LoggerInterface $logger
21+
)
22+
{
23+
$this->sourceItemsBySku = $sourceItemsBySku;
24+
$this->sourceRepository = $sourceRepository;
25+
$this->logger = $logger;
26+
}
27+
28+
/**
29+
* @params string $sku
30+
* this function return all the MSI Data for product sku
31+
* @returns array
32+
*/
33+
public function getMSI(string $sku): array
34+
{
35+
return $this->getSourceItemBySku($sku);
36+
}
37+
38+
/**
39+
* @params string $sku
40+
* this function return all the MSI Data for product sku
41+
* @returns array
42+
*/
43+
public function getSourceItemBySku($sku): array
44+
{
45+
46+
$sources = [];
47+
$sourceData = $this->sourceRepository->getList();
48+
$productSourceData = $this->sourceItemsBySku->execute($sku);
49+
50+
foreach($productSourceData as $source) {
51+
52+
$sourceName = null;
53+
$latitude = null;
54+
$longitude = null;
55+
$country_id = null;
56+
$street = null;
57+
$postcode = null;
58+
$enabled = null;
59+
60+
foreach($sourceData->getItems() as $so) {
61+
$sourceCode = $so->getSourceCode();
62+
if ($so->getSourceCode() === $source->getSourceCode()) {
63+
$sourceName = $so->getName();
64+
$latitude = $so->getLatitude();
65+
$longitude = $so->getLongitude();
66+
$country_id = $so->getCountryId();
67+
$street = $so->getStreet();
68+
$postcode = $so->getPostcode();
69+
$enabled = $so->isEnabled();
70+
}
71+
}
72+
73+
$sources[] = ['source_code' => $source->getSourceCode(),
74+
'quantity' => $source->getQuantity(),
75+
'sku' => $source->getSku(),
76+
'status' => $source->getStatus(),
77+
'name' => $sourceName,
78+
'latitude' => $latitude,
79+
'longitude' => $longitude,
80+
'country_id' => $country_id,
81+
'street' => $street,
82+
'postcode' => $postcode,
83+
'enabled' => $enabled
84+
];
85+
}
86+
87+
return $sources;
88+
}
89+
90+
}

Model/Resolver/MSI.php

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php
2+
3+
namespace StorefrontX\CatalogGraphQlExtended\Model\Resolver;
4+
5+
use Magento\Framework\GraphQl\Config\Element\Field;
6+
use Magento\Framework\GraphQl\Query\ResolverInterface;
7+
use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
8+
use StorefrontX\CatalogGraphQlExtended\Model\Resolver\DataProvider\MSI as MSIDataProvider;
9+
use Psr\Log\LoggerInterface;
10+
11+
class MSI implements ResolverInterface
12+
{
13+
14+
private MSIDataProvider $msiDataProvider;
15+
protected LoggerInterface $logger;
16+
17+
/**
18+
* @param MSIDataProvider $msiDataProvider
19+
* @param LoggerInterface $logger
20+
*/
21+
public function __construct(
22+
MSIDataProvider $msiDataProvider,
23+
LoggerInterface $logger
24+
) {
25+
$this->msiDataProvider = $msiDataProvider;
26+
$this->logger = $logger;
27+
}
28+
29+
/**
30+
* @inheritdoc
31+
*/
32+
public function resolve(
33+
Field $field,
34+
$context,
35+
ResolveInfo $info,
36+
array $value = null,
37+
array $args = null
38+
) {
39+
40+
if (isset($args['sku'])) {
41+
$sku = $args['sku'];
42+
} elseif (!isset($value['sku'])) {
43+
$this->logger->error('Error - no sku', ['error' => $value]);
44+
$sku = null;
45+
} else {
46+
$sku = $value['sku'];
47+
}
48+
49+
return $this->msiDataProvider->getMSI($sku);
50+
}
51+
52+
}

README.md

100644100755
Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,11 @@
1-
# magento-module-catalog-graphql-extended
2-
Magento 2 module - Catalog GraphQL Extension for Magento GraphQL module
1+
# Catalog GraphQL Extended
2+
3+
Module for Magento 2
4+
5+
**Catalog GraphQL Extended** - provides type and resolver information for the GraphQL module
6+
to generate catalog and product information endpoints.
7+
8+
## License
9+
10+
The module is licensed under the MIT license.
11+

composer.json

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"name": "storefront-x/magento-module-catalog-graphql-extended",
3+
"description": "Magento 2 module - Catalog GraphQL Extension for Magento GraphQL module",
4+
"type": "magento2-module",
5+
"config": {
6+
"sort-packages": true
7+
},
8+
"require": {
9+
"php": ">=7.4",
10+
"magento/framework": "^103.0.2",
11+
"magento/module-graph-ql": "^100.4.2"
12+
},
13+
"license": [
14+
"MIT"
15+
],
16+
"autoload": {
17+
"files": [
18+
"registration.php"
19+
],
20+
"psr-4": {
21+
"StorefrontX\\CatalogGraphQlExtended\\": ""
22+
}
23+
}
24+
}
25+

etc/module.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0"?>
2+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
3+
<module name="StorefrontX_CatalogGraphQlExtended" setup_version="1.0.0" />
4+
<sequence>
5+
<module name="Magento_GraphQl"/>
6+
<module name="Magento_Backend"/>
7+
</sequence>
8+
</config>
9+

etc/schema.graphqls

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
interface ProductInterface {
2+
msi_info: [MSIs] @resolver( class: "StorefrontX\\CatalogGraphQlExtended\\Model\\Resolver\\MSI") @doc(description: "Get MSI data for products sku.")
3+
}
4+
5+
type Query {
6+
msi_info(sku: String @doc(description: "Product SKU")) : [MSIs] @resolver( class: "StorefrontX\\CatalogGraphQlExtended\\Model\\Resolver\\MSI") @doc(description: "Get MSI data for products sku.")
7+
}
8+
9+
type MSIs {
10+
source_code : String @doc(description: "Source Code")
11+
quantity : String @doc(description: "Product Quantity")
12+
sku : String @doc(description: "Product SKU")
13+
status : String @doc(description: "Status")
14+
name : String @doc(description: "Source Name")
15+
latitude : String @doc(description: "Latitude")
16+
longitude : String @doc(description: "Longitude")
17+
country_id : String @doc(description: "Country Id")
18+
street : String @doc(description: "street")
19+
postcode : String @doc(description: "Postcode")
20+
enabled : String @doc(description: "Enabled")
21+
}
22+
23+

registration.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
\Magento\Framework\Component\ComponentRegistrar::register(
4+
\Magento\Framework\Component\ComponentRegistrar::MODULE,
5+
'StorefrontX_CatalogGraphQlExtended',
6+
__DIR__
7+
);

0 commit comments

Comments
 (0)