productHelper = $productHelper; $this->categoryHelper = $categoryHelper; $this->request = $request; parent::__construct($context); } public function checkAut() { $aut = ""; if (isset($_SERVER["HTTP_AUT"])) { $aut = $_SERVER["HTTP_AUT"]; } else if (isset($_SERVER["REDIRECT_HTTP_AUT"])) { $aut = $_SERVER["REDIRECT_HTTP_AUT"]; } if (self::AUT_KEY != $aut) { header("HTTP/1.1 401 Unauthorized"); die; } } public function getMessage($status, $message, $ProductId, $sku, $productUrl) { return array( "status" => $status, "message" => $message, "ProductId" => $ProductId, "sku" => $sku, "productUrl" => $productUrl ); } /** * POST * @return string */ public function createProductFromErp(){ $this->checkAut(); $result = []; $items = (array) json_decode(file_get_contents('php://input'), TRUE); $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $logHelper = $objectManager->create('\IpSupply\Prology\Helper\LogHelper'); $logHelper->setDefaultName(); $logHelper->write(time()); $logHelper->write(json_encode($items)); foreach ($items as $item) { try { $product = $this->productHelper->createProductFromErp($item); $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface'); $baseUrl = $storeManager->getStore()->getBaseUrl(); $productUrl = $baseUrl."product/".$product->getUrlKey(); if ($product != null) { $result[] = $this->getMessage(true, "", $product->getId(), $item["sku"], $productUrl); } else { $result[] = $this->getMessage(false, "", null, $item["sku"], null); } } catch (\Throwable $e) { $logHelper->write("______error_______"); $logHelper->write(json_encode(json_encode($item))); $result[] = $this->getMessage(false, $e->getMessage(), null, $item["sku"], null); }catch (\Exception $e) { $logHelper->write("______error_______"); $logHelper->write(json_encode(json_encode($item))); $result[] = $this->getMessage(false, $e->getMessage(), null, $item["sku"], null); } } echo json_encode($result); exit; } /** * POST * @return string */ public function deleteProductFromErp(){ $this->checkAut(); $items = (array) json_decode(file_get_contents('php://input'), TRUE); if (!array_key_exists('sku', $items)) { echo json_encode($this->getMessage(false, "sku not exist", null, null, null)); exit; } $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $configurableSku = $items["sku"]; $productRepository = $objectManager->get('\Magento\Catalog\Model\ProductRepository'); try { $configurableProduct = $productRepository->get($configurableSku); // Delete configurable product if ($configurableProduct->getId()) { // Delete child products if ($configurableProduct->getTypeId() == \Magento\ConfigurableProduct\Model\Product\Type\Configurable::TYPE_CODE) { $childProducts = $configurableProduct->getTypeInstance()->getUsedProducts($configurableProduct); foreach ($childProducts as $childProduct) { $productRepository->delete($childProduct); } } $productRepository->delete($configurableProduct); $storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface'); $baseUrl = $storeManager->getStore()->getBaseUrl(); $productUrl = $baseUrl."product/".$configurableProduct->getUrlKey(); echo json_encode($this->getMessage(true, "", $configurableProduct->getId(), $items["sku"], $productUrl)); exit; } } catch (\Exception $e) { echo json_encode($this->getMessage(false, $e->getMessage(), null, $items["sku"], null)); exit; } echo json_encode($this->getMessage(false, "product not exist", null, $items["sku"], null)); exit; } /** * get * @return string */ public function getAllCategories() { //$this->checkAut(); echo json_encode($this->categoryHelper->getAllCategories()); exit; } /** * POST * @return string */ public function updatePriceAndQty(){ $this->checkAut(); $data = (array) json_decode(file_get_contents('php://input'), TRUE); $product = $this->productHelper->updatePriceAndQty($data); $productParent = $this->productHelper->getProductBySku($data["sku"]); $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface'); $baseUrl = $storeManager->getStore()->getBaseUrl(); $productUrl = ""; if ($productParent) { $productUrl = $baseUrl."product/".$productParent->getUrlKey(); } if ($product != null) { echo json_encode($this->getMessage(true, "", $product->getId(), $data["sku"], $productUrl)); exit; } header("HTTP/1.1 404 Product Not Found"); echo json_encode($this->getMessage(false, "Product Unavailable", null, $data["sku"], null)); exit; } /** * GET * @return array */ public function getAllBrands() { $response = array(); $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $product = $objectManager->create('\Magento\Catalog\Model\Product'); $product_resource = $product->getResource(); $types_attribute = $product_resource->getAttribute('brands'); if ($types_attribute != false && $types_attribute->usesSource()) { $options = $types_attribute->getSource()->getAllOptions(); foreach ($options as $option) { $label = trim(strtoupper($option["label"])); if (!empty($label)) { $response[] = $label; } } } echo json_encode($response); exit; } /** * GET * @return array */ public function getAllTypes() { $response = array(); $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $product = $objectManager->create('\Magento\Catalog\Model\Product'); $product_resource = $product->getResource(); $types_attribute = $product_resource->getAttribute('types'); if ($types_attribute != false && $types_attribute->usesSource()) { $options = $types_attribute->getSource()->getAllOptions(); foreach ($options as $option) { $label = trim(strtoupper($option["label"])); if (!empty($label)) { $response[] = $label; } } } echo json_encode($response); exit; } }