Exemplo n.º 1
1
 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;
 }
Exemplo n.º 2
0
 /**
  * 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());
 }
Exemplo n.º 3
0
 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;
 }
 /**
  * Build the session faculty importer workflow.
  *
  * @param   ReaderInterface  $reader
  * @return  Workflow
  */
 public function buildWorkflow(ReaderInterface $reader)
 {
     $workflow = new Workflow($reader, null, $this->getPageTitle());
     $commaSplitter = new CommaSplitter();
     $workflow->addValueConverter('speaker_ids', $commaSplitter);
     $workflow->addWriter(new SessionFacultyWriter($this, true, false));
     return $workflow;
 }
 /**
  * Build the session agenda importer workflow.
  * 
  * @param   ReaderInterface  $reader
  * @return  Workflow
  */
 public function buildWorkflow(ReaderInterface $reader)
 {
     $workflow = new Workflow($reader, null, $this->getPageTitle());
     $commaSplitter = new CommaSplitter();
     $workflow->addValueConverter('type', new AgendaItemTypeConverter())->addValueConverter('discussant_ids', $commaSplitter);
     $workflow->addWriter(new SessionAgendaWriter($this, true, false));
     return $workflow;
 }
Exemplo n.º 6
0
 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();
 }
Exemplo n.º 7
0
 /**
  * Build the session import workflow.
  *
  * @param   ReaderInterface  $reader
  * @return  Workflow
  */
 protected function buildWorkflow(ReaderInterface $reader)
 {
     $workflow = new Workflow($reader, null, $this->getPageTitle());
     // Add value converters
     $commaSplitter = new CommaSplitter();
     $workflow->addValueConverter('credit_types', $commaSplitter)->addValueConverter('societies', $commaSplitter)->addValueConverter('tags', $commaSplitter);
     // Add writer
     $workflow->addWriter(new SessionWriter($this, $this->replace));
     return $workflow;
 }
 /**
  * Build the session import workflow.
  *
  * @param   ReaderInterface  $reader
  * @return  Workflow
  */
 protected function buildWorkflow(ReaderInterface $reader)
 {
     $commaSplitter = new ValueConverter\CommaSplitter();
     $workflow = new Workflow($reader, null, $this->getPageTitle());
     // Add converters
     $workflow->addValueConverter('author_ids', $commaSplitter)->addValueConverter('societies', $commaSplitter)->addValueConverter('keywords', $commaSplitter);
     // Add writer
     $workflow->addWriter(new ResearchAbstractWriter($this, $this->replace));
     return $workflow;
 }
Exemplo n.º 9
0
 /**
  * Reads a CSV-file into an array. The first line of the CSV-file should contain the array-keys.
  * The encoding of the input file is tried to be detected.
  * The elements of the returned array are encoded in the system encoding.
  * Example:
  *   FirstName;LastName;Email
  *   John;Doe;john.doe@mail.com
  *   Adam;Adams;adam@mail.com
  *  returns
  *   $result [0]['FirstName'] = 'John';
  *   $result [0]['LastName'] = 'Doe';
  *   $result [0]['Email'] = 'john.doe@mail. com';
  *   $result [1]['FirstName'] = 'Adam';
  *   ...
  * @param string $filename	The path to the CSV-file which should be imported.
  * @return array			Returns an array (in the system encoding) that contains all data from the CSV-file.
  *
  *
  * @deprecated use cvs_reader instead
  */
 static function csvToArray($filename)
 {
     $csvReader = self::csv_reader($filename);
     $resultArray = [];
     if ($csvReader) {
         $workflow = new Workflow($csvReader);
         $writer = new ArrayWriter($resultArray);
         $result = $workflow->addWriter($writer)->process();
     }
     return $resultArray;
 }
Exemplo n.º 10
0
 public function testWrite()
 {
     $data = array(array('first' => 'The first', 'second' => 'Second property'), array('first' => 'Another first', 'second' => 'Last second'));
     $reader = new ArrayReader($data);
     $output = $this->getMockBuilder('Symfony\\Component\\Console\\Output\\OutputInterface')->getMock();
     $outputFormatter = $this->getMock('Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface');
     $output->expects($this->once())->method('isDecorated')->will($this->returnValue(true));
     $output->expects($this->atLeastOnce())->method('getFormatter')->will($this->returnValue($outputFormatter));
     $output->expects($this->atLeastOnce())->method('write');
     $writer = new ConsoleProgressWriter($output, $reader);
     $workflow = new Workflow($reader);
     $workflow->addWriter($writer)->process();
     $this->assertEquals('debug', $writer->getVerbosity());
 }
 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;
     });
 }
