/**
  * Setup data fields.
  *
  * @param $username
  * @param $password
  *
  * @return bool
  */
 public function setupDataFields($username, $password)
 {
     $error = false;
     $apiModel = false;
     if ($this->helper->isEnabled()) {
         $apiModel = $this->helper->getWebsiteApiClient(0, $username, $password);
     }
     if (!$apiModel) {
         $error = true;
         $this->helper->log('setupDataFields client is not enabled');
     } else {
         $dataFields = $this->dataField->getContactDatafields();
         foreach ($dataFields as $key => $dataField) {
             $response = $apiModel->postDataFields($dataField);
             //ignore existing datafields message
             if (isset($response->message) && $response->message != Client::API_ERROR_DATAFIELD_EXISTS) {
                 $error = true;
             } else {
                 //map the successfully created data field
                 $this->helper->saveConfigData('connector_data_mapping/customer_data/' . $key, strtoupper($dataField['name']), 'default', 0);
                 $this->helper->log('successfully connected : ' . $dataField['name']);
             }
         }
     }
     return $error == true ? false : true;
 }
 /**
  * Execute method.
  */
 public function execute()
 {
     $result = ['errors' => false, 'message' => ''];
     $website = $this->getRequest()->getParam('website', 0);
     $client = false;
     if ($this->data->isEnabled()) {
         $client = $this->data->getWebsiteApiClient($website);
     }
     $redirectUrl = $this->getUrl('adminhtml/system_config/edit', ['section' => 'connector_developer_settings']);
     if (!$client) {
         $this->messageManager->addNoticeMessage('Please enable api first.');
     } else {
         // get all possible datatifileds
         $datafields = $this->datafield->getContactDatafields();
         foreach ($datafields as $key => $datafield) {
             $response = $client->postDataFields($datafield);
             //ignore existing datafields message
             if (isset($response->message) && $response->message != \Dotdigitalgroup\Email\Model\Apiconnector\Client::API_ERROR_DATAFIELD_EXISTS) {
                 $result['errors'] = true;
                 $result['message'] .= ' Datafield ' . $datafield['name'] . ' - ' . $response->message . '</br>';
             } else {
                 if ($website) {
                     $scope = 'websites';
                     $scopeId = $website;
                 } else {
                     $scope = 'default';
                     $scopeId = '0';
                 }
                 /*
                  * map the succesful created datafield
                  */
                 $this->data->saveConfigData('connector_data_mapping/customer_data/' . $key, strtoupper($datafield['name']), $scope, $scopeId);
                 $this->data->log('successfully connected : ' . $datafield['name']);
             }
         }
         if ($result['errors']) {
             $this->messageManager->addNoticeMessage($result['message']);
         } else {
             $this->messageManager->addSuccessMessage('All Datafields Created And Mapped.');
         }
     }
     $this->_redirect($redirectUrl);
 }