/**
  * @param array $requestData
  * @param array $filterParams
  * @return array
  * @throws \Exception
  */
 public function export(array $requestData, array $filterParams)
 {
     $serviceHelpers = $this->buildServiceHelpers($requestData);
     $requestData['filter'] = $this->prepareFilter($serviceHelpers->getProfile()->getType(), $filterParams);
     $this->initializeDataIO($serviceHelpers->getDataIO(), $requestData);
     $dataTransformerChain = $this->createDataTransformerChain($serviceHelpers->getProfile(), $serviceHelpers->getFileWriter()->hasTreeStructure());
     $dataWorkflow = new DataWorkflow($serviceHelpers->getDataIO(), $serviceHelpers->getProfile(), $dataTransformerChain, $serviceHelpers->getFileWriter());
     $session = $serviceHelpers->getSession()->getEntity();
     try {
         $resultData = $dataWorkflow->export($requestData);
         $message = sprintf('%s %s %s', $resultData['position'], SnippetsHelper::getNamespace('backend/swag_import_export/default_profiles')->get('type/' . $serviceHelpers->getProfile()->getType()), SnippetsHelper::getNamespace('backend/swag_import_export/log')->get('export/success'));
         $this->logProcessing('false', $resultData['fileName'], $serviceHelpers->getProfile()->getName(), $message, 'true', $session);
         unset($resultData['filter']);
         return $resultData;
     } catch (\Exception $e) {
         $this->logProcessing('true', $requestData['fileName'], $serviceHelpers->getProfile()->getName(), $e->getMessage(), 'false', $session);
         throw $e;
     }
 }
 /**
  * @param array $unprocessedData
  * @param string $profileName
  * @param string $outputFile
  */
 protected function afterImport(array $unprocessedData, $profileName, $outputFile)
 {
     //loads hidden profile for article
     $profile = $this->profileFactory->loadHiddenProfile($profileName);
     $fileWriter = $this->fileIOFactory->createFileWriter('csv');
     $dataTransformerChain = $this->dataTransformerFactory->createDataTransformerChain($profile, ['isTree' => $fileWriter->hasTreeStructure()]);
     $dataWorkflow = new DataWorkflow(null, $profile, $dataTransformerChain, $fileWriter);
     $dataWorkflow->saveUnprocessedData($unprocessedData, $profileName, $outputFile);
 }
 /**
  * Saves unprocessed data to csv file
  *
  * @param array $data
  * @param string $profileName
  * @param string $outputFile
  */
 protected function afterImport($data, $profileName, $outputFile)
 {
     /** @var FileIOFactory $fileFactory */
     $fileFactory = $this->Plugin()->getFileIOFactory();
     //loads hidden profile for article
     /** @var Profile $profile */
     $profile = $this->Plugin()->getProfileFactory()->loadHiddenProfile($profileName);
     $fileWriter = $fileFactory->createFileWriter('csv');
     /** @var DataTransformerChain $dataTransformerChain */
     $dataTransformerChain = $this->Plugin()->getDataTransformerFactory()->createDataTransformerChain($profile, array('isTree' => $fileWriter->hasTreeStructure()));
     $dataWorkflow = new DataWorkflow(null, $profile, $dataTransformerChain, $fileWriter);
     $dataWorkflow->saveUnprocessedData($data, $profileName, $outputFile);
 }