/**
  * {@inheritDoc}
  */
 public function load(ObjectManager $manager)
 {
     //load new entities
     $reports = [];
     foreach ($this->getEntityData() as $data) {
         $singleQueryReport = $manager->getRepository('AppBundle:SingleQueryReport')->findOneBy(['name' => $data['name']]);
         if (!$singleQueryReport) {
             $singleQueryReport = new SingleQueryReport();
             $singleQueryReport->setTag($data['tag']);
             $singleQueryReport->setName($data['name']);
             $singleQueryReport->setFilename($data['filename']);
             $availableToAccounts = isset($data['availableToAccounts']) ? $data['availableToAccounts'] : false;
             $singleQueryReport->setColumns($data['columns']);
             $singleQueryReport->setParameterWhiteList($data['parameterWhiteList']);
             foreach ($data['parts'] as $index => $partData) {
                 $part = new SingleQueryReportPart();
                 $part->setMethodName($partData['methodName']);
                 $part->setArgs($partData['args']);
                 $part->setOrder($index);
                 $singleQueryReport->addPart($part);
             }
             foreach ($data['countParts'] as $index => $partData) {
                 $part = new SingleQueryReportCountPart();
                 $part->setMethodName($partData['methodName']);
                 $part->setArgs($partData['args']);
                 $part->setOrder($index);
                 $singleQueryReport->addCountPart($part);
             }
             foreach ($data['singleQueryReportParameters'] as $paramData) {
                 $paramter = new SingleQueryReportParameter();
                 $paramter->setName($paramData['name']);
                 $paramter->setTitle($paramData['title']);
                 $paramter->setPriority($paramData['priority']);
                 $paramter->setType($paramData['type']);
                 $paramter->setIsFuzzy($paramData['isFuzzy']);
                 $paramter->setIsHidden($paramData['isHidden']);
                 $paramter->setIsOptional($paramData['isOptional']);
                 $paramter->setTemplate($paramData['template']);
                 $paramter->setValue($paramData['value']);
                 $paramter->setChoicesPropertyName($paramData['choicesPropertyName']);
                 foreach ($paramData['parts'] as $index => $partData) {
                     $part = new SingleQueryReportParameterPart();
                     $part->setMethodName($partData['methodName']);
                     $part->setArgs($partData['args']);
                     $part->setOrder($index);
                     $paramter->addPart($part);
                 }
                 $singleQueryReport->addSingleQueryReportParameter($paramter);
             }
             $manager->persist($singleQueryReport);
         }
         $reports[] = $singleQueryReport;
         //$this->addReference('dfwOffice', $dfwOffice);
     }
     $manager->flush();
     $this->initAclRoles();
     foreach ($reports as $report) {
         $this->addAcl($report);
         foreach ($report->getParts() as $part) {
             $this->addAcl($part);
         }
         foreach ($report->getCountParts() as $part) {
             $this->addAcl($part);
         }
         foreach ($report->getSingleQueryReportParameters() as $paramter) {
             $this->addAcl($paramter);
             foreach ($paramter->getParts() as $part) {
                 $this->addAcl($part);
             }
         }
     }
     return true;
 }
 /**
  * @Rest\Get("/single_query_report/{id}/export_csv")
  * @Rest\View(template=":default:index.html.twig",serializerEnableMaxDepthChecks=true, serializerGroups={"Default"})
  */
 public function exportCsvSingleQueryReportAction(\AppBundle\Entity\SingleQueryReport $singleQueryReport, Request $request)
 {
     try {
         $results = $singleQueryReport->export($this->container, $request);
     } catch (\Exception $e) {
         $httpCode = $e->getCode() > 0 ? $e->getCode() : 500;
         throw new HttpException($httpCode, $e->getMessage());
     }
     $headerRow = [];
     foreach ($results['columns'] as $column) {
         $headerRow[] = $column['label'];
     }
     $data = [$headerRow];
     foreach ($results['data'] as $row) {
         $dataRow = [];
         foreach ($results['columns'] as $column) {
             $dataRow[] = Csv::getCastedValueFromFormat($row[$column['name']], Csv::getFormatFromName($column['type']));
         }
         $data[] = $dataRow;
     }
     Csv::sendResponse($singleQueryReport->getFileName(), $data, $request);
 }