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; }
/** * 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; }
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; }
/** * 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; }
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; }); }
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; }
/** * 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)); } }
/** * @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); }
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)); } }
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)); }
/** * 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'); }
/** * 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; }
public function semColetaDetalharCsvAction(Request $request) { $em = $this->getDoctrine()->getManager(); $locale = $request->getLocale(); $idSo = $request->get('idSo'); $idRede = $request->get('idRede'); $idLocal = $request->get('idLocal'); $idClasse = $request->get('idClasse'); $computadores = $em->getRepository("CacicCommonBundle:Computador")->detalharClasseCsv($idClasse, $idRede, $idLocal, $idSo); // Gera CSV $reader = new ArrayReader($computadores); // Create the workflow from the reader $workflow = new Workflow($reader); // As you can see, the first names are not capitalized correctly. Let's fix // that with a value converter: $converter = new CallbackValueConverter(function ($input) { return $input->format('d/m/Y H:m:s'); }); $workflow->addValueConverter('dtHrUltAcesso', $converter); $workflow->addValueConverter("reader", new CharsetValueConverter('UTF-8', $reader)); // Add the writer to the workflow $tmpfile = tempnam(sys_get_temp_dir(), 'Computadores-Subredes'); $file = new \SplFileObject($tmpfile, 'w'); $writer = new CsvWriter($file); $writer->writeItem(array('Computador', 'MAC Address', 'Endereço IP', 'SO', 'Local', 'Sub Rede', 'Data e Hora do último Acesso')); $workflow->addWriter($writer); // Process the workflow $workflow->process(); // Retorna o arquivo $response = new BinaryFileResponse($tmpfile); $response->headers->set('Content-Type', 'text/csv'); $response->headers->set('Content-Disposition', 'attachment; filename="WMI-sem-coleta.csv"'); $response->headers->set('Content-Transfer-Encoding', 'binary'); return $response; }
public function 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; }