Exemplo n.º 12
0
 /**
  * @Route("/student",name="admin_sse_icss_student_import")
  */
 public function studentAction(Request $request)
 {
     $uploadedFile = $request->files->get("csvFile");
     if (!$uploadedFile) {
         return [];
     }
     $import = getcwd() . "/Import";
     $fname = "input.csv";
     $filename = $import . "/" . $fname;
     @mkdir($import);
     @unlink($filename);
     $uploadedFile->move($import, $fname);
     $file = new \SplFileObject($filename);
     $reader = new CsvReader($file);
     $reader->setHeaderRowNumber(0);
     $workflow = new Workflow($reader);
     $em = $this->getDoctrine()->getEntityManager();
     $em->getConnection()->exec("SET FOREIGN_KEY_CHECKS=0;");
     $resault = $workflow->addWriter(new DoctrineWriter($em, "SSEICSSBundle:Student"))->process();
     $em->getConnection()->exec("SET FOREIGN_KEY_CHECKS=1;");
     return [];
 }
 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');
 }
Exemplo n.º 14
0
 /**
  * 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;
 }
Exemplo n.º 15
0
 /**
  * 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;
 }
Exemplo n.º 16
0
 /**
  * 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;
 }
Exemplo n.º 17
0
 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;
 }
Exemplo n.º 18
0
    /**
     * @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;
    }
Exemplo n.º 19
0
 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();
 }
Exemplo n.º 20
0
 /**
  * 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;
 }
Exemplo n.º 21
0
 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');
 }
Exemplo n.º 22
0
 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;
 }
Exemplo n.º 23
0
 public function importFileAction(Request $request)
 {
     /*
      * $import = new Import();
      *
      *
      * $em2 = $this->getDoctrine()->getManager();
      * $em2->persist($import);
      * $em2->flush();
      * $i = $import->getId();
      * var_dump($i);
      */
     // 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);
     // Create and configure the reader
     $file = new \SplFileObject('dummyImport/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);
     // 		foreach ($csvReader as $row => $value) {
     // 			$value['sku'] = '1' ;
     // 		}
     // 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:Data');
     // $doctrineWriter->writeItem(array ('import', 'test'));
     /*
      * $em = $this->getDoctrine()->getManager();
      * $query = $em->createQuery(
      * 'SELECT p
      * FROM AcmeStoreBundle:Product p
      * WHERE p.price > :price
      * ORDER BY p.price ASC'
      * )->setParameter('price', '19.99');
      *
      * $products = $query->getResult();
      */
     // $doctrineWriter->setTruncate(false);
     /*
      * $doctrineWriter
      * ->prepare()
      * ->writeItem(
      * array(
      * 'voila' => $i,
      *
      * )
      * );
      */
     // $doctrineWriter->setTruncate(false);
     $workflow->addWriter($doctrineWriter);
     // $em3=$this->getDoctrine()->getManager();
     // $doctrineR = new DoctrineReader($em3, 'AdminAdminBundle:Data');
     // $fields =$doctrineR->getFields();
     // $workflow2 = new Workflow($doctrineR);
     // $entityMetadata=$em->getClassMetadata('AdminAdminBundle:Product');
     // $entityMetadata->setIdGeneratorType(\Doctrine\ORM\Mapping\ClassMetadata::GENERATOR_TYPE_AUTO);
     // $converter = new StringToDateTimeValueConverter();
     $converter = new MappingItemConverter();
     $converter->addMapping('id_catalog_simple', 'idCatalogSimple')->addMapping('created_at_external', 'createdAtExternal')->addMapping('updated_at_external', 'updatedAtExternal')->addMapping('created_at', 'createdAt')->addMapping('updated_at', 'updatedAt')->addMapping('special_price', 'specialPrice')->addMapping('special_from_date', 'specialFromDate')->addMapping('special_to_date', 'specialToDate')->addMapping('tax_class', 'taxClass')->addMapping('tax_class_2', 'taxClass2')->addMapping('original_price', 'originalPrice')->addMapping('base_price', 'basePrice')->addMapping('barcode_ean', 'barcodeEan')->addMapping('sku_supplier_simple', 'skuSupplierSimple')->addMapping('supplier_simple_name', 'supplierSimpleName')->addMapping('shipment_type', 'shipmentType')->addMapping('transport_type', 'transportType')->addMapping('is_global', 'isGlobal')->addMapping('shipment_cost', 'shipmentCost')->addMapping('shipment_cost_comment', 'shipmentCostComment')->addMapping('dreamroom_show_in_image_map', 'dreamroomShowInImageMap')->addMapping('dreamroom_image_map_x', 'dreamroomImageMapX')->addMapping('dreamroom_image_map_y', 'dreamroomImageMapY')->addMapping('xcart_sku', 'xcartSku')->addMapping('delivery_date_start', 'deliveryDateStart')->addMapping('delivery_date_end', 'deliveryDateEnd')->addMapping('docdata_ean', 'docdataEan')->addMapping('docdata_description', 'docdataDescription')->addMapping('docdata_weight', 'docdataWeight')->addMapping('custom_identifier', 'customIdentifier')->addMapping('expected_delivery_date_start', 'expectedDeliveryDateStart')->addMapping('expected_delivery_date_end', 'expectedDeliveryDateEnd')->addMapping('navision_flag', 'navisionFlag')->addMapping('delivery_day_min', 'deliveryDayMin')->addMapping('delivery_day_max', 'deliveryDayMax')->addMapping('additional_inbound_info', 'additionalInboundInfo')->addMapping('expected_gm1', 'expectedGm1')->addMapping('expected_gm2', 'expectedGm2')->addMapping('expected_gm3', 'expectedGm3')->addMapping('sum_gross_weight', 'sumGrossWeight')->addMapping('number_separate_packages', 'numberSeparatePackages')->addMapping('delay_reasons', 'delayReasons')->addMapping('hide_original_price', 'hideOriginalPrice')->addMapping('producer_name', 'producerName')->addMapping('producer_address', 'producerAddress')->addMapping('additional_2mh_service', 'additional2mhService')->addMapping('additional_2mh_service_price', 'additional2mhServicePrice')->addMapping('is_bundle', 'isBundle')->addMapping('id_catalog_config_westwing', 'idCatalogConfigWestwing')->addMapping('design_scout', 'designScout')->addMapping('logistic_lead', 'logisticLead')->addMapping('id_catalog_simple_westwing', 'idCatalogSimpleWestwing')->addMapping('supplier_identifier', 'supplierIdentifier')->addMapping('config_group', 'configGroup')->addMapping('attribute_set', 'attributeSet')->addMapping('id_catalog_config', 'idCatalogConfig')->addMapping('sku_config', 'skuConfig')->addMapping('status_config', 'statusConfig')->addMapping('name_other', 'nameOther')->addMapping('editor_opinion', 'editorOpinion')->addMapping('choice_of_description', 'choiceOfDescription')->addMapping('display_as_out_of_stock', 'displayAsOutOfStock')->addMapping('pet_status', 'petStatus')->addMapping('pet_approved', 'petApproved')->addMapping('activated_at', 'activatedAt')->addMapping('sku_supplier_config', 'skuSupplierConfig')->addMapping('name_supplier', 'nameSupplier')->addMapping('delivery_period', 'deliveryPeriod')->addMapping('main_material', 'mainMaterial')->addMapping('package_height', 'packageHeight')->addMapping('package_length', 'packageLength')->addMapping('package_width', 'packageWidth')->addMapping('package_weight', 'packageWeight')->addMapping('short_description', 'shortDescription')->addMapping('care_label', 'careLabel')->addMapping('next_simple_nr', 'nextSimpleNr')->addMapping('brand_name_for_theme_campaigns', 'brandNameForThemeCampaigns')->addMapping('advent_day', 'adventDay')->addMapping('advent_url', 'adventUrl')->addMapping('advent_path', 'adventPath')->addMapping('overwrite_delivery_period', 'overwriteDeliveryPeriod')->addMapping('is_seo_relevant', 'isSeoRelevant')->addMapping('export_static', 'exportStatic')->addMapping('is_hybris_product', 'isHybrisProduct')->addMapping('has_delivery_guarantee', 'hasDeliveryGuarantee')->addMapping('net_purchase_price', 'netPurchasePrice')->addMapping('net_purchase_price_discounted', 'netPurchasePriceDiscounted')->addMapping('supplier_product_number', 'supplierProductNumber')->addMapping('supplier_product_name', 'supplierProductName')->addMapping('local_stock', 'localStock')->addMapping('global_stock', 'globalStock')->addMapping('package1_length', 'package1Length')->addMapping('package1_height', 'package1Height')->addMapping('package1_width', 'package1Width')->addMapping('package1_weight', 'package1Weight')->addMapping('package2_length', 'package2Length')->addMapping('package2_height', 'package2Height')->addMapping('package2_width', 'package2Width')->addMapping('package2_weight', 'package2Weight')->addMapping('package3_length', 'package3Length')->addMapping('package3_height', 'package3Height')->addMapping('package3_width', 'package3Width')->addMapping('package3_weight', 'package3Weight')->addMapping('color_1', 'color1')->addMapping('color_2', 'color2')->addMapping('color_3', 'color3')->addMapping('color_characteristic', 'colorCharacteristic')->addMapping('additional_campaigns', 'additionalCampaigns')->addMapping('status_simple', 'statusSimple')->addMapping('expected_logistics_cost', 'expectedLogisticsCost')->addMapping('discount_level', 'discountLevel')->addMapping('blowout_round', 'blowoutRound')->addMapping('allow_multiple_po', 'allowMultiplePo');
     // Process the workflow
     // $workflow->addValueConverter('import', $i);
     $workflow->addItemConverter($converter)->process();
     //$workflow2->process();
     /*  	
         	$doctrineWriterId = new DoctrineWriter($em3, 'AdminAdminBundle:Data');
         	$doctrineWriterId
         	->prepare()
         	->writeItem(
         			array(
         					'importId' => '$i',
         	
         			)
         	)
         	->finish();*/
     //$reader =$doctrineWriterId = new DoctrineWriter($em3, 'AdminAdminBundle:Data');
     /*	$em3=$this->getDoctrine()->getManager();
         	$doctrineWriterId = new DoctrineWriter($em3, 'AdminAdminBundle:Data');
         	$doctrineWriterId
         	->prepare()
         	->writeItem(
         			array(
         					'importId' => '$i',
         	
         			)
         	)
         	->finish();
         	$workflow2 = new Workflow($doctrineWriterId);
         	$workflow2->process();
     		//var_dump($workflow);
     		//$b = new csv() ;
     		$em2 = $this->getDoctrine()->getManager();
     		
     		$em3 = $this->getDoctrine()->getManager();
     		
     		//$em2->persist($import);
     		//$em2->flush();
     		//$i = $import->getId();
     		$A = $em2->getRepository('AdminAdminBundle:Data');
     		//$B = new csv() ;
     		$B = clone $A;
     		//$B->setId(null);
     		//$B = new csv() ;
     
     		//$B->setIdCatalogConfig('11');
     		//$em3->persist($B);
     		$em3->flush();
     		$em2->flush();
     		var_dump($B);
     		*/
     return $this->render('SuppliercheckAdminBundle:Default:csv_import.html.twig');
 }
Exemplo n.º 24
0
 /**
  * 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;
 }
Exemplo n.º 25
0
 protected function setWriter(Workflow $workflow)
 {
     $workflow->addWriter(new SpeakerWriter($this, $this->replace));
     return $this;
 }
Exemplo n.º 26
0
 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;
 }
Exemplo n.º 27
0
 public function createAction(Request $request = null)
 {
     // the key used to lookup the template
     $templateKey = 'edit';
     if (false === $this->admin->isGranted('CREATE')) {
         throw new AccessDeniedException();
     }
     $object = $this->admin->getNewInstance();
     $this->admin->setSubject($object);
     /** @var $form \Symfony\Component\Form\Form */
     $form = $this->admin->getForm();
     $form->setData($object);
     if ($this->getRestMethod() == 'POST') {
         $form->submit($this->get('request'));
         $isFormValid = $form->isValid();
         // persist if the form was valid and if in preview mode the preview was approved
         if ($isFormValid && (!$this->isInPreviewMode() || $this->isPreviewApproved())) {
             if (false === $this->admin->isGranted('CREATE', $object)) {
                 throw new AccessDeniedException();
             }
             try {
                 $dummyImport = getcwd() . "/dummyImport";
                 $fname = "directly.csv";
                 $filename = $dummyImport . "/" . $fname;
                 @mkdir($dummyImport);
                 @unlink($filename);
                 // move file to dummy filename
                 $form['file']->getData()->move($dummyImport, $fname);
                 // Create and configure the reader
                 $file = new \SplFileObject('dummyImport/directly.csv', "r");
                 // $file->setFlags(SplFileObject::READ_CSV);
                 $csvReader = new CsvReader($file, ";");
                 $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:Import');
                 $workflow->addWriter($doctrineWriter);
                 $converter = new MappingItemConverter();
                 $converter->addMapping('id_catalog_simple', 'idCatalogSimple')->addMapping('created_at_external', 'createdAtExternal')->addMapping('updated_at_external', 'updatedAtExternal')->addMapping('created_at', 'createdAt')->addMapping('updated_at', 'updatedAt')->addMapping('special_price', 'specialPrice')->addMapping('special_from_date', 'specialFromDate')->addMapping('special_to_date', 'specialToDate')->addMapping('tax_class', 'taxClass')->addMapping('tax_class_2', 'taxClass2')->addMapping('original_price', 'originalPrice')->addMapping('base_price', 'basePrice')->addMapping('barcode_ean', 'barcodeEan')->addMapping('sku_supplier_simple', 'skuSupplierSimple')->addMapping('supplier_simple_name', 'supplierSimpleName')->addMapping('shipment_type', 'shipmentType')->addMapping('transport_type', 'transportType')->addMapping('is_global', 'isGlobal')->addMapping('shipment_cost', 'shipmentCost')->addMapping('shipment_cost_comment', 'shipmentCostComment')->addMapping('dreamroom_show_in_image_map', 'dreamroomShowInImageMap')->addMapping('dreamroom_image_map_x', 'dreamroomImageMapX')->addMapping('dreamroom_image_map_y', 'dreamroomImageMapY')->addMapping('xcart_sku', 'xcartSku')->addMapping('delivery_date_start', 'deliveryDateStart')->addMapping('delivery_date_end', 'deliveryDateEnd')->addMapping('docdata_ean', 'docdataEan')->addMapping('docdata_description', 'docdataDescription')->addMapping('docdata_weight', 'docdataWeight')->addMapping('custom_identifier', 'customIdentifier')->addMapping('expected_delivery_date_start', 'expectedDeliveryDateStart')->addMapping('expected_delivery_date_end', 'expectedDeliveryDateEnd')->addMapping('navision_flag', 'navisionFlag')->addMapping('delivery_day_min', 'deliveryDayMin')->addMapping('delivery_day_max', 'deliveryDayMax')->addMapping('additional_inbound_info', 'additionalInboundInfo')->addMapping('expected_gm1', 'expectedGm1')->addMapping('expected_gm2', 'expectedGm2')->addMapping('expected_gm3', 'expectedGm3')->addMapping('sum_gross_weight', 'sumGrossWeight')->addMapping('number_separate_packages', 'numberSeparatePackages')->addMapping('delay_reasons', 'delayReasons')->addMapping('hide_original_price', 'hideOriginalPrice')->addMapping('producer_name', 'producerName')->addMapping('producer_address', 'producerAddress')->addMapping('additional_2mh_service', 'additional2mhService')->addMapping('additional_2mh_service_price', 'additional2mhServicePrice')->addMapping('is_bundle', 'isBundle')->addMapping('id_catalog_config_westwing', 'idCatalogConfigWestwing')->addMapping('design_scout', 'designScout')->addMapping('logistic_lead', 'logisticLead')->addMapping('id_catalog_simple_westwing', 'idCatalogSimpleWestwing')->addMapping('supplier_identifier', 'supplierIdentifier')->addMapping('config_group', 'configGroup')->addMapping('attribute_set', 'attributeSet')->addMapping('id_catalog_config', 'idCatalogConfig')->addMapping('sku_config', 'skuConfig')->addMapping('status_config', 'statusConfig')->addMapping('name_other', 'nameOther')->addMapping('editor_opinion', 'editorOpinion')->addMapping('choice_of_description', 'choiceOfDescription')->addMapping('display_as_out_of_stock', 'displayAsOutOfStock')->addMapping('pet_status', 'petStatus')->addMapping('pet_approved', 'petApproved')->addMapping('activated_at', 'activatedAt')->addMapping('sku_supplier_config', 'skuSupplierConfig')->addMapping('name_supplier', 'nameSupplier')->addMapping('delivery_period', 'deliveryPeriod')->addMapping('main_material', 'mainMaterial')->addMapping('package_height', 'packageHeight')->addMapping('package_length', 'packageLength')->addMapping('package_width', 'packageWidth')->addMapping('package_weight', 'packageWeight')->addMapping('short_description', 'shortDescription')->addMapping('care_label', 'careLabel')->addMapping('next_simple_nr', 'nextSimpleNr')->addMapping('brand_name_for_theme_campaigns', 'brandNameForThemeCampaigns')->addMapping('advent_day', 'adventDay')->addMapping('advent_url', 'adventUrl')->addMapping('advent_path', 'adventPath')->addMapping('overwrite_delivery_period', 'overwriteDeliveryPeriod')->addMapping('is_seo_relevant', 'isSeoRelevant')->addMapping('export_static', 'exportStatic')->addMapping('is_hybris_product', 'isHybrisProduct')->addMapping('has_delivery_guarantee', 'hasDeliveryGuarantee')->addMapping('net_purchase_price', 'netPurchasePrice')->addMapping('net_purchase_price_discounted', 'netPurchasePriceDiscounted')->addMapping('supplier_product_number', 'supplierProductNumber')->addMapping('supplier_product_name', 'supplierProductName')->addMapping('local_stock', 'localStock')->addMapping('global_stock', 'globalStock')->addMapping('package1_length', 'package1Length')->addMapping('package1_height', 'package1Height')->addMapping('package1_width', 'package1Width')->addMapping('package1_weight', 'package1Weight')->addMapping('package2_length', 'package2Length')->addMapping('package2_height', 'package2Height')->addMapping('package2_width', 'package2Width')->addMapping('package2_weight', 'package2Weight')->addMapping('package3_length', 'package3Length')->addMapping('package3_height', 'package3Height')->addMapping('package3_width', 'package3Width')->addMapping('package3_weight', 'package3Weight')->addMapping('color_1', 'color1')->addMapping('color_2', 'color2')->addMapping('color_3', 'color3')->addMapping('color_characteristic', 'colorCharacteristic')->addMapping('additional_campaigns', 'additionalCampaigns')->addMapping('status_simple', 'statusSimple')->addMapping('expected_logistics_cost', 'expectedLogisticsCost')->addMapping('discount_level', 'discountLevel')->addMapping('blowout_round', 'blowoutRound')->addMapping('allow_multiple_po', 'allowMultiplePo');
                 $workflow->addItemConverter($converter)->process();
                 //fin de l'import dans la table virtuelle IMPORT
                 //copie des données avec mise en place des relations One TO Many
                 $em1 = $this->getDoctrine()->getManager();
                 $getData = new ArrayCollection();
                 $getData = $em1->getRepository('SuppliercheckAdminBundle:Import');
                 $listData = $getData->findAll();
                 foreach ($listData as $value) {
                     $newProduct = new Product();
                     $newProduct->setCampaign($object);
                     $newProduct->createFromImport($value);
                     $sku = $newProduct->getSku();
                     $newProduct->setLink($sku);
                     $newProduct->setValidated(false);
                     $newProduct->setComments(null);
                     $object->getProducts()->add($newProduct);
                     $newProduct = $value;
                 }
                 //                    $object1 = $this->admin->create($object);
                 //                    $id = $this->admin->getNormalizedIdentifier($object);
                 //                    $o = $object1->getId();
                 //                    $idencode = md5($o);
                 //                    $object1->setUrlencode($idencode);
                 //                    $this->admin->create($object);
                 $object = $this->admin->create($object);
                 $id = $object->getId();
                 $idencode = md5($id);
                 $object->setUrlencode($idencode);
                 $this->admin->create($object);
                 if ($this->isXmlHttpRequest()) {
                     return $this->renderJson(array('result' => 'ok', 'objectId' => $this->admin->getNormalizedIdentifier($object)));
                 }
                 $this->addFlash('sonata_flash_success', $this->admin->trans('flash_create_success', array('%name%' => $this->escapeHtml($this->admin->toString($object))), 'SonataAdminBundle'));
                 // redirect to edit mode
                 return $this->redirectTo($object);
             } catch (ModelManagerException $e) {
                 $this->logModelManagerException($e);
                 $isFormValid = false;
             }
         }
         // show an error message if the form failed validation
         if (!$isFormValid) {
             if (!$this->isXmlHttpRequest()) {
                 $this->addFlash('sonata_flash_error', $this->admin->trans('flash_create_error', array('%name%' => $this->escapeHtml($this->admin->toString($object))), 'SonataAdminBundle'));
             }
         } elseif ($this->isPreviewRequested()) {
             // pick the preview template if the form was valid and preview was requested
             $templateKey = 'preview';
             $this->admin->getShow();
         }
     }
     $view = $form->createView();
     // set the theme for the current Admin Form
     $this->get('twig')->getExtension('form')->renderer->setTheme($view, $this->admin->getFormTheme());
     return $this->render($this->admin->getTemplate($templateKey), array('action' => 'create', 'form' => $view, 'object' => $object));
 }
Exemplo n.º 28
0
 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;
 }
Exemplo n.º 29
0
 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;
 }
Exemplo n.º 30
0
 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;
 }