Example #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;
 }
Example #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());
 }
 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 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;
 }
 /**
  * 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;
 }
 /**
  * @param   ReaderInterface  $reader
  * @return  Workflow
  */
 protected function buildWorkflow(ReaderInterface $reader)
 {
     $workflow = new Workflow($reader, null, $this->getPageTitle());
     $workflow->addValueConverter('credentials', new CredentialsNormalizer());
     // Rely on the subclass to set the writer
     $this->setWriter($workflow);
     return $workflow;
 }
Example #7
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();
 }
 /**
  * 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;
 }
Example #10
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;
 }
 /**
  * @return ValidatorValidation
  */
 public function apply(Workflow $workflow)
 {
     if ($this->sourceValidatorFilter) {
         $this->sourceValidatorFilter->reset();
         $workflow->addFilter($this->sourceValidatorFilter);
     }
     if ($this->targetValidatorFilter) {
         $this->targetValidatorFilter->reset();
         $workflow->addFilterAfterConversion($this->targetValidatorFilter);
     }
     return $this;
 }
Example #12
0
 public function testRightColumnsHeadersNamesAfterItemConverter()
 {
     $data = array(array('first' => 'John', 'lastname' => 'Doe'), array('first' => 'Ivan', 'lastname' => 'Sidorov'));
     $reader = new ArrayReader($data);
     $converter = new MappingItemConverter();
     $converter->addMapping('first', 'firstname');
     $output = new BufferedOutput();
     $table = new Table($output);
     $table->setStyle('compact');
     $workflow = new Workflow($reader);
     $workflow->addItemConverter($converter)->addWriter(new ConsoleTableWriter($output, $table))->process();
     $this->assertRegExp('/\\s+lastname\\s+firstname\\s+Doe\\s+John\\s+Sidorov\\s+Ivan\\s+/', $output->fetch());
 }
 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;
     });
 }
Example #15
0
 private function process(Workflow $workflow, Import $import)
 {
     $e = null;
     $importRun = null;
     if ($this->eventDispatcher && ($importRun = $import->getRun())) {
         $e = new ImportProcessEvent($import);
     }
     if ($e && $importRun->getConfiguration()) {
         $this->eventDispatcher->dispatch(ImportProcessEvent::AFTER_PREPARE . '.' . $importRun->getConfiguration()->getImporterId(), $e);
     }
     $workflow->process();
     if ($e && $importRun->getConfiguration()) {
         $this->eventDispatcher->dispatch(ImportProcessEvent::AFTER_FINISH . '.' . $importRun->getConfiguration()->getImporterId(), $e);
     }
 }
 /**
  * {@inheritdoc}
  */
 public function process()
 {
     $msg = 'Processing workflow';
     if ($this->workflow instanceof Workflow and $name = $this->workflow->getName()) {
         $msg .= ': ' . $name;
     }
     $this->climate->write($msg . "\n");
     $result = $this->workflow->process();
     $this->climate->info('Time elapsed: ' . $result->getElapsed()->format('%i minute(s) %s second(s)'));
     $this->climate->info('Total processed: ' . $result->getTotalProcessedCount() . ' row(s)');
     if ($errorCount = $result->getErrorCount() > 0) {
         $this->climate->error('Errors: ' . $errorCount);
     }
     return $result;
 }
Example #17
0
 /**
  * Migrator constructor.
  * @param string|array $fileset
  * @param $logger
  */
 public function __construct($fileset, $logger = null)
 {
     // Load configuration file(s)
     $this->loadConf($fileset);
     if (array_key_exists('source', $this->conf)) {
         // Set sources if it does not exist
         if (!array_key_exists('sources', $this->conf)) {
             $this->conf['sources'] = array();
         }
         // Move single source into sources list
         $this->conf['sources'][] = $this->conf['source'];
     }
     // Create configuration object
     $this->conf = new Configuration($this->conf);
     // Init workflow
     parent::__construct($this->createTask(), $logger);
     $this->addWriter($this->createWriter());
     // Starting line and number of items to get
     $this->addFilter(new OffsetFilter($this->conf->get(array('options', 'offset'), 0), $this->conf->get(array('options', 'count'), null)));
     // Add processors to the workflow
     $processor = $this->conf->get(array('processors'), array());
     if (is_array($processor) && !empty($processor)) {
         $this->addItemConverter(new Processor($processor));
     }
     // Add mapping to the workflow
     $mapping = $this->conf->get(array('mapping'), array());
     if (is_array($mapping) && !empty($mapping)) {
         $this->addItemConverter(new Mapping($mapping));
     }
 }
Example #18
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');
 }
 public function process()
 {
     //if no eventdispatcher has been set, use original functionality
     if (!$this->eventDispatcher) {
         return parent::process();
     }
     $count = 0;
     $exceptions = array();
     $startTime = new \DateTime();
     $importProcessEvent = new ImportProcessEvent();
     //Prepare
     $this->prepare($importProcessEvent);
     // Read all items
     foreach ($this->reader as $item) {
         //only create event once for every item-event for performance reasons
         $event = $importProcessEvent->newItemEvent($item);
         try {
             $this->processRead($item, $event);
             // Apply filters before conversion
             if (!$this->processFilter($item, $event)) {
                 continue;
             }
             // Convert item
             if (!($convertedItem = $this->processConvert($item, $event))) {
                 continue;
             }
             // Apply filters after conversion
             if (!$this->processConvertFilter($convertedItem, $event)) {
                 continue;
             }
             $this->processWrite($convertedItem, $item, $event);
         } catch (ExceptionInterface $e) {
             if ($this->skipItemOnFailure) {
                 $exceptions[] = $e;
                 $this->logger->error($e->getMessage());
             } else {
                 throw $e;
             }
         }
         ++$count;
     }
     //Finish
     $this->finish($importProcessEvent);
     return new Result($this->name, $startTime, new \DateTime(), $count, $exceptions);
 }
Example #21
0
 public function apply(Workflow $workflow, ConverterProviderInterface $converterProvider)
 {
     $fieldMapping = array();
     foreach ($this as $mapping) {
         $to = null;
         $from = null;
         $converter = null;
         if ($mapping instanceof Mapping) {
             $to = $mapping->to;
             $from = $mapping->from;
             $converter = $mapping->converter;
         } else {
             $converter = $mapping;
         }
         if (!empty($to) && !empty($from)) {
             $fieldMapping[$from] = $to;
         }
         if ($converter) {
             if (is_string($converter)) {
                 if (!$converterProvider->has($converter)) {
                     throw new InvalidConfigurationException("Converter with id '{$converter}' not found in configured converters.");
                 }
                 $converter = $converterProvider->get($converter);
             }
             if ($converter instanceof ValueConverterInterface) {
                 $targetField = empty($to) ? $from : $to;
                 if (empty($targetField)) {
                     throw new InvalidConfigurationException('Cannot use ValueConverter ' . get_class($converter) . ' without target-field.');
                 }
                 $workflow->addValueConverter($targetField, $converter);
             } elseif ($converter instanceof ItemConverterInterface) {
                 $workflow->addItemConverter($converter);
             } else {
                 throw new \LogicException('Invalid converter supplied: ' . get_class($converter));
             }
         }
     }
     if (!empty($fieldMapping)) {
         $workflow->addItemConverter(new MappingItemConverter($fieldMapping));
     }
 }
Example #22
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));
 }
Example #23
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;
 }
 protected function setWriter(Workflow $workflow)
 {
     $workflow->addWriter(new SpeakerWriter($this, $this->replace));
     return $this;
 }
 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');
 }
Example #26
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;
 }
Example #27
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;
 }
Example #28
0
 public function testMultipleMappingsForAnItemAfterAnotherItemConverterwasAdded()
 {
     $originalData = array(array('foo' => 'bar', 'baz' => 'value'));
     $ouputTestData = array();
     $writer = new ArrayWriter($ouputTestData);
     $reader = new ArrayReader($originalData);
     $workflow = new Workflow($reader);
     // add a dummy item converter
     $workflow->addItemConverter(new CallbackItemConverter(function ($item) {
         return $item;
     }));
     // add multiple mappings
     $workflow->addMapping('foo', 'bar')->addMapping('baz', 'bazzoo')->addWriter($writer)->process();
     $this->assertArrayHasKey('bar', $ouputTestData[0]);
     $this->assertArrayHasKey('bazzoo', $ouputTestData[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;
 }
 /**
  * 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;
 }