public function csvImport($csvFile, $entity, $user, $fileRecord) { // Create and configure the reader $headers = new ParagonArray(); $file = new \SplFileObject($csvFile); $csvReader = new CsvReader($file); $csvReader->setHeaderRowNumber(0); $csvReader->setStrict(false); $csvReader->setColumnHeaders($headers->csvReaderArray()); $workflow = new Workflow($csvReader); $doctrineWriter = new DoctrineWriter($this->em, $entity); $doctrineWriter->disableTruncate(); $workflow->addWriter($doctrineWriter); $dateConverter = new DateConventer($fileRecord->getPlanDate()); $weekNumberConverter = new WeekNumberConventer($fileRecord->getPlanDate()); $planNameConverter = new PlanNameConventer($fileRecord->getName()); $routeNameConventer = new RouteNameConventer($fileRecord->getPlanDate()); $dateTimeNow = new DateTimeNow(); $dateToMicroConventer = new TimeToMicroConventer(); $timeConverter = new DateTimeValueConverter('H:i'); $uploadedBy = new UploadedBy($user); $planDateConvert = new PlanDateConvert($fileRecord->getPlanDate()); //\Doctrine\Common\Util\Debug::dump($date->format('Y-m-d')); //die; $date = $fileRecord->getPlanDate(); $workflow->setSkipItemOnFailure(true)->addValueConverter('routeNo', $routeNameConventer)->addValueConverter('startTime', $dateConverter)->addValueConverter('sourceDepotDepartureTime', $dateConverter)->addValueConverter('arrivalTime', $dateConverter)->addValueConverter('departTime', $dateConverter)->addValueConverter('endDepotArrivalTime', $dateConverter)->addValueConverter('tripStart', $dateConverter)->addValueConverter('destDepotArrivalTime', $dateConverter)->addValueConverter('destDepotDepartureTime', $dateConverter)->addValueConverter('sourceDepotArrivalTime2', $dateConverter)->addValueConverter('sourceDepotDepartureTime2', $dateConverter)->addValueConverter('startDepotDepartureTime', $dateConverter)->addValueConverter('endTime', $dateConverter)->addValueConverter('callDuration', $dateToMicroConventer)->addValueConverter('dutyTime', $dateToMicroConventer)->addValueConverter('driveTime', $dateToMicroConventer)->addValueConverter('emptyTime', $dateToMicroConventer)->addValueConverter('timeWindowStart', $dateConverter)->addValueConverter('timeWindowEnd', $dateConverter)->addValueConverter('uploadDate', $dateTimeNow)->addValueConverter('uploadedBy', $uploadedBy)->addValueConverter('planDate', $planDateConvert)->addValueConverter('planName', $planNameConverter)->addValueConverter('weekNumber', $weekNumberConverter); // \Doctrine\Common\Util\Debug::dump($doctrineWriter); // die; $result = $workflow->process(); //update query to generate route and trip combination $query = $this->em->createQuery("UPDATE NTPBundle:ParagonData p SET p.routeNo = CONCAT(p.routeNo,'0', p.tripNo) " . "WHERE p.planDate=:date")->setParameter('date', $date); $query->execute(); return $result; }
/** * {@inheritdoc} */ public function process() { $msg = 'Processing workflow'; if ($this->workflow instanceof Workflow and $name = $this->workflow->getName()) { $msg .= ': ' . $name; } $this->climate->write($msg . "\n"); $result = $this->workflow->process(); $this->climate->info('Time elapsed: ' . $result->getElapsed()->format('%i minute(s) %s second(s)')); $this->climate->info('Total processed: ' . $result->getTotalProcessedCount() . ' row(s)'); if ($errorCount = $result->getErrorCount() > 0) { $this->climate->error('Errors: ' . $errorCount); } return $result; }
/** * DefaultTask constructor. * Crawl sources configuration and get data from those readers * @param Configuration $config */ public function __construct(Configuration $config) { // Get sources $sources = $config->get(array('sources'), array()); foreach ($sources as $key => $source) { // Skip this source if not defined if (!is_array($source) || empty($source)) { continue; } // Empty data array $data = array(); // Create reader with source conf $reader = Migrator::createReader(new Configuration($source)); // Writer will set data in an array $writer = new CallbackWriter(function ($item) use(&$data) { array_push($data, $item); }); // Create new workflow $workflow = new Workflow($reader); $workflow->addWriter($writer); $workflow->process(); // Apply data to sources $this->sources[$key] = $data; } if (count($this->sources) > 0) { $this->data = current($this->sources); } // Exec main with this task config $this->main($config->export()); }
public function csvAction() { $usb_device = $this->getDoctrine()->getRepository('CacicCommonBundle:ComputadorColeta')->listar3g(); // Gera cabeçalho $cabecalho = array('Identificador', 'Valor Coletado', 'Nome', 'Fabricante', 'Coletados'); $dados = array_merge(array($cabecalho), $usb_device); // Gera CSV $reader = new ArrayReader($dados); // Create the workflow from the reader $workflow = new Workflow($reader); // Add the writer to the workflow $tmpfile = tempnam(sys_get_temp_dir(), "Relatório-Dispositivos-3g.csv"); $file = new \SplFileObject($tmpfile, 'w'); $writer = new CsvWriter($file); $workflow->addWriter($writer); // Process the workflow $workflow->process(); // Retorna o arquivo $response = new BinaryFileResponse($tmpfile); $response->headers->set('Content-Type', 'text/csv'); $filename = "Relatório-Dispositivos-3g.csv"; $response->headers->set('Content-Disposition', "attachment; filename={$filename}"); $response->headers->set('Content-Transfer-Encoding', 'binary'); return $response; }
protected function execute(InputInterface $input, OutputInterface $output) { $reader = new CsvReader(new \SplFileObject($input->getArgument("file"))); $reader->setHeaderRowNumber(0); $workflow = new Workflow($reader); $workflow->addWriter(new IssueWriter($this->client)); $workflow->process(); }
public function register(Container $app) { $app['import.dbal'] = $app->protect(function ($conn = 'import', array $tables = ['project', 'product']) use($app) { //database connections $em = $app['orm.em']; $dbal = $app['dbs'][$conn]; foreach ($tables as $table) { $class = 'MetaCat\\Entity\\' . ucfirst($table); //grab columns $metadata = $em->getClassMetadata($class); $columns = $metadata->getColumnNames(); //add column for related entity if ($table === 'product') { $columns['project'] = 'projectid AS project'; } $sql = 'SELECT ' . implode(', ', $columns) . " FROM {$table};"; //Preserve ids $metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE); $metadata->setIdGenerator(new AssignedGenerator()); // Create and configure the reader $reader = new DbalReader($dbal, $sql); // Create the workflow from the reader $workflow = new Workflow($reader, isset($app['monolog']) ? $app['monolog'] : null); // Create a writer: you need Doctrine’s EntityManager. $doctrineWriter = new DoctrineWriter($em, $class); $workflow->addWriter($doctrineWriter); //set related entity if ($table === 'product') { $converter = new CallbackValueConverter(function ($item) use($em) { $val = $item ? $em->getReference('MetaCat\\Entity\\Project', $item) : null; return $val; }); $workflow->addValueConverter('project', $converter); } $converter = new CallbackValueConverter(function ($item) { $val = json_decode($item); return $val; }); $workflow->addValueConverter('json', $converter); // Process the workflow $result[] = $workflow->process(); //invalidate cache $em->getConfiguration()->getResultCacheImpl()->delete("mc_{$table}_owner"); //touch update touch($app['config.dir'] . '../var/data/update'); } return $result; }); }
private function process(Workflow $workflow, Import $import) { $e = null; $importRun = null; if ($this->eventDispatcher && ($importRun = $import->getRun())) { $e = new ImportProcessEvent($import); } if ($e && $importRun->getConfiguration()) { $this->eventDispatcher->dispatch(ImportProcessEvent::AFTER_PREPARE . '.' . $importRun->getConfiguration()->getImporterId(), $e); } $workflow->process(); if ($e && $importRun->getConfiguration()) { $this->eventDispatcher->dispatch(ImportProcessEvent::AFTER_FINISH . '.' . $importRun->getConfiguration()->getImporterId(), $e); } }
public function process() { //if no eventdispatcher has been set, use original functionality if (!$this->eventDispatcher) { return parent::process(); } $count = 0; $exceptions = array(); $startTime = new \DateTime(); $importProcessEvent = new ImportProcessEvent(); //Prepare $this->prepare($importProcessEvent); // Read all items foreach ($this->reader as $item) { //only create event once for every item-event for performance reasons $event = $importProcessEvent->newItemEvent($item); try { $this->processRead($item, $event); // Apply filters before conversion if (!$this->processFilter($item, $event)) { continue; } // Convert item if (!($convertedItem = $this->processConvert($item, $event))) { continue; } // Apply filters after conversion if (!$this->processConvertFilter($convertedItem, $event)) { continue; } $this->processWrite($convertedItem, $item, $event); } catch (ExceptionInterface $e) { if ($this->skipItemOnFailure) { $exceptions[] = $e; $this->logger->error($e->getMessage()); } else { throw $e; } } ++$count; } //Finish $this->finish($importProcessEvent); return new Result($this->name, $startTime, new \DateTime(), $count, $exceptions); }
public function importFileAction(Request $request) { // Create and configure the reader $file = new \SplFileObject('directly.csv', "r"); //$file->setFlags(SplFileObject::READ_CSV); $csvReader = new CsvReader($file, ","); var_dump($csvReader); // Tell the reader that the first row in the CSV file contains column headers $csvReader->setHeaderRowNumber(0); // Create the workflow from the reader $workflow = new Workflow($csvReader); // Create a writer: you need Doctrine’s EntityManager. $em = $this->getDoctrine()->getManager(); $doctrineWriter = new DoctrineWriter($em, 'SuppliercheckAdminBundle:Product'); $workflow->addWriter($doctrineWriter); $doctrineWriter->setTruncate(false); //$entityMetadata=$em->getClassMetadata('AdminAdminBundle:Product'); //$entityMetadata->setIdGeneratorType(\Doctrine\ORM\Mapping\ClassMetadata::GENERATOR_TYPE_AUTO); // Process the workflow $workflow->process(); //var_dump($workflow); return $this->render('SuppliercheckAdminBundle:Default:csv_import.html.twig'); }
/** * Generate a CSV file * * @Route("/csv", name="printer_csv") * */ public function csvAction(Request $request) { $em = $this->getDoctrine()->getManager(); $form = $request->query->get('form'); if ($form) { $start = new \DateTime($form['startDate']); $start = $start->format('U'); $end = new \DateTime($form['endDate']); $end = $end->format('U'); } $start = isset($start) ? $start : time() - 60 * 60 * 24 * 30; $end = isset($end) ? $end : time(); $printers = $em->getRepository('CocarBundle:PrinterCounter')->relatorioCsvGeral($start, $end); // Gera CSV $reader = new ArrayReader($printers); // Create the workflow from the reader $workflow = new Workflow($reader); // As you can see, the first names are not capitalized correctly. Let's fix // that with a value converter: $converter = new CallbackValueConverter(function ($input) { return date('d/m/Y', $input); }); $workflow->addValueConverter('endDate', $converter); $workflow->addValueConverter('startDate', $converter); // Add the writer to the workflow $tmpfile = tempnam(sys_get_temp_dir(), 'impressoras'); $file = new \SplFileObject($tmpfile, 'w'); $writer = new CsvWriter($file); $workflow->addWriter($writer); // Process the workflow $workflow->process(); // Retorna o arquivo $response = new BinaryFileResponse($tmpfile); $response->headers->set('Content-Type', 'text/csv'); $response->headers->set('Content-Disposition', 'attachment; filename="impressoras.csv"'); $response->headers->set('Content-Transfer-Encoding', 'binary'); return $response; }
/** * CSV do relatório de softwares removidos * * @param Request $request * @param $idAquisicaoItem * @return BinaryFileResponse * @throws \Ddeboer\DataImport\Exception\ExceptionInterface * @throws \Exception */ public function removidosDetalhadoCsvAction(Request $request, $idAquisicaoItem) { $locale = $request->getLocale(); $dados = $this->getDoctrine()->getRepository('CacicCommonBundle:AquisicaoItem')->removidosDetalhadoCsv($idAquisicaoItem); $cabecalho = array(array('ID', 'Nome da máquina', 'IP', 'MAC Address', 'Sistema Operacional', 'Local', 'Subrede', 'Data da coleta')); // Gera CSV $reader = new ArrayReader(array_merge($cabecalho, $dados)); // Create the workflow from the reader $workflow = new Workflow($reader); $converter = new CallbackValueConverter(function ($input) { $date = new DateTime($input); return $date->format('d/m/Y H:m:s'); }); $workflow->addValueConverter('dtHrUltAcesso', $converter); $workflow->addValueConverter("reader", new CharsetValueConverter('UTF-8', $reader)); // Add the writer to the workflow $filename = "relatorio-software.csv"; $tmpfile = tempnam(sys_get_temp_dir(), $filename); $file = new \SplFileObject($tmpfile, 'w'); $writer = new CsvWriter($file); $workflow->addWriter($writer); // Process the workflow $workflow->process(); // Retorna o arquivo $response = new BinaryFileResponse($tmpfile); $response->headers->set('Content-Type', 'text/csv'); $response->headers->set('Content-Disposition', "attachment; filename={$filename}"); $response->headers->set('Content-Transfer-Encoding', 'binary'); return $response; }
public function semColetaDetalharCsvAction(Request $request) { $em = $this->getDoctrine()->getManager(); $locale = $request->getLocale(); $idSo = $request->get('idSo'); $idRede = $request->get('idRede'); $idLocal = $request->get('idLocal'); $idClasse = $request->get('idClasse'); $computadores = $em->getRepository("CacicCommonBundle:Computador")->detalharClasseCsv($idClasse, $idRede, $idLocal, $idSo); // Gera CSV $reader = new ArrayReader($computadores); // Create the workflow from the reader $workflow = new Workflow($reader); // As you can see, the first names are not capitalized correctly. Let's fix // that with a value converter: $converter = new CallbackValueConverter(function ($input) { return $input->format('d/m/Y H:m:s'); }); $workflow->addValueConverter('dtHrUltAcesso', $converter); $workflow->addValueConverter("reader", new CharsetValueConverter('UTF-8', $reader)); // Add the writer to the workflow $tmpfile = tempnam(sys_get_temp_dir(), 'Computadores-Subredes'); $file = new \SplFileObject($tmpfile, 'w'); $writer = new CsvWriter($file); $writer->writeItem(array('Computador', 'MAC Address', 'Endereço IP', 'SO', 'Local', 'Sub Rede', 'Data e Hora do último Acesso')); $workflow->addWriter($writer); // Process the workflow $workflow->process(); // Retorna o arquivo $response = new BinaryFileResponse($tmpfile); $response->headers->set('Content-Type', 'text/csv'); $response->headers->set('Content-Disposition', 'attachment; filename="WMI-sem-coleta.csv"'); $response->headers->set('Content-Transfer-Encoding', 'binary'); return $response; }
public function detalharCsvAction(Request $request) { $locale = $request->getLocale(); $em = $this->getDoctrine()->getManager(); $idRelatorio = $request->get('softwares'); $nomeRelatorio = $request->get('nomeRelatorio'); $idLocal = $request->get('locais'); $idRede = $request->get('redes'); $idSo = $request->get('so'); $filtros = array('softwares' => $idRelatorio, 'nomeRelatorio' => $nomeRelatorio, 'locais' => $idLocal, 'redes' => $idRede, 'so' => $idSo); $saida = array(); if (is_array($idRelatorio) && !empty($idRelatorio)) { foreach ($idRelatorio as $elm) { $relatorio = $em->getRepository("CacicCommonBundle:SoftwareRelatorio")->find($elm); if (!empty($relatorio)) { array_push($saida, $relatorio); } } } elseif (!empty($idRelatorio)) { $relatorio = $em->getRepository("CacicCommonBundle:SoftwareRelatorio")->find($idRelatorio); if (!empty($relatorio)) { array_push($saida, $relatorio); } } if (is_array($nomeRelatorio) && !empty($nomeRelatorio)) { foreach ($nomeRelatorio as $elm) { $relatorio = $em->getRepository("CacicCommonBundle:SoftwareRelatorio")->findOneBy(array('nomeRelatorio' => $elm)); if (!empty($relatorio)) { array_push($saida, $relatorio); } } } elseif (!empty($nomeRelatorio)) { $relatorio = $em->getRepository("CacicCommonBundle:SoftwareRelatorio")->findOneBy(array('nomeRelatorio' => $nomeRelatorio)); if (!empty($relatorio)) { array_push($saida, $relatorio); } } $dados = $em->getRepository("CacicCommonBundle:SoftwareRelatorio")->gerarRelatorioDetalharCsv($filtros); // Gera CSV $reader = new ArrayReader($dados); // Create the workflow from the reader $workflow = new Workflow($reader); $converter = new CallbackValueConverter(function ($input) { return $input->format('d/m/Y H:m:s'); }); $workflow->addValueConverter('dtHrUltAcesso', $converter); $workflow->addValueConverter("reader", new CharsetValueConverter('UTF-8', $reader)); // Add the writer to the workflow $tmpfile = tempnam(sys_get_temp_dir(), 'Relatorio-Software-Detalhado.csv'); $file = new \SplFileObject($tmpfile, 'w'); $writer = new CsvWriter($file); $writer->writeItem(array('Computador', 'MAC Address', 'Endereço IP', 'Sistema Operacional', 'Local', 'Ip da Rede', 'Nome da Rede', 'Data/Hora do Último Acesso')); $workflow->addWriter($writer); // Process the workflow $workflow->process(); // Retorna o arquivo $response = new BinaryFileResponse($tmpfile); $response->headers->set('Content-Type', 'text/csv'); $response->headers->set('Content-Disposition', 'attachment; filename="Relatório-Software-Detalhado.csv"'); $response->headers->set('Content-Transfer-Encoding', 'binary'); return $response; }
public function arquivoEstacaoAction(Request $request) { $printers = $this->getDoctrine()->getManager()->getRepository('CacicCommonBundle:Computador')->estacaoSGConf(); // Gera CSV $reader = new ArrayReader($printers); // Create the workflow from the reader $workflow = new Workflow($reader); // As you can see, the first names are not capitalized correctly. Let's fix // that with a value converter: $converter = new CallbackValueConverter(function ($input) { return $input->format('d/m/Y H:m:s'); }); $workflow->addValueConverter('dtHrUltAcesso', $converter); $workflow->addValueConverter("reader", new CharsetValueConverter('UTF-8', $reader)); // Add the writer to the workflow $tmpfile = tempnam(sys_get_temp_dir(), 'SGConf_PGFN_Estacoes_CACIC_'); $file = new \SplFileObject($tmpfile, 'w'); $writer = new CsvWriter($file); $workflow->addWriter($writer); // Process the workflow $workflow->process(); // Gera data e adiciona no nome do arquivo $today = date("Ymd"); $nameArquivo = "SGConf_PGFN_Estacoes_CACIC_" . $today . ".csv"; // Retorna o arquivo $response = new BinaryFileResponse($tmpfile); $response->headers->set('Content-Type', 'text/csv'); $response->headers->set('Content-Disposition', 'attachment; filename=' . $nameArquivo . ''); $response->headers->set('Content-Transfer-Encoding', 'binary'); return $response; }
/** * CSV da lista de computadores * * @param Request $request * @param null $idRede ID da Rede * @return BinaryFileResponse * @throws \Ddeboer\DataImport\Exception\ExceptionInterface * @throws \Exception */ public function listarDetalhadoCsvAction(Request $request, $idRede = null) { $dataInicio = $request->get('dataInicio'); $dataFim = $request->get('dataFim'); $locale = $request->getLocale(); $dados = $this->getDoctrine()->getRepository('CacicCommonBundle:Computador')->gerarRelatorioComputadoresCsv($filtros = array(), $idRede, $dataInicio, $dataFim); if (!empty($idRede)) { $rede = $dados[0]['nmRede']; } else { $rede = null; } // Gera CSV $reader = new ArrayReader($dados); // Create the workflow from the reader $workflow = new Workflow($reader); $workflow->addValueConverter("reader", new CharsetValueConverter('UTF-8', $reader)); $converter = new CallbackValueConverter(function ($input) { return $input->format('d/m/Y H:m:s'); }); $workflow->addValueConverter('dtHrUltAcesso', $converter); // Add the writer to the workflow $tmpfile = tempnam(sys_get_temp_dir(), 'Computadores-lista'); $file = new \SplFileObject($tmpfile, 'w'); $writer = new CsvWriter($file); $writer->writeItem(array('Computador', 'Mac Address', 'Endereço IP', 'Sistema Operacional', 'Local', 'Subrede', 'IP Subrede', 'Data/Hora do Ùltimo Acesso')); $workflow->addWriter($writer); // Process the workflow $workflow->process(); // Retorna o arquivo $response = new BinaryFileResponse($tmpfile); $response->headers->set('Content-Type', 'text/csv'); $response->headers->set('Content-Disposition', 'attachment; filename="Computadores.csv"'); $response->headers->set('Content-Transfer-Encoding', 'binary'); return $response; }
/** * Import from csv * using https://github.com/ddeboer/data-import * * @Route("/import/{filetype}/{entity}/{id}", name="import_upload") */ public function importAction($id, $filetype, $entity) { $em = $this->getDoctrine()->getManager(); // Create and configure the reader $upload = $em->getRepository('AppBundle:Upload')->find($id); $path = $this->get('kernel')->getRootDir() . '/../uploads/' . $upload->getName(); $entity_namespace = 'AppBundle:' . $entity; $entity_redirect = $entity; $file = new \SplFileObject($path); $csvReader = new CsvReader($file); // Tell the reader that the first row in the CSV file contains column headers $csvReader->setHeaderRowNumber(0); $csvReader->setStrict(FALSE); // Create the workflow from the reader $workflow = new Workflow($csvReader); // Create a writer: you need Doctrine’s EntityManager. $doctrineWriter = new DoctrineWriter($em, $entity_namespace); $doctrineWriter->disableTruncate(); $workflow->addWriter($doctrineWriter); // Process the workflow $workflow->process(); return $this->redirect($this->generateUrl(strtolower($entity_redirect))); }
public function importFileAction(Request $request) { // Get FileId to "import" $param = $request->request; $fileId = (int) trim($param->get("fileId")); $curType = trim($param->get("fileType")); $uploadedFile = $request->files->get("csvFile"); // if upload was not ok, just redirect to "AdminStatWrongPArameters" if (!CSVTypes::existsType($curType) || $uploadedFile == null) { return 0; } // generate dummy dir $dummyImport = getcwd() . "/dummyImport"; $fname = "directly.csv"; $filename = $dummyImport . "/" . $fname; @mkdir($dummyImport); @unlink($filename); // move file to dummy filename $uploadedFile->move($dummyImport, $fname); echo "Starting to Import " . $filename . ", Type: " . CSVTypes::getNameOfType($curType) . "<br/>"; // open file $source = new StreamSource($filename); if ($source === false) { die("Can't open filestream {$filename}"); } $file = $source->getFile(); if ($file === false) { die("Can't open file {$filename}"); } // Create and configure the reader $csvReader = new CsvReader($file, ";"); if ($csvReader === false) { die("Can't create csvReader {$filename}"); } $csvReader->setHeaderRowNumber(1); var_dump($csvReader); // this must be done to import CSVs where one of the data-field has CRs within! $file->setFlags(\SplFileObject::READ_CSV | \SplFileObject::SKIP_EMPTY | \SplFileObject::READ_AHEAD); echo "etape"; var_dump($file); // Set Database into "nonchecking Foreign Keys" $em = $this->getDoctrine()->getManager(); $em->getConnection()->exec("SET FOREIGN_KEY_CHECKS=0;"); // Create the workflow $workflow = new Workflow($csvReader); if ($workflow === false) { die("Can't create workflow {$filename}"); } $curEntityClass = CSVTypes::getEntityClass($curType); $writer = new DoctrineWriter($em, $curEntityClass); $writer->setTruncate(false); $entityMetadata = $em->getClassMetadata($curEntityClass); $entityMetadata->setIdGeneratorType(\Doctrine\ORM\Mapping\ClassMetadata::GENERATOR_TYPE_AUTO); // $entityMetadata->setIdGeneratorType(Doctrine\ORM\Mapping\::GENERATOR_TYPE_NONE); $workflow->addWriter($writer); $workflow->process(); // RESetting Database Check Status $em->getConnection()->exec("SET FOREIGN_KEY_CHECKS=1;"); // After successfully import, some files need special treatment --> Reset some DB fields /* if ($curType==CSVTypes::STOCK) { $q=$em->createQuery("UPDATE AdminAdminBundle:Product s SET s.description = false"); $q->execute(); }*/ // var_dump($workflow); return $this->render('SuppliercheckAdminBundle:Default:csv_import.html.twig'); }
/** * [CSV] Relatório de Softwares Inventariados gerado à partir dos filtros informados */ public function desativadosRelatorioCsvAction(Request $request) { $logger = $this->get('logger'); $rede = $request->get('teIpRede'); if (is_array($rede)) { $rede = implode(',', $rede); } $software = $request->get('idSoftware'); if (is_array($software)) { $software = implode(',', $software); } $local = $request->get('idLocal'); if (is_array($local)) { $local = implode(',', $local); } // Adiciona rede à lista de filtros se for fornecido if (!empty($rede)) { $filtros['redes'] = $rede; } // Adiciona local à lista de filtros se for fornecido if (!empty($local)) { $filtros['local'] = $local; } // Adiciona Software à lista de filtros se for fornecido if (!empty($software)) { $filtros['softwares'] = $software; } $dados = $this->getDoctrine()->getRepository('CacicCommonBundle:ComputadorColeta')->gerarRelatorioSoftwaresDesativados($filtros); $locale = $request->getLocale(); // Gera cabeçalho $cabecalho = array(); foreach ($dados as $elm) { array_push($cabecalho, array_keys($elm)); break; } // Gera CSV $reader = new ArrayReader(array_merge($cabecalho, $dados)); // Create the workflow from the reader $workflow = new Workflow($reader); // Add the writer to the workflow $tmpfile = tempnam(sys_get_temp_dir(), "SoftwareDesativado.csv"); $file = new \SplFileObject($tmpfile, 'w'); $writer = new CsvWriter($file); $workflow->addWriter($writer); // Process the workflow $workflow->process(); // Retorna o arquivo $response = new BinaryFileResponse($tmpfile); $response->headers->set('Content-Type', 'text/csv'); $response->headers->set('Content-Disposition', "attachment; filename=SoftwareDesativado.csv"); $response->headers->set('Content-Transfer-Encoding', 'binary'); return $response; }
public function testExceptionInterfaceThrownFromWriterIsCaught() { $originalData = array(array('foo' => 'bar')); $reader = new ArrayReader($originalData); $array = array(); $writer = $this->getMock('Ddeboer\\DataImport\\Writer\\ArrayWriter', array(), array(&$array)); $exception = new SourceNotFoundException("Log me!"); $writer->expects($this->once())->method('writeItem')->with($originalData[0])->will($this->throwException($exception)); $logger = $this->getMock('Psr\\Log\\LoggerInterface'); $logger->expects($this->once())->method('error')->with($exception->getMessage()); $workflow = new Workflow($reader, $logger); $workflow->setSkipItemOnFailure(true); $workflow->addWriter($writer); $workflow->process(); }
/** * CSV do usuário logado por computador * * @param Request $request * @param $idComputador * @return BinaryFileResponse * @throws \Ddeboer\DataImport\Exception\ExceptionInterface * @throws \Exception */ public function logUsuarioCsvAction(Request $request, $idComputador) { $em = $this->getDoctrine()->getManager(); $locale = $request->getLocale(); $dataInicio = $request->get('dataInicio'); $dataFim = $request->get('dataFim'); $dados = $em->getRepository("CacicCommonBundle:LogUserLogado")->computadorData($idComputador, $dataInicio, $dataFim)->getArrayResult(); // Gera CSV $reader = new ArrayReader($dados); // Create the workflow from the reader $workflow = new Workflow($reader); $workflow->addValueConverter("reader", new CharsetValueConverter('UTF-8', $reader)); $converter = new CallbackValueConverter(function ($input) { return $input->format('d/m/Y H:m:s'); }); $workflow->addValueConverter('data', $converter); // Add the writer to the workflow $tmpfile = tempnam(sys_get_temp_dir(), 'Computadores-lista'); $file = new \SplFileObject($tmpfile, 'w'); $writer = new CsvWriter($file); $writer->writeItem(array('idLogAcesso', 'Data/Hora', 'Usuário')); $workflow->addWriter($writer); // Process the workflow $workflow->process(); // Retorna o arquivo $response = new BinaryFileResponse($tmpfile); $response->headers->set('Content-Type', 'text/csv'); $response->headers->set('Content-Disposition', 'attachment; filename="Log-Acesso-' . $idComputador . '.csv"'); $response->headers->set('Content-Transfer-Encoding', 'binary'); return $response; }
/** * @return \Ddeboer\DataImport\Result * @throws \Ddeboer\DataImport\Exception\ExceptionInterface * @throws \Exception */ public function processData() { $workflow = new Workflow($this->reader); $output = new ConsoleOutput(); // Don’t import the non-metadata $filter = new Filter\CallbackFilter(function ($row) { if (is_numeric($row['reg_id'])) { return true; } if ( ! trim($row['reg_id'])) { foreach ($row as $item) { if ( ! is_array($item)) { if (trim($item)) { return true; } } else { foreach ($item as $foo) { if (trim($foo)) { return true; } } } } } return false; }); $trimConverter = new CallbackItemConverter(function ($row) { foreach ($row as $key => $value) { $row[$key] = trim($row[$key]); } return $row; }); $lexicalConverter = new CallbackItemConverter(function ($row) { foreach ($row as $key => $value) { if (isset( $this->prolog['columns'][$key]['id'] ) and $this->prolog['columns'][$key]['id'] == 27) { $lang = $this->prolog['columns'][$key]['lang']; //check for existing language suffix if ($value and ! preg_match("/\\." . $lang . "$/u", $value)) { $row[$key] = $value . "." . $lang; } } } return $row; }); $typeConverter = new MappingValueConverter([ 'rdfs:class' => 'class', 'rdfs:property' => 'property', 'class' => 'class', 'property' => 'property', 'Class' => 'class', 'Property' => 'property', 'subclass' => 'class', 'subproperty' => 'property', '' => '', ]); $vocabWriter = new Writer\CallbackWriter(function ($row) { $this->setPrologColumns(); //todo: $row[59] (status) and $row[62] (uri) sre hardcoded but the array key should be set somewhere globally if ( ! isset( $row[59] )) { $row[59] = $this->prolog['defaults']['statusId']; } $rowStatus = $row[59]; $language = $this->prolog['defaults']['lang']; foreach ($row as $key => &$element) { $this->updateRowUris($key, $element); } $uri = $this->getFqn($row[62]); $property = null; if ( ! empty( $row['reg_id'] )) { $property = \ConceptPeer::retrieveByPK($row['reg_id']); } else { //check for an existing property by uri /** @var \Concept $property */ $property = \ConceptPeer::getConceptByUri($uri); } //even if we found a property, we kill it if it's in a different schema than we're populating if ($property and $property->getVocabularyId() !== $this->vocabId) { //todo: we should log this event unset( $property ); } if (empty( $property )) { //it's a new property $property = new \Concept(); $property->setVocabularyId($this->vocabId); $property->setCreatedUserId($this->userId); $property->setUpdatedUserId($this->userId); $property->setStatusId($rowStatus); $property->setLanguage($language); $property->setUri($uri); $property->save(); } unset( $row['reg_id'] ); if ($property) { // if (8 == $rowStatus) { // //it's been deprecated and we don't do anything else // $property->setStatusId($rowStatus); // $this->updateElement($element, $dbElement, $property); // } else { $dbElements = $property->getElementsForImport($this->profileProperties); foreach ($dbElements as $key => $dbElement) { /** @var string | array $rowElement */ $rowElement = isset( $row[$key] ) ? $row[$key] : null; if (is_array($rowElement)) { foreach ($rowElement as $elementKey => &$element) { if ($this->updateConceptProperty($element, $dbElement, $property)) { unset( $rowElement[$elementKey] ); } } } else { if ($this->updateConceptProperty($rowElement, $dbElement, $property)) { unset( $row[$key] ); } } } foreach ($row as $key => $value) { $dbElement = isset( $dbElements[$key] ) ? $dbElements[$key] : null; if ( ! empty( $this->prolog['columns'][$key]['property'] )) { $profileProperty = $this->prolog['columns'][$key]['property']; if (is_array($value)) { foreach ($value as &$oneValue) { $language = $this->prolog['columns'][$key]['lang'][0]; $this->upsertConceptFromRow($dbElement, $oneValue, $rowStatus, $property, $profileProperty, $language, $key); } } else { $language = $this->prolog['columns'][$key]['lang']; $this->upsertConceptFromRow($dbElement, $value, $rowStatus, $property, $profileProperty, $language, $key); } } } } $property->setUri($uri); $property->setStatusId($rowStatus); $affectedRows = $property->save(); if (empty( $property->getPrefLabel() )) { $prefLabel = \ConceptPropertyPeer::lookupProperty($property->getId(), 19, $this->prolog['defaults']['lang']); if ( ! empty( $prefLabel )) { $property->setPrefLabel($prefLabel->getObject()); $property->setPrefLabelId($prefLabel->getId()); $property->setLanguage($this->prolog['defaults']['lang']); $property->save(); } } return; //************** // CRUFT ALERT // The rest of this is never run!! //************** //build an array of references $newElements = [ ]; $newElements2 = [ ]; if ( ! isset( $row['status'] )) { $row[14] = $this->prolog['defaults']['statusId']; } foreach ($row as $key => $element) { //skip it there's no property id $columnKey = $this->prolog['columns'][$key]; if ( ! $columnKey['id']) { continue; } if ( ! empty( $columnKey['type'] ) and $this->useCuries) { $element = $this->getFqn($element); } $key2 = md5(strval($columnKey['id']) . strval($columnKey['lang']) . $element); $newElements[$key2] = [ ]; $newElements[$key2] += $columnKey; $newElements[$key2]['val'] = $element; /** @var \ProfileProperty $profileProperty */ if (isset( $columnKey['property'] )) { $profileProperty = $columnKey['property']; $var = [ 'matchkey' => $key2, 'val' => $newElements[$key2], ]; if (isset( $profileProperty ) and $profileProperty->getHasLanguage()) { $newElements2[$columnKey['id']][$columnKey['lang']][] = $var; } else { $newElements2[$columnKey['id']][] = $var; } } } if ( ! empty( $row['reg_id'] )) { $property = \SchemaPropertyPeer::retrieveByPK($row['reg_id']); if ($property) { $dbElements = $property->getSchemaPropertyElementsRelatedBySchemaPropertyIdJoinProfileProperty(); $dbElements2 = [ ]; /** @var \SchemaPropertyElement $dbElement */ foreach ($dbElements as $dbElement) { if ($dbElement->getProfileProperty()->getHasLanguage()) { $dbElements2[$dbElement->getProfilePropertyId()][$dbElement->getLanguage()][] = &$dbElement; } else { $dbElements2[$dbElement->getProfilePropertyId()][] = &$dbElement; } } /** @var \SchemaPropertyElement $element */ foreach ($dbElements as $element) { $language = $element->getLanguage(); $profilePropertyId = $element->getProfilePropertyId(); $key = md5(strval($profilePropertyId) . strval($language) . $element->getObject()); //if the newelement key matches then if (isset( $newElements[$key] )) { if ($element->getProfileProperty()->getHasLanguage()) { $newElements2Array = $newElements2[$profilePropertyId][$language]; } else { $newElements2Array = $newElements2[$profilePropertyId]; } $count = count($newElements2Array); for ($I = 0; $I < $count; $I++) { if ($newElements2Array[$I]['matchkey'] == $key) { unset( $newElements2Array[$I] ); } } unset( $newElements[$key] ); $element->importStatus = 'match'; continue; } else { if ($element->getProfileProperty()->getHasLanguage()) { if (isset( $newElements2[$profilePropertyId][$language] )) { $count = count($newElements2[$profilePropertyId][$language]); for ($I = 0; $I < $count; $I++) { if ($newElements2[$profilePropertyId][$language][$I]['val']['val'] == $element->getObject()) { unset( $newElements2[$profilePropertyId][$language][$I] ); $element->importStatus = 'match'; if ( ! count($newElements2[$profilePropertyId][$language])) { unset( $newElements2[$profilePropertyId][$language] ); } continue; } } } } else { //compare the old values with the new with the same key $count = count($newElements2[$profilePropertyId]); for ($I = 0; $I < $count; $I++) { if (isset( $newElements2[$profilePropertyId][$I] )) { if ($newElements2[$profilePropertyId][$I]['val']['val'] == $element->getObject()) { unset( $newElements2[$profilePropertyId][$I] ); $element->importStatus = 'match'; continue; } } } } //if the key matches then //if the value matches //delete the newElement //else the value doesn't match //if the newElement value is empty //delete the dbElement } $element->matchKey = $key; } //update the property values $property->save(); } else { //there's no existing property an we have to create a new one $property = new \SchemaProperty(); } foreach ($newElements as $key => $newElement) { if ( ! empty( $newElement['id'] ) and ! isset( $oldElements[$key] )) { $profileProperty = $newElement['property']; //walk the old elements looking for a match on predicate + language /** @var \SchemaPropertyElement[] $oldElement */ foreach ($dbElements as $oldElement) { /** @var \SchemaPropertyElement $oldOne */ $oldOne = &$oldElement['element']; if ($newElement['id'] == $oldOne->getProfilePropertyId()) { /** @var \ProfileProperty $profileProperty */ if (( $profileProperty->getHasLanguage() and $newElement['lang'] == $oldOne->getLanguage() ) or ! $profileProperty->getHasLanguage()) { if ( ! empty( $newElement['val'] )) { $oldOne->setObject($newElement['val']); $oldOne->setUpdatedUserId($this->userId); $oldOne->setStatusId($row['status']); //$oldOne->save(); $oldElement['status'] = "updated"; } else { $oldOne->delete(); $oldElement['status'] = "deleted"; } //update the property value if ($profileProperty->getIsInForm()) { $this->setPropertyValue($newElement['val'], $property, $profileProperty->getName(), ! $profileProperty->getIsObjectProp()); } break; } } } //we looked through them all, add a new one if ( ! empty( $newElement['val'] )) { $addMe = new \SchemaPropertyElement(); $addMe->setObject($newElement['val']); //$addMe->setSchemaPropertyRelatedBySchemaPropertyId($property); $addMe->setCreatedUserId($this->userId); $addMe->setUpdatedUserId($this->userId); $addMe->setLanguage($newElement['lang']); $addMe->setProfilePropertyId($newElement['id']); $addMe->setStatusId($row['status']); $addMe->importId = $this->importId; //$addMe->save(); $property->addSchemaPropertyElementRelatedBySchemaPropertyId($addMe); //update the property value if ($profileProperty->getIsInForm()) { $this->setPropertyValue($newElement['val'], $property, $profileProperty->getName(), ! $profileProperty->getIsObjectProp()); } } } } //update the property if ($property) { $property->setStatusId($row['status']); $property->save(); } } //var_dump($row); }); $schemaWriter = new Writer\CallbackWriter(function ($row) { $this->setPrologColumns(); if ( ! isset( $row[14] )) { $row[14] = $this->prolog['defaults']['statusId']; } $rowStatus = $row[14]; $language = $this->prolog['defaults']['lang']; foreach ($row as $key => &$element) { $this->updateRowUris($key, $element); } $uri = $row[13]; $property = null; $schemaId = $this->vocabId; if ( ! empty( $row['reg_id'] )) { $property = \SchemaPropertyPeer::retrieveByPK($row['reg_id']); } else { //check for an existing property by uri /** @var \SchemaProperty $property */ $property = \SchemaPropertyPeer::retrieveByUri($uri); if ($property) { $schemaId = $property->getSchemaId(); } } //even if we found a property, we kill it if it's in a different schema than we're populating if ($property and $schemaId !== $this->vocabId) { //todo: we should log this event unset( $property ); } if (empty( $property )) { //it's a new property $property = new \SchemaProperty(); $property->setSchemaId($this->vocabId); $property->setCreatedUserId($this->userId); $property->setUpdatedUserId($this->userId); $property->setStatusId($rowStatus); $property->setLanguage($language); $property->save(); } unset( $row['reg_id'] ); if ($property) { // if (8 == $rowStatus) { // //it's been deprecated and we don't do anything else // $property->setStatusId($rowStatus); // $this->updateElement($element, $dbElement, $property); // } else { $dbElements = $property->getElementsForImport($this->profileProperties); foreach ($dbElements as $key => $dbElement) { /** @var string | array $rowElement */ $rowElement = isset( $row[$key] ) ? $row[$key] : null; if (is_array($rowElement)) { foreach ($rowElement as $elementKey => &$element) { if ($this->updateElement($element, $dbElement, $property)) { unset( $rowElement[$elementKey] ); } } } else { if ($this->updateElement($rowElement, $dbElement, $property)) { unset( $row[$key] ); } } } foreach ($row as $key => $value) { $dbElement = isset( $dbElements[$key] ) ? $dbElements[$key] : null; if ( ! empty( $this->prolog['columns'][$key]['property'] )) { $profileProperty = $this->prolog['columns'][$key]['property']; if (is_array($value)) { foreach ($value as &$oneValue) { $language = $this->prolog['columns'][$key]['lang'][0]; $this->upsertElementFromRow($dbElement, $oneValue, $rowStatus, $property, $profileProperty, $language, $key); } } else { $language = $this->prolog['columns'][$key]['lang']; $this->upsertElementFromRow($dbElement, $value, $rowStatus, $property, $profileProperty, $language, $key); } if ($key == 'parent_class' and strtolower($property->getType()) == 'class' and $row[$key] != $property->getParentUri()) { $property->setParentUri($row[$key]); //we'll set this later $property->setIsSubpropertyOf(null); } if ($key == 'parent_property' and strtolower($property->getType()) == 'property' and $row[$key] != $property->getParentUri()) { $property->setParentUri($row[$key]); //we'll set this later $property->setIsSubpropertyOf(null); } } } } $affectedRows = $property->save(); // } return; //build an array of references $newElements = [ ]; $newElements2 = [ ]; if ( ! isset( $row['status'] )) { $row[14] = $this->prolog['defaults']['statusId']; } foreach ($row as $key => $element) { //skip it there's no property id $columnKey = $this->prolog['columns'][$key]; if ( ! $columnKey['id']) { continue; } if ( ! empty( $columnKey['type'] ) and $this->useCuries) { $element = $this->getFqn($element); } $key2 = md5(strval($columnKey['id']) . strval($columnKey['lang']) . $element); $newElements[$key2] = [ ]; $newElements[$key2] += $columnKey; $newElements[$key2]['val'] = $element; /** @var \ProfileProperty $profileProperty */ if (isset( $columnKey['property'] )) { $profileProperty = $columnKey['property']; $var = [ 'matchkey' => $key2, 'val' => $newElements[$key2], ]; if (isset( $profileProperty ) and $profileProperty->getHasLanguage()) { $newElements2[$columnKey['id']][$columnKey['lang']][] = $var; } else { $newElements2[$columnKey['id']][] = $var; } } } if ( ! empty( $row['reg_id'] )) { $property = \SchemaPropertyPeer::retrieveByPK($row['reg_id']); if ($property) { $dbElements = $property->getSchemaPropertyElementsRelatedBySchemaPropertyIdJoinProfileProperty(); $dbElements2 = [ ]; /** @var \SchemaPropertyElement $dbElement */ foreach ($dbElements as $dbElement) { if ($dbElement->getProfileProperty()->getHasLanguage()) { $dbElements2[$dbElement->getProfilePropertyId()][$dbElement->getLanguage()][] = &$dbElement; } else { $dbElements2[$dbElement->getProfilePropertyId()][] = &$dbElement; } } /** @var \SchemaPropertyElement $element */ foreach ($dbElements as $element) { $language = $element->getLanguage(); $profilePropertyId = $element->getProfilePropertyId(); $key = md5(strval($profilePropertyId) . strval($language) . $element->getObject()); //if the newelement key matches then if (isset( $newElements[$key] )) { if ($element->getProfileProperty()->getHasLanguage()) { $newElements2Array = $newElements2[$profilePropertyId][$language]; } else { $newElements2Array = $newElements2[$profilePropertyId]; } $count = count($newElements2Array); for ($I = 0; $I < $count; $I++) { if ($newElements2Array[$I]['matchkey'] == $key) { unset( $newElements2Array[$I] ); } } unset( $newElements[$key] ); $element->importStatus = 'match'; continue; } else { if ($element->getProfileProperty()->getHasLanguage()) { if (isset( $newElements2[$profilePropertyId][$language] )) { $count = count($newElements2[$profilePropertyId][$language]); for ($I = 0; $I < $count; $I++) { if ($newElements2[$profilePropertyId][$language][$I]['val']['val'] == $element->getObject()) { unset( $newElements2[$profilePropertyId][$language][$I] ); $element->importStatus = 'match'; if ( ! count($newElements2[$profilePropertyId][$language])) { unset( $newElements2[$profilePropertyId][$language] ); } continue; } } } } else { //compare the old values with the new with the same key $count = count($newElements2[$profilePropertyId]); for ($I = 0; $I < $count; $I++) { if (isset( $newElements2[$profilePropertyId][$I] )) { if ($newElements2[$profilePropertyId][$I]['val']['val'] == $element->getObject()) { unset( $newElements2[$profilePropertyId][$I] ); $element->importStatus = 'match'; continue; } } } } //if the key matches then //if the value matches //delete the newElement //else the value doesn't match //if the newElement value is empty //delete the dbElement } $element->matchKey = $key; } //update the property values $property->save(); } else { //there's no existing property an we have to create a new one $property = new \SchemaProperty(); } foreach ($newElements as $key => $newElement) { if ( ! empty( $newElement['id'] ) and ! isset( $oldElements[$key] )) { $profileProperty = $newElement['property']; //walk the old elements looking for a match on predicate + language /** @var \SchemaPropertyElement[] $oldElement */ foreach ($dbElements as $oldElement) { /** @var \SchemaPropertyElement $oldOne */ $oldOne = &$oldElement['element']; if ($newElement['id'] == $oldOne->getProfilePropertyId()) { /** @var \ProfileProperty $profileProperty */ if (( $profileProperty->getHasLanguage() and $newElement['lang'] == $oldOne->getLanguage() ) or ! $profileProperty->getHasLanguage()) { if ( ! empty( $newElement['val'] )) { $oldOne->setObject($newElement['val']); $oldOne->setUpdatedUserId($this->userId); $oldOne->setStatusId($row['status']); //$oldOne->save(); $oldElement['status'] = "updated"; } else { $oldOne->delete(); $oldElement['status'] = "deleted"; } //update the property value if ($profileProperty->getIsInForm()) { $this->setPropertyValue($newElement['val'], $property, $profileProperty->getName(), ! $profileProperty->getIsObjectProp()); } break; } } } //we looked through them all, add a new one if ( ! empty( $newElement['val'] )) { $addMe = new \SchemaPropertyElement(); $addMe->setObject($newElement['val']); //$addMe->setSchemaPropertyRelatedBySchemaPropertyId($property); $addMe->setCreatedUserId($this->userId); $addMe->setUpdatedUserId($this->userId); $addMe->setLanguage($newElement['lang']); $addMe->setProfilePropertyId($newElement['id']); $addMe->setStatusId($row['status']); $addMe->importId = $this->importId; //$addMe->save(); $property->addSchemaPropertyElementRelatedBySchemaPropertyId($addMe); //update the property value if ($profileProperty->getIsInForm()) { $this->setPropertyValue($newElement['val'], $property, $profileProperty->getName(), ! $profileProperty->getIsObjectProp()); } } } } //update the property if ($property) { $property->setStatusId($row['status']); $property->save(); } } //var_dump($row); }); $workflow->addItemConverter($this->mapping); $workflow->addFilter($filter); $workflow->addItemConverter($trimConverter); $workflow->addItemConverter($lexicalConverter); $workflow->addWriter(new Writer\ConsoleProgressWriter($output, $this->reader)); $workflow->addValueConverter("4", $typeConverter); //add a database writer if ('schema' == $this->type) { $workflow->addWriter($schemaWriter); } else { $workflow->addWriter($vocabWriter); } /** @todo we need to make a second pass through to delete missing rows * for each schemaproperty in the database * match to a row in the csv * if the row value is empty and $this->deleteMissing * delete the entire schemaproperty */ $workResults = $workflow->process(); $this->DataWorkflowResults = $workResults; /** @TODO need to make a second pass through to lookup and set $element->related_schema_property_id */ $this->processParents($this->vocabId); //use the prolog to configure namespaces, look up correct resources in the database //store the row number of the first non-meta line return $workResults; }
public function importCsv($daysAgo, $analyzeCache) { if (!$analyzeCache) { $this->downloadReports($daysAgo); } $files = glob($this->download_directory . '*'); // get all file names $shadow_server_csv_rows = array(); foreach ($files as $file) { // iterate files if (is_file($file)) { $csv_file = new \SplFileObject($file); $reader = new CsvReader($csv_file); $reader->setHeaderRowNumber(0); foreach ($reader as $row) { $header = array_keys($row); $array_reader = new ArrayReader(array($row)); $workflow = new Workflow($array_reader); $writer = new CsvWriter(); $shadow_server_report_evidence = '/tmp/' . uniqid('shadow_server_report_evidence') . ".csv"; touch($shadow_server_report_evidence); chmod($shadow_server_report_evidence, 0777); $writer->setStream(fopen($shadow_server_report_evidence, 'w')); $writer->writeItem($header); $workflow->addWriter($writer); $workflow->process(); $reportType = $this->shadow_server_report_type_factory->getReportTypeFromCsvRow($row, $file, $shadow_server_report_evidence); if ($reportType) { $shadow_server_csv_rows[] = $reportType; } } } } return $shadow_server_csv_rows; }
public function desativadosGeralCsvAction(Request $request) { $locale = $request->getLocale(); $logger = $this->get('logger'); $filtros = $request->request->all(); $dados = $this->getDoctrine()->getRepository('CacicCommonBundle:ComputadorColeta')->gerarRelatorioDesativadosCsv($filtros); // Gera CSV $reader = new ArrayReader($dados); // Create the workflow from the reader $workflow = new Workflow($reader); // As you can see, the first names are not capitalized correctly. Let's fix // that with a value converter: $converter = new CallbackValueConverter(function ($input) { return $input->format('d/m/Y H:m:s'); }); //$workflow->addValueConverter('dataExclusao', $converter); $workflow->addValueConverter("reader", new CharsetValueConverter('UTF-8', $reader)); // Add the writer to the workflow $tmpfile = tempnam(sys_get_temp_dir(), 'Computadores-Subredes'); $file = new \SplFileObject($tmpfile, 'w'); $writer = new CsvWriter($file); $writer->writeItem(array('ID do Computador', 'Computador', 'MAC Address', 'Endereço IP', 'SO', 'Local', 'Subrede', 'IP da Subrede', 'Classe de Coleta', 'Propriedade', 'Valor', 'Data e Hora da Remoção')); $workflow->addWriter($writer); // Process the workflow $workflow->process(); // Retorna o arquivo $response = new BinaryFileResponse($tmpfile); $response->headers->set('Content-Type', 'text/csv'); $response->headers->set('Content-Disposition', 'attachment; filename="WMI-sem-coleta.csv"'); $response->headers->set('Content-Transfer-Encoding', 'binary'); return $response; }
/** * Generate a CSV file * * @Route("/detalhado/csv", name="printer_csv_detalhado") * */ public function csvDetalhadoAction(Request $request) { ini_set('memory_limit', '1024M'); gc_enable(); $em = $this->getDoctrine()->getManager(); $form = $request->query->get('form'); if ($form) { $start = new \DateTime($form['startDate']); $start = $start->format('U'); $end = new \DateTime($form['endDate']); $end->setTime('23', '59', '59'); $end = $end->format('U'); $this->get('logger')->debug("Relatório CSV Detalhado. Início = " . $form['startDate'] . " Fim = " . $form['endDate']); } $start = isset($start) ? $start : time() - 60 * 60 * 24 * 30; $end = isset($end) ? $end : time(); $printers = $em->getRepository('CocarBundle:PrinterCounter')->relatorioCsvGeralDetalhado($start, $end); // Gera cabeçalho $cabecalho = array(); foreach ($printers as $elm) { array_push($cabecalho, array_keys($elm)); break; } // Adiciona contagem no cabeçalho array_push($cabecalho[0], 'totalPrints'); // Gera CSV $reader = new ArrayReader(array_merge($cabecalho, $printers)); // Gera CSV //$reader = new ArrayReader($printers); // Create the workflow from the reader $workflow = new Workflow($reader); // Contador geral das impressorasa $converter = new CallbackItemConverter(function ($item) { if (array_key_exists('printsEnd', $item) && array_key_exists('printsStart', $item)) { $item['totalPrints'] = $item['printsEnd'] - $item['printsStart']; } else { $item['totalPrints'] = null; } return $item; }); $workflow->addItemConverter($converter); // As you can see, the first names are not capitalized correctly. Let's fix // that with a value converter: $converter = new CallbackValueConverter(function ($input) { return date('d/m/Y', $input); }); $workflow->addValueConverter('endDate', $converter); $workflow->addValueConverter('startDate', $converter); // Add the writer to the workflow $tmpfile = tempnam(sys_get_temp_dir(), 'impressoras'); $file = new \SplFileObject($tmpfile, 'w'); $writer = new CsvWriter($file); $workflow->addWriter($writer); // Process the workflow $workflow->process(); // Retorna o arquivo $response = new BinaryFileResponse($tmpfile); $response->headers->set('Content-Type', 'text/csv'); $response->headers->set('Content-Disposition', 'attachment; filename="impressoras.csv"'); $response->headers->set('Content-Transfer-Encoding', 'binary'); return $response; }
public function consolidadoCsvAction(Request $request) { $em = $this->getDoctrine()->getManager(); $locale = $request->getLocale(); $so_lista = $em->getRepository('CacicCommonBundle:Computador')->countPorSOCsv(); // Gera CSV $reader = new ArrayReader($so_lista); // Create the workflow from the reader $workflow = new Workflow($reader); $workflow->addValueConverter("reader", new CharsetValueConverter('UTF-8', $reader)); $converter = new CallbackValueConverter(function ($input) { return $input->format('d/m/Y H:m:s'); }); $workflow->addValueConverter('dtHrUltAcesso', $converter); // Add the writer to the workflow $tmpfile = tempnam(sys_get_temp_dir(), 'Computadores-lista'); $file = new \SplFileObject($tmpfile, 'w'); $writer = new CsvWriter($file); $writer->writeItem(array('Sistema Operacional', 'Total de Estações')); $workflow->addWriter($writer); // Process the workflow $workflow->process(); // Retorna o arquivo $response = new BinaryFileResponse($tmpfile); $response->headers->set('Content-Type', 'text/csv'); $response->headers->set('Content-Disposition', 'attachment; filename="So-Consolidado.csv"'); $response->headers->set('Content-Transfer-Encoding', 'binary'); return $response; }
public function usuarioCsvDinamicoAction(Request $request) { if ($request->isMethod('POST')) { $dataInicio = $request->get('dtAcaoInicio'); $dataFim = $request->get('dtAcaoFim'); $usuarioLogado = $request->get('usuarioLogado'); $macCompDinamico = $request->get('macCompDinamico'); $ipCompDinamico = $request->get('ipCompDinamico'); /* * Verifica se existe filtro por data do CSV */ if (empty($dataInicio)) { error_log("333333333333333333333333333333333333333"); $semData = 'S'; $dados = $this->getDoctrine()->getRepository('CacicCommonBundle:LogUserLogado')->gerarRelatorioUsuarioHistorico($usuarioLogado, $semData); } else { $semData = 'N'; $dados = $this->getDoctrine()->getRepository('CacicCommonBundle:LogUserLogado')->gerarRelatorioUsuarioHistorico($usuarioLogado, $dataFim, $dataInicio, $semData, $macCompDinamico, $ipCompDinamico); } } // Gera CSV $reader = new ArrayReader($dados); // Create the workflow from the reader $workflow = new Workflow($reader); // As you can see, the first names are not capitalized correctly. Let's fix // that with a value converter: $converter = new CallbackValueConverter(function ($input) { return $input->format('d/m/Y H:m:s'); }); $workflow->addValueConverter('dtHrUltAcesso', $converter); $workflow->addValueConverter("reader", new CharsetValueConverter('UTF-8', $reader)); // Add the writer to the workflow $tmpfile = tempnam(sys_get_temp_dir(), 'usuario_estatico_'); $file = new \SplFileObject($tmpfile, 'w'); $writer = new CsvWriter($file); if ($semData == 'S') { $writer->writeItem(array('Nome computador', 'Mac Address', 'IP computador', 'Local', 'Sub Rede', 'Usuário', 'Data', 'ID Computador')); } else { $writer->writeItem(array('Nome computador', 'Mac Address', 'IP computador', 'Local', 'Sub Rede', 'CPF Responsável', 'Data Pup-up', 'Usuário', 'Data', 'ID Computador')); } $workflow->addWriter($writer); // Process the workflow $workflow->process(); // Gera data e adiciona no nome do arquivo $today = date("Ymd"); $nameArquivo = "usuario_dinamico_" . $today . ".csv"; // Retorna o arquivo $response = new BinaryFileResponse($tmpfile); $response->headers->set('Content-Type', 'text/csv'); $response->headers->set('Content-Disposition', 'attachment; filename=' . $nameArquivo . ''); $response->headers->set('Content-Transfer-Encoding', 'binary'); return $response; }
/** * Gera CSV dos usuários cadastrados */ public function csvAction() { $usuarios = $this->getDoctrine()->getRepository('CacicCommonBundle:Usuario')->csv(); // Gera CSV $reader = new ArrayReader(array_merge($usuarios)); // Create the workflow from the reader $workflow = new Workflow($reader); // Add the writer to the workflow $tmpfile = tempnam(sys_get_temp_dir(), "Usuarios.csv"); $file = new \SplFileObject($tmpfile, 'w'); $writer = new CsvWriter($file); $workflow->addWriter($writer); // Process the workflow $workflow->process(); // Retorna o arquivo $response = new BinaryFileResponse($tmpfile); $response->headers->set('Content-Type', 'text/csv'); $response->headers->set('Content-Disposition', "attachment; filename=Usuarios.csv"); $response->headers->set('Content-Transfer-Encoding', 'binary'); return $response; }