resultJsonFactory = $resultJsonFactory; $this->configInterface = $configInterface; $this->storeRepository = $storeRepository; $this->storeManager = $storeManager; $this->activeCampaignHelper = $activeCampaignHelper; $this->curl = $curl; } /** * Check for connection to server * * @return \Magento\Framework\Controller\Result\Json */ public function execute() { $request = $this->getRequest()->getParams(); $return = []; if ($request['status'] && !empty($request['api_url']) && !empty($request['api_key'])) { $isEnabled = $this->activeCampaignHelper->isEnabled($request['status']); if (!$isEnabled) { $this->saveConfig( ActiveCampaignHelper::ACTIVE_CAMPAIGN_GENERAL_STATUS, $request['status'], $request['store'] ); } $apiUrl = $this->activeCampaignHelper->getApiUrl($request['store']); if (empty($apiUrl)) { $this->saveConfig( ActiveCampaignHelper::ACTIVE_CAMPAIGN_GENERAL_API_URL, $request['api_url'], $request['store'] ); } $apiKey = $this->activeCampaignHelper->getApiKey($request['store']); if (empty($apiKey)) { $this->saveConfig( ActiveCampaignHelper::ACTIVE_CAMPAIGN_GENERAL_API_KEY, $request['api_key'], $request['store'] ); } try { if ((int)$request['store']) { $data = $this->curlRequestData($request['store']); $result = $this->curl->createConnection(self::METHOD, self::URL_ENDPOINT, $request, $data); if ($result['success']) { $connectionId = $result['data']['connection']['id']; $this->saveConfig( ActiveCampaignHelper::ACTIVE_CAMPAIGN_GENERAL_CONNECTION_ID, $connectionId, $request['store'] ); } else { $return['success'] = false; $return['errorMessage'] = $result['message']; } } elseif ($request['store'] == "0") { $stores = $this->storeRepository->getList(); foreach ($stores as $store) { if ($store->getId()) { $data = $this->curlRequestData($store->getId()); $result = $this->curl->createConnection(self::METHOD, self::URL_ENDPOINT, $request, $data); if ($result['success']) { $return['success'] = true; $connectionId = $result['data']['connection']['id']; $this->saveConfig( ActiveCampaignHelper::ACTIVE_CAMPAIGN_GENERAL_CONNECTION_ID, $connectionId, $store->getId() ); } else { $return['errorMessage'] = $result['message']; } } } } $allConnections = $this->curl->getAllConnections(self::GET_METHOD, self::URL_ENDPOINT); $checkConnections = $this->activeCampaignHelper->checkConnections($allConnections); $return['success'] = $checkConnections; } catch (\Exception $e) { $return['success'] = false; $return['errorMessage'] = __($e->getMessage()); } } $resultJson = $this->resultJsonFactory->create(); return $resultJson->setData($return); } /** * @param $path * @param $value * @param $scopeId */ public function saveConfig($path, $value, $scopeId) { $scope = ($scopeId) ? ScopeInterface::SCOPE_STORES : ScopeConfigInterface::SCOPE_TYPE_DEFAULT; $this->configInterface->saveConfig($path, $value, $scope, $scopeId); } /** * @param $storeId * @return array[] * @throws \Magento\Framework\Exception\NoSuchEntityException */ public function curlRequestData($storeId) { $store = $this->storeManager->getStore($storeId); return [ "connection" => [ "service" => "magento2", "externalid" => $store->getCode(), "name" => $store->getName(), "logoUrl" => $this->activeCampaignHelper->getStoreLogo($storeId), "linkUrl" => $store->getBaseUrl() ] ]; } }