how to set extension attribute to Order search interface api magento 2
this is my plugin file OrderRepositoryPlugin.php
`
use MagentoCatalogApiProductRepositoryInterfaceFactory as ProductRepository;
use MagentoSalesApiDataOrderExtensionFactory;
use MagentoSalesApiDataOrderExtensionInterface;
use MagentoSalesApiDataOrderInterface;
use MagentoSalesApiDataOrderSearchResultInterface;
use MagentoCatalogHelperImageFactory as ProductImageHelper;
use MagentoSalesApiOrderRepositoryInterface;
/**
Class OrderRepositoryPlugin
*/
class OrderRepositoryPlugin
{
/**
*@var MagentoCatalogHelperImageFactory
*/
protected $productImageHelper;
/**
* @var ProductRepository
*/
protected $productRepository;
/**
* Order Comment field name
*/
const FIELD_NAME = 'unitm';
/**
* Order Extension Attributes Factory
*
* @var OrderExtensionFactory
*/
protected $extensionFactory;
/**
* OrderRepositoryPlugin constructor
*
* @param OrderExtensionFactory $extensionFactory
*/
public function __construct(
ProductImageHelper $productImageHelper,
OrderExtensionFactory $extensionFactory,
MagentoCatalogApiProductRepositoryInterface $productRepository
)
{
$this->productImageHelper = $productImageHelper;
$this->extensionFactory = $extensionFactory;
$this->_productRepository = $productRepository;
}
public function afterGet(OrderRepositoryInterface $subject, OrderInterface $order)
{
$addAtt = array();
$info = array();
$addImage = array();
$infoImage = array();
foreach ($order->getAllItems() as $orderItems) {
$itemExtAttr = $order->getExtensionAttributes();
$product = $this->_productRepository->getById($orderItems->getProductId());
$uom = $product->getUnitm();
$weight = round($product->getWeight(), 0);
$optionId = $product->getUnitm();
$attribute = $product->getResource()->getAttribute('unitm');
if ($attribute->usesSource()) {
$optionText = $attribute->getSource()->getOptionText($optionId);
}
$sku = $orderItems->getSku();
$imageurl =$this->productImageHelper->create()->init($product, 'product_thumbnail_image')->setImageFile($product->getThumbnail())->getUrl();
$addAtt[$sku] = $weight." ".$optionText;
$addImage[$sku] = $imageurl;
}
$info = $addAtt;
$infoImage = $addImage;
$data = json_encode($info);
$dataImage = json_encode($infoImage);
$orderComment = $order->getData(self::FIELD_NAME);
$extensionAttributes = $order->getExtensionAttributes();
$extensionAttributes = $extensionAttributes ? $extensionAttributes : $this->extensionFactory->create();
$extensionAttributes->setUnitm($data);
$extensionAttributes->setImageUrl($dataImage);
$order->setExtensionAttributes($extensionAttributes);
return $order;
}
}
extension_attributes.xml
this is
rest/V1/orders?searchCriteria[filter_groups][0][filters][0][field]=customer_email&searchCriteria[filter_groups][0][filters][0][value]=me345@gmail.com`
Here am trying set extension attribute to order interface, but its working in other Orders but not is search criteria, how to achieve it, Thank you in advance.
API is like
magento2.2.6 magento2-api
add a comment |
this is my plugin file OrderRepositoryPlugin.php
`
use MagentoCatalogApiProductRepositoryInterfaceFactory as ProductRepository;
use MagentoSalesApiDataOrderExtensionFactory;
use MagentoSalesApiDataOrderExtensionInterface;
use MagentoSalesApiDataOrderInterface;
use MagentoSalesApiDataOrderSearchResultInterface;
use MagentoCatalogHelperImageFactory as ProductImageHelper;
use MagentoSalesApiOrderRepositoryInterface;
/**
Class OrderRepositoryPlugin
*/
class OrderRepositoryPlugin
{
/**
*@var MagentoCatalogHelperImageFactory
*/
protected $productImageHelper;
/**
* @var ProductRepository
*/
protected $productRepository;
/**
* Order Comment field name
*/
const FIELD_NAME = 'unitm';
/**
* Order Extension Attributes Factory
*
* @var OrderExtensionFactory
*/
protected $extensionFactory;
/**
* OrderRepositoryPlugin constructor
*
* @param OrderExtensionFactory $extensionFactory
*/
public function __construct(
ProductImageHelper $productImageHelper,
OrderExtensionFactory $extensionFactory,
MagentoCatalogApiProductRepositoryInterface $productRepository
)
{
$this->productImageHelper = $productImageHelper;
$this->extensionFactory = $extensionFactory;
$this->_productRepository = $productRepository;
}
public function afterGet(OrderRepositoryInterface $subject, OrderInterface $order)
{
$addAtt = array();
$info = array();
$addImage = array();
$infoImage = array();
foreach ($order->getAllItems() as $orderItems) {
$itemExtAttr = $order->getExtensionAttributes();
$product = $this->_productRepository->getById($orderItems->getProductId());
$uom = $product->getUnitm();
$weight = round($product->getWeight(), 0);
$optionId = $product->getUnitm();
$attribute = $product->getResource()->getAttribute('unitm');
if ($attribute->usesSource()) {
$optionText = $attribute->getSource()->getOptionText($optionId);
}
$sku = $orderItems->getSku();
$imageurl =$this->productImageHelper->create()->init($product, 'product_thumbnail_image')->setImageFile($product->getThumbnail())->getUrl();
$addAtt[$sku] = $weight." ".$optionText;
$addImage[$sku] = $imageurl;
}
$info = $addAtt;
$infoImage = $addImage;
$data = json_encode($info);
$dataImage = json_encode($infoImage);
$orderComment = $order->getData(self::FIELD_NAME);
$extensionAttributes = $order->getExtensionAttributes();
$extensionAttributes = $extensionAttributes ? $extensionAttributes : $this->extensionFactory->create();
$extensionAttributes->setUnitm($data);
$extensionAttributes->setImageUrl($dataImage);
$order->setExtensionAttributes($extensionAttributes);
return $order;
}
}
extension_attributes.xml
this is
rest/V1/orders?searchCriteria[filter_groups][0][filters][0][field]=customer_email&searchCriteria[filter_groups][0][filters][0][value]=me345@gmail.com`
Here am trying set extension attribute to order interface, but its working in other Orders but not is search criteria, how to achieve it, Thank you in advance.
API is like
magento2.2.6 magento2-api
add a comment |
this is my plugin file OrderRepositoryPlugin.php
`
use MagentoCatalogApiProductRepositoryInterfaceFactory as ProductRepository;
use MagentoSalesApiDataOrderExtensionFactory;
use MagentoSalesApiDataOrderExtensionInterface;
use MagentoSalesApiDataOrderInterface;
use MagentoSalesApiDataOrderSearchResultInterface;
use MagentoCatalogHelperImageFactory as ProductImageHelper;
use MagentoSalesApiOrderRepositoryInterface;
/**
Class OrderRepositoryPlugin
*/
class OrderRepositoryPlugin
{
/**
*@var MagentoCatalogHelperImageFactory
*/
protected $productImageHelper;
/**
* @var ProductRepository
*/
protected $productRepository;
/**
* Order Comment field name
*/
const FIELD_NAME = 'unitm';
/**
* Order Extension Attributes Factory
*
* @var OrderExtensionFactory
*/
protected $extensionFactory;
/**
* OrderRepositoryPlugin constructor
*
* @param OrderExtensionFactory $extensionFactory
*/
public function __construct(
ProductImageHelper $productImageHelper,
OrderExtensionFactory $extensionFactory,
MagentoCatalogApiProductRepositoryInterface $productRepository
)
{
$this->productImageHelper = $productImageHelper;
$this->extensionFactory = $extensionFactory;
$this->_productRepository = $productRepository;
}
public function afterGet(OrderRepositoryInterface $subject, OrderInterface $order)
{
$addAtt = array();
$info = array();
$addImage = array();
$infoImage = array();
foreach ($order->getAllItems() as $orderItems) {
$itemExtAttr = $order->getExtensionAttributes();
$product = $this->_productRepository->getById($orderItems->getProductId());
$uom = $product->getUnitm();
$weight = round($product->getWeight(), 0);
$optionId = $product->getUnitm();
$attribute = $product->getResource()->getAttribute('unitm');
if ($attribute->usesSource()) {
$optionText = $attribute->getSource()->getOptionText($optionId);
}
$sku = $orderItems->getSku();
$imageurl =$this->productImageHelper->create()->init($product, 'product_thumbnail_image')->setImageFile($product->getThumbnail())->getUrl();
$addAtt[$sku] = $weight." ".$optionText;
$addImage[$sku] = $imageurl;
}
$info = $addAtt;
$infoImage = $addImage;
$data = json_encode($info);
$dataImage = json_encode($infoImage);
$orderComment = $order->getData(self::FIELD_NAME);
$extensionAttributes = $order->getExtensionAttributes();
$extensionAttributes = $extensionAttributes ? $extensionAttributes : $this->extensionFactory->create();
$extensionAttributes->setUnitm($data);
$extensionAttributes->setImageUrl($dataImage);
$order->setExtensionAttributes($extensionAttributes);
return $order;
}
}
extension_attributes.xml
this is
rest/V1/orders?searchCriteria[filter_groups][0][filters][0][field]=customer_email&searchCriteria[filter_groups][0][filters][0][value]=me345@gmail.com`
Here am trying set extension attribute to order interface, but its working in other Orders but not is search criteria, how to achieve it, Thank you in advance.
API is like
magento2.2.6 magento2-api
this is my plugin file OrderRepositoryPlugin.php
`
use MagentoCatalogApiProductRepositoryInterfaceFactory as ProductRepository;
use MagentoSalesApiDataOrderExtensionFactory;
use MagentoSalesApiDataOrderExtensionInterface;
use MagentoSalesApiDataOrderInterface;
use MagentoSalesApiDataOrderSearchResultInterface;
use MagentoCatalogHelperImageFactory as ProductImageHelper;
use MagentoSalesApiOrderRepositoryInterface;
/**
Class OrderRepositoryPlugin
*/
class OrderRepositoryPlugin
{
/**
*@var MagentoCatalogHelperImageFactory
*/
protected $productImageHelper;
/**
* @var ProductRepository
*/
protected $productRepository;
/**
* Order Comment field name
*/
const FIELD_NAME = 'unitm';
/**
* Order Extension Attributes Factory
*
* @var OrderExtensionFactory
*/
protected $extensionFactory;
/**
* OrderRepositoryPlugin constructor
*
* @param OrderExtensionFactory $extensionFactory
*/
public function __construct(
ProductImageHelper $productImageHelper,
OrderExtensionFactory $extensionFactory,
MagentoCatalogApiProductRepositoryInterface $productRepository
)
{
$this->productImageHelper = $productImageHelper;
$this->extensionFactory = $extensionFactory;
$this->_productRepository = $productRepository;
}
public function afterGet(OrderRepositoryInterface $subject, OrderInterface $order)
{
$addAtt = array();
$info = array();
$addImage = array();
$infoImage = array();
foreach ($order->getAllItems() as $orderItems) {
$itemExtAttr = $order->getExtensionAttributes();
$product = $this->_productRepository->getById($orderItems->getProductId());
$uom = $product->getUnitm();
$weight = round($product->getWeight(), 0);
$optionId = $product->getUnitm();
$attribute = $product->getResource()->getAttribute('unitm');
if ($attribute->usesSource()) {
$optionText = $attribute->getSource()->getOptionText($optionId);
}
$sku = $orderItems->getSku();
$imageurl =$this->productImageHelper->create()->init($product, 'product_thumbnail_image')->setImageFile($product->getThumbnail())->getUrl();
$addAtt[$sku] = $weight." ".$optionText;
$addImage[$sku] = $imageurl;
}
$info = $addAtt;
$infoImage = $addImage;
$data = json_encode($info);
$dataImage = json_encode($infoImage);
$orderComment = $order->getData(self::FIELD_NAME);
$extensionAttributes = $order->getExtensionAttributes();
$extensionAttributes = $extensionAttributes ? $extensionAttributes : $this->extensionFactory->create();
$extensionAttributes->setUnitm($data);
$extensionAttributes->setImageUrl($dataImage);
$order->setExtensionAttributes($extensionAttributes);
return $order;
}
}
extension_attributes.xml
this is
rest/V1/orders?searchCriteria[filter_groups][0][filters][0][field]=customer_email&searchCriteria[filter_groups][0][filters][0][value]=me345@gmail.com`
Here am trying set extension attribute to order interface, but its working in other Orders but not is search criteria, how to achieve it, Thank you in advance.
API is like
magento2.2.6 magento2-api
magento2.2.6 magento2-api
asked 4 mins ago
Praveen NegimaniPraveen Negimani
106
106
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "479"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f264592%2fhow-to-set-extension-attribute-to-order-search-interface-api-magento-2%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Magento Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f264592%2fhow-to-set-extension-attribute-to-order-search-interface-api-magento-2%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown