Esempio 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;
 }
Esempio n. 2
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();
 }
Esempio n. 3
0
 /**
  * Import action
  *
  * @return Response
  *
  * @throws AccessDeniedException If access is not granted
  */
 public function importAction(Request $request)
 {
     if (false === $this->admin->isGranted('IMPORT')) {
         throw new AccessDeniedException();
     }
     $defaultData = array();
     $form = $this->createFormBuilder($defaultData)->add('file', 'file')->getForm();
     $form->handleRequest($request);
     $data = array();
     if ($form->isValid()) {
         $fs = new Filesystem();
         try {
             $fs->mkdir('/tmp/import');
         } catch (IOExceptionInterface $e) {
             echo "An error occurred while creating your directory at " . $e->getPath();
         }
         $form['file']->getData()->move('/tmp/import', 'data.csv');
         $file = new \SplFileObject('/tmp/import/data.csv');
         // 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);
         $reader = new Reader\CsvReader($file, ';');
         $reader->setHeaderRowNumber(0);
         if ($request->request->has('btn_preview')) {
             foreach ($reader as $row) {
                 $data[] = $row;
             }
         } else {
             // Set Database into "nonchecking Foreign Keys"
             $em = $this->getDoctrine()->getManager();
             $em->getConnection()->exec("SET FOREIGN_KEY_CHECKS=0;");
             $writer = new DoctrineWriter($em, "AppBundle:Partner");
             $writer->setTruncate(false);
             $metadata = $em->getClassMetaData("AppBundle:Partner");
             $metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE);
             $mapping = new Step\MappingStep();
             $mapping->map('[country_code]', '[country]');
             $mapping->map('[category]', '[partnerCategory]');
             $converter = new StringToObjectConverter($em->getRepository("AppBundle:PartnerCategory"), 'name');
             $valueConverterStep = new Step\ValueConverterStep();
             $valueConverterStep->add('[partnerCategory]', $converter);
             //                $converter = new CustomValueConverter();
             //                $converterStep = new Step\ConverterStep();
             //                $converterStep->add($converter);
             $workflow = new Workflow\StepAggregator($reader);
             $workflow->addStep($mapping);
             $workflow->addStep($valueConverterStep);
             //                $workflow->addStep($converterStep);
             $workflow->addWriter($writer);
             $workflow->process();
             // Resetting Database Check Status
             $em->getConnection()->exec("SET FOREIGN_KEY_CHECKS=1;");
         }
     }
     $formView = $form->createView();
     // set the theme for the current Admin Form
     $this->get('twig')->getExtension('form')->renderer->setTheme($formView, $this->admin->getFilterTheme());
     return $this->render('CRUD/import_partner.html.twig', array('action' => 'import', 'form' => $formView, 'data' => $data));
 }
Esempio n. 4
0
 public function getReader(\SplFileObject $file)
 {
     $reader = new CsvReader($file, $this->delimiter, $this->enclosure, $this->escape);
     if (null !== $this->headerRowNumber) {
         $reader->setHeaderRowNumber($this->headerRowNumber);
     }
     $reader->setStrict($this->strict);
     return $reader;
 }
Esempio n. 5
0
 /**
  * Parse attachments
  *
  * @return array    Returns array with failed or success data
  *                  (See collector-common/src/Collector.php) for more info.
  */
 public function parse()
 {
     if (empty($this->key) || strlen($this->key) < 10) {
         return $this->failed("Invalid SNDS key: {$this->key}");
     }
     if (!filter_var($this->url, FILTER_VALIDATE_URL) === true) {
         return $this->failed("Invalid URL configured: {$this->url}");
     }
     if (!$this->createWorkingDir()) {
         return $this->failed("Unable to create working directory");
     }
     $tempFile = "{$this->tempPath}/snds.csv";
     $client = new GuzzleHttp\Client();
     $res = $client->request('GET', "{$this->url}?key={$this->key}", ['http_errors' => false, 'save_to' => $tempFile]);
     if ($res->getStatusCode() !== 200) {
         return $this->failed("URL collection from {$this->url} resulted in a {$res->getStatusCode()}");
     }
     $csvReports = new Reader\CsvReader(new SplFileObject($tempFile));
     $csvReports->setColumnHeaders(['first_ip', 'last_ip', 'blocked', 'feed']);
     foreach ($csvReports as $report) {
         $this->feedName = 'unknown';
         // If report type is an alias, get the real type
         foreach (config("{$this->configBase}.collector.aliasses") as $alias => $real) {
             if ($report['feed'] == $alias) {
                 $this->feedName = $real;
             }
         }
         if ($this->isKnownFeed() && $this->isEnabledFeed()) {
             $firstIP = inetPtoi($report['first_ip']);
             $lastIP = inetPtoi($report['last_ip']);
             if (!empty($firstIP) && !empty($lastIP) && $firstIP <= $lastIP) {
                 for ($x = $firstIP; $x <= $lastIP; $x++) {
                     $report['ip'] = inetItop($x);
                     if ($this->hasRequiredFields($report) === true) {
                         $report = $this->applyFilters($report);
                         $incident = new Incident();
                         $incident->source = config("{$this->configBase}.collector.name");
                         $incident->source_id = false;
                         $incident->ip = $report['ip'];
                         $incident->domain = false;
                         $incident->class = config("{$this->configBase}.feeds.{$this->feedName}.class");
                         $incident->type = config("{$this->configBase}.feeds.{$this->feedName}.type");
                         /*
                          * This prevents multiple incidents on the same day. So info
                          * blob has a scan time and this a report time
                          */
                         $incident->timestamp = strtotime('0:00');
                         $incident->information = json_encode($report);
                         $this->incidents[] = $incident;
                     }
                 }
             }
         }
     }
     return $this->success();
 }
Esempio n. 6
0
 /**
  *
  * @param string $path
  * @return \CsvReader
  */
 static function csv_reader($path, $setFirstRowAsHeader = true)
 {
     if (empty($path)) {
         return false;
     }
     $file = new \SplFileObject($path);
     $csvReader = new CsvReader($file, ';');
     if ($setFirstRowAsHeader) {
         $csvReader->setHeaderRowNumber(0);
     }
     return $csvReader;
 }
 public function prepare_data($file)
 {
     echo '<h3>Choose the positions to import</h3>';
     echo '<form id="CSVImport" name="CSVImport" method="post" enctype="multipart/form-data">';
     $file = new \SplFileObject($file);
     $reader = new CsvReader($file);
     $reader->setHeaderRowNumber(0);
     $this->results_table($reader);
     $this->setup_data($reader);
     echo '<br />';
     $this->button('Confirm Import', true);
     echo '</form>';
 }
 /**
  * Import action
  *
  * @return Response
  *
  * @throws AccessDeniedException If access is not granted
  */
 public function importAction(Request $request)
 {
     if (false === $this->admin->isGranted('IMPORT')) {
         throw new AccessDeniedException();
     }
     //        $workflow = new Workflow($reader);
     /*
             $result = $workflow
                 ->addWriter(new Writer\DoctrineWriter())
                 ->addFilter(new Filter\CallbackFilter())
                     ->setSkipItemOnFailure(true)
                     ->process()
                 ;
     */
     $defaultData = array();
     $form = $this->createFormBuilder($defaultData)->add('file', 'file')->getForm();
     $form->handleRequest($request);
     $data = array();
     if ($form->isValid()) {
         if ($request->request->has('btn_preview')) {
             print_r('PREVIEW');
         }
         $fs = new Filesystem();
         try {
             $fs->mkdir('/tmp/randomtest');
         } catch (IOExceptionInterface $e) {
             echo "An error occurred while creating your directory at " . $e->getPath();
         }
         $form['file']->getData()->move('/tmp/randomtest', 'data.csv');
         $file = new \SplFileObject('/tmp/randomtest/data.csv');
         //            $data = $form->getData();
         $reader = new Reader\CsvReader($file);
         $reader->setHeaderRowNumber(0);
         foreach ($reader as $row) {
             // $row will be an array containing the comma-separated elements of the line:
             // array(
             //   0 => 'James',
             //   1 => 'Bond'
             //   etc...
             // )
             $data[] = $row;
         }
     }
     $formView = $form->createView();
     // set the theme for the current Admin Form
     $this->get('twig')->getExtension('form')->renderer->setTheme($formView, $this->admin->getFilterTheme());
     return $this->render('CRUD/import.html.twig', array('action' => 'import', 'form' => $formView, 'data' => $data));
 }
 private function setPrologColumns()
 {
     if (empty( $this->prolog['meta_column'] )) {
         //set the prolog columns
         $this->prolog['meta_column']  = $this->reader->getColumnHeaders()[0];
         $this->prolog['key_column']   = $this->mapping->getMappings()[$this->reader->getColumnHeaders()[1]];
         $this->prolog['value_column'] = $this->mapping->getMappings()[$this->reader->getColumnHeaders()[2]];
     }
 }
Esempio n. 10
0
 /**
  * Parse attachments
  *
  * @return array    Returns array with failed or success data
  *                  (See parser-common/src/Parser.php) for more info.
  */
 public function parse()
 {
     foreach ($this->parsedMail->getAttachments() as $attachment) {
         // Only use the Abusehub formatted reports, skip all others
         if (preg_match(config("{$this->configBase}.parser.report_file"), $attachment->filename)) {
             // Create temporary working environment for the parser ($this->tempPath, $this->fs)
             $this->createWorkingDir();
             file_put_contents($this->tempPath . $attachment->filename, $attachment->getContent());
             $csvReader = new Reader\CsvReader(new SplFileObject($this->tempPath . $attachment->filename));
             $csvReader->setHeaderRowNumber(0);
             // Loop through all csv reports
             foreach ($csvReader as $report) {
                 if (!empty($report['report_type'])) {
                     $this->feedName = $report['report_type'];
                     // If feed is known and enabled, validate data and save report
                     if ($this->isKnownFeed() && $this->isEnabledFeed()) {
                         // Sanity check
                         if ($this->hasRequiredFields($report) === true) {
                             // incident has all requirements met, filter and add!
                             $report = $this->applyFilters($report);
                             $incident = new Incident();
                             $incident->source = config("{$this->configBase}.parser.name");
                             $incident->source_id = false;
                             $incident->ip = $report['src_ip'];
                             $incident->domain = false;
                             $incident->class = config("{$this->configBase}.feeds.{$this->feedName}.class");
                             $incident->type = config("{$this->configBase}.feeds.{$this->feedName}.type");
                             $incident->timestamp = strtotime($report['event_date'] . ' ' . $report['event_time']);
                             $incident->information = json_encode($report);
                             $this->incidents[] = $incident;
                         }
                     }
                 } else {
                     // We cannot parse this report, since we haven't detected a report_type.
                     $this->warningCount++;
                 }
             }
             // end foreach: loop through csv lines
         }
         // end if: found report file to parse
     }
     // end foreach: loop through attachments
     return $this->success();
 }
Esempio n. 11
0
 /**
  * CsvReader constructor.
  * @param Configuration $config
  * @throws \Exception
  */
 public function __construct(Configuration $config)
 {
     $filename = $config->get(array('filename'));
     $delimiter = $config->get(array('delimiter'), ',');
     $header = $config->get(array('header'), true);
     parent::__construct(new \SplFileObject($filename), $delimiter);
     if ($header) {
         $this->setHeaderRowNumber(0);
     }
 }
 /**
  * @Route("/cargadatos", name="cargador_deudores")
  */
 public function indexAction()
 {
     // Inicializamos el objeto file
     try {
         $this->filepath = $this->getFilePath();
         $file = new \SplFileObject($this->filepath);
     } catch (\Exception $e) {
         echo " Se ha producido una Excepción: ", $e->getMessage(), "\n";
     }
     //Declaramos el reader
     $reader = new CsvReader($file);
     //$reader->setStrict(false);
     $reader->setHeaderRowNumber(0);
     // Necesitamos un logger
     $logger = $this->get('logger');
     //Declaramos el Flujo de Trabajo
     // Declaramos el writer
     // Conseguimos el manager de Doctrine
     $em = $this->getDoctrine()->getManager();
     // Generamos el Writter de Doctrine
     $this->writer = new DoctrineWriter($em, 'AppBundle:Deudores');
     // Generamos el converter
     $this->converter = new DateTimeValueConverter('Y-m-d H:i');
     $this->workflow = new Workflow($reader, $logger, 'Importación CSV');
     $this->resultado = $this->workflow->addWriter($this->writer)->setSkipItemOnFailure(true)->addValueConverter('fechaInclusion', $this->converter)->process();
     //  Procesamos el workflow
     //$this->workflow->process();
     $data = array();
     $data['Nombre'] = $this->resultado->getName();
     //$data['Total Datos Importados']=$this->resultado->getSuccessCount();
     $data['Fecha Inicio'] = $this->resultado->getStartTime();
     $data['Fecha Fin'] = $this->resultado->getEndTime();
     $data['Duración'] = $this->resultado->getElapsed();
     $data['Número de Errores'] = $this->resultado->getErrorCount();
     $data['Tiene Errores'] = $this->resultado->hasErrors();
     $data['Tiene Excepciones'] = $this->resultado->getExceptions();
     // Finalmente presentamos los datos
     $engine = $this->container->get('templating');
     $content = $engine->render('dataimport/index.html.twig', array('data' => $data));
     return new Response($content);
 }
Esempio n. 13
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 [];
 }
Esempio n. 14
0
 /**
  * @param \SplFileObject $file
  * @param array          $data
  * @return array
  */
 public function getCsvHeader(\SplFileObject $file, &$data)
 {
     $csvReader = new CsvReader($file, $data['delimiter']);
     $csvReader->setHeaderRowNumber(0, 1);
     $csvReader->setStrict(false);
     $data['count'] = $csvReader->count();
     $data['header'] = $csvReader->getColumnHeaders();
     if ($csvReader->hasErrors() || count($csvReader->getFields()) <= 1) {
         $this->setError('error read file');
     } else {
         $row = $csvReader->getRow(1);
         foreach ($row as $key => $value) {
             $data['first'][$key] = $value;
         }
     }
     return $data;
 }
 /**
  *
  * @param string $jotFormUrl        	
  * @param string|null $password        	
  * @throws UnableToRetrieveCsvFile
  */
 public function __construct($jotFormUrl, $password = null)
 {
     // My Constructor
     $this->jotFormUrl = $jotFormUrl;
     $this->password = $password;
     $downloadHelper = new JotFormDownloadHelper();
     // Download CSV-File from jotForm
     $filePath = $downloadHelper->downloadFromJotForm($jotFormUrl, $password);
     $splFile = $downloadHelper->fileNameToSplFile($filePath);
     // Parent Construct
     parent::__construct($splFile, $delimiter = ',', $enclosure = '"', $escape = "\n");
     $this->file->seek(0);
     // jotForm Specific CSV-Options
     $this->setHeaderRowNumber(0, CsvReader::DUPLICATE_HEADERS_INCREMENT);
     $this->file->setFlags(\SplFileObject::READ_CSV | \SplFileObject::READ_AHEAD | \SplFileObject::SKIP_EMPTY);
     // Sometimes the CSV-Entry contains a "," at the end and sometimes not
     // Stupid jotForm
     $this->setStrict(false);
 }
Esempio n. 16
0
 public function load()
 {
     $reader = new CsvReader($this->getFile(), $this->getOption('delimiter'), $this->getOption('enclosure'), $this->getOption('escape'));
     $headers = $this->getOption('headers');
     $headerRow = $this->getOption('header_row');
     if (false !== $headerRow) {
         $duplicateHeaders = $headers == 'merge' ? CsvReader::DUPLICATE_HEADERS_MERGE : CsvReader::DUPLICATE_HEADERS_INCREMENT;
         $reader->setHeaderRowNumber($headerRow, $duplicateHeaders);
     }
     if (is_array($headers)) {
         $reader->setColumnHeaders($headers);
     } elseif ('number' == $headers) {
         $headers = [];
         for ($i = 1; $i <= count($reader->getColumnHeaders()); ++$i) {
             $headers[] = 'field' . $i;
         }
         $reader->setColumnHeaders($headers);
     }
     $reader->setStrict($this->getOption('strict'));
     return $this->setReader($reader);
 }
 public function validate($file, Constraint $constraint)
 {
     if ($file) {
         $file = new \SplFileObject($file->getPathname());
         $reader = new CsvReader($file);
         $reader->setHeaderRowNumber(0);
         foreach ($reader as $lineNb => $row) {
             $lineNb = $lineNb + 1;
             if (count($row) !== 7) {
                 $this->context->addViolation('invalid_number_of_column', ['%lineNb%' => $lineNb]);
                 return;
             }
             $columnHeaders = ['resource_type', 'name', 'max_time_reservation', 'description', 'localisation', 'quantity', 'color'];
             foreach ($columnHeaders as $name) {
                 if (!array_key_exists($name, $row)) {
                     $this->context->addViolation('invalid_column_headers', ['%columnName%' => $name]);
                     return;
                 }
             }
             if (strlen($row['resource_type']) < 2 || strlen($row['resource_type']) > 50) {
                 $this->context->addViolation('invalid_number_characters_resource_type', ['%lineNb%' => $lineNb]);
                 return;
             }
             if (strlen($row['name']) < 2 || strlen($row['name']) > 50) {
                 $this->context->addViolation('invalid_number_characters_name', ['%lineNb%' => $lineNb]);
                 return;
             }
             $file2 = new \SplFileObject($file->getPathname());
             $reader2 = new CsvReader($file2);
             $reader2->setHeaderRowNumber(0);
             foreach ($reader2 as $lineNb2 => $row2) {
                 $lineNb2 = $lineNb2 + 1;
                 if ($lineNb !== $lineNb2 && strtolower($row['resource_type']) === strtolower($row2['resource_type']) && strtolower($row['name']) === strtolower($row2['name'])) {
                     $this->context->addViolation('double_resource_for_one_resource_type', ['%lineNb1%' => $lineNb, '%lineNb2%' => $lineNb2]);
                     return;
                 }
             }
             if (!empty($row['max_time_reservation']) && !preg_match('#^[0-9]+:[0-9]{2}(:[0-9]{2})?$#', $row['max_time_reservation'])) {
                 $this->context->addViolation('invalid_type_for_max_time_reservation', ['%lineNb%' => $lineNb]);
                 return;
             }
             if (strlen($row['localisation']) > 255) {
                 $this->context->addViolation('invalid_number_characters_localisation', ['%lineNb%' => $lineNb]);
                 return;
             }
             if (intval($row['quantity']) < 1) {
                 $this->context->addViolation('invalid_number_quantity', ['%lineNb%' => $lineNb]);
                 return;
             }
             if (!preg_match('/#[a-zA-Z0-9]{6}/', $row['color']) && !empty($row['color'])) {
                 $this->context->addViolation('invalid_color_format', ['%lineNb%' => $lineNb]);
                 return;
             }
             $resourceType = $this->em->getRepository('FormaLibreReservationBundle:ResourceType')->findOneBy(['name' => $row['resource_type']]);
             if ($resourceType) {
                 $resource = $this->em->getRepository('FormaLibreReservationBundle:Resource')->findBy(['resourceType' => $resourceType->getId(), 'name' => $row['name']]);
                 if ($resource) {
                     $this->context->addViolation('resource_already_exists_for_resource_type', ['%lineNb%' => $lineNb]);
                     return;
                 }
             }
         }
     }
 }
Esempio n. 18
0
 protected function readArquivoExtrato($endereco = '')
 {
     $file = new \SplFileObject($endereco);
     $reader = new CsvReader($file);
     $reader->setHeaderRowNumber(0);
     return $reader;
 }
Esempio n. 19
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');
 }
 public function importResourcesAction($file)
 {
     $file = new \SplFileObject($file->getPathname());
     $reader = new CsvReader($file);
     $reader->setHeaderRowNumber(0);
     $data = ['resourcesTypes' => [], 'resources' => []];
     foreach ($reader as $row) {
         $resourceTypeName = ucfirst($row['resource_type']);
         $resourceName = ucfirst($row['name']);
         $maxTimeReservation = $row['max_time_reservation'];
         $description = ucfirst($row['description']);
         $localisation = ucfirst($row['localisation']);
         $quantity = $row['quantity'];
         $color = empty($row['color']) ? '#3a87ad' : $row['color'];
         $resourceType = $this->resourceTypeRepo->findOneBy(['name' => $resourceTypeName]);
         if (!$resourceType) {
             $resourceType = new ResourceType();
             $resourceType->setName($resourceTypeName);
             $this->em->persist($resourceType);
             $this->em->flush();
             $data['resourcesTypes'][] = ['id' => $resourceType->getId(), 'name' => $resourceType->getName()];
         }
         $resource = new Resource();
         $resource->setResourceType($resourceType)->setName($resourceName)->setMaxTimeReservation($maxTimeReservation)->setDescription($description)->setLocalisation($localisation)->setQuantity($quantity)->setColor($color);
         $this->em->persist($resource);
         $this->em->flush();
         $data['resources'][] = ['resourceTypeId' => $resourceType->getId(), 'resource' => ['id' => $resource->getId(), 'name' => $resourceName]];
     }
     return $data;
 }
Esempio n. 21
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');
 }
 /**
  * {@inheritdoc}
  */
 public function processFile(\SplFileInfo $file, $replace = false)
 {
     $reader = new CsvReader($file->openFile());
     $reader->setStrict(false)->setHeaderRowNumber(0)->setColumnHeaders($this->getColumns());
     $workflow = $this->buildWorkflow($reader)->setSkipItemOnFailure(true);
     $this->result = $workflow->process();
 }
Esempio n. 23
0
 /**
  * ImportProcess action
  *
  * @param $request
  * @return Response
  *
  * @throws AccessDeniedException If access is not granted
  */
 public function importProcessAction(Request $request)
 {
     if (false === $this->admin->isGranted('IMPORT')) {
         throw new AccessDeniedException();
     }
     $file = new \SplFileObject('/tmp/import/product_import.csv');
     // 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);
     $reader = new Reader\CsvReader($file, ';');
     $reader->setHeaderRowNumber(0);
     $choices = array(null => 'Nicht importieren', 'id' => 'Id', 'productNumber' => 'Artikelnummer', 'productCategory' => 'Artikelkategorie', 'translations.name' => 'Name', 'translations.description' => 'Beschreibung', 'memo' => 'Memo', 'enabled' => 'Aktiv', 'basePrice' => 'Basispreis', 'unitOfQuantity' => 'Mengeneinheit');
     $defaultData = array();
     $builder = $this->createFormBuilder($defaultData);
     $builder->add('language', ChoiceType::class, array('choices' => array('de' => 'Deutsch', 'en' => 'Englisch', 'fr' => 'Franzoesisch', 'it' => 'Italienisch')));
     $builder->add('onlyUpdate', CheckboxType::class, array('label' => 'Nur Update, keine neuen Saetze importieren', 'required' => false));
     $headers = array();
     foreach ($reader->getColumnHeaders() as $header) {
         preg_match_all('/\\((.*?)\\)/', $header, $out);
         $header = $out[1] ? $out[1][0] : $header;
         $headers[] = $header;
         $builder->add($header, 'choice', array('required' => false, 'label' => false, 'choices' => $choices));
     }
     $form = $builder->getForm();
     $form->handleRequest($request);
     $data = array();
     foreach ($reader as $row) {
         $data[] = $row;
     }
     $mapping = null;
     if ($form->isValid()) {
         if ($request->request->has('btn_confirm')) {
             $formData = $form->getData();
             // Set Database into "nonchecking Foreign Keys"
             $em = $this->getDoctrine()->getManager();
             $em->getConnection()->exec("SET FOREIGN_KEY_CHECKS=0;");
             $writer = new DoctrineWriter($em, "AppBundle:Product", array('productNumber'), $formData['language']);
             $writer->setTruncate(false);
             $metadata = $em->getClassMetaData("AppBundle:Product");
             $metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE);
             //                **************************************
             //                Excel Verwurschtelt die Artikelnummer.
             //                **************************************
             $filter = new Step\ConverterStep();
             $filter->add(function ($v) {
                 unset($v['--NONE--']);
                 if (array_key_exists('id', $v)) {
                     $v['id'] = intval($v['id']);
                 }
                 return $v;
             });
             $filter->add(function ($v) {
                 if (array_key_exists('basePrice', $v)) {
                     $v['basePrice'] = intval($v['basePrice']);
                 }
                 return $v;
             });
             $filter->add(function ($v) {
                 if (!array_key_exists('enabled', $v)) {
                     $v['enabled'] = true;
                 }
                 return $v;
             });
             $mapping = new Step\MappingStep();
             foreach ($headers as $header) {
                 $newMap = $formData[$header] ? $formData[$header] : '--NONE--';
                 $mapping->map('[' . $header . ']', '[' . $newMap . ']');
             }
             $converter = new Step\ValueConverterStep();
             $converter->add('[productCategory]', function ($id) {
                 $repository = $this->getDoctrine()->getRepository('AppBundle:ProductCategory');
                 $category = $repository->findOneById($id);
                 return $category;
             });
             $converter->add('[unitOfQuantity]', function ($id) {
                 $repository = $this->getDoctrine()->getRepository('AppBundle:UnitOfQuantity');
                 $uoq = $repository->findOneById($id);
                 return $uoq;
             });
             $workflow = new Workflow\StepAggregator($reader);
             $workflow->addStep($mapping);
             $workflow->addStep($filter);
             $workflow->addStep($converter);
             $workflow->addWriter($writer);
             $workflow->process();
             // Resetting Database Check Status
             $em->getConnection()->exec("SET FOREIGN_KEY_CHECKS=1;");
             return $this->render('CRUD/import_product_category_finish.html.twig', array('action' => 'import'));
         }
     }
     $formView = $form->createView();
     // set the theme for the current Admin Form
     $this->get('twig')->getExtension('form')->renderer->setTheme($formView, $this->admin->getFilterTheme());
     return $this->render('CRUD/import_product_category_process.html.twig', array('action' => 'import', 'form' => $formView, 'data' => $data, 'headers' => $headers));
 }
Esempio n. 24
0
 public function testMaximumNesting()
 {
     if (!function_exists('xdebug_is_enabled')) {
         $this->markTestSkipped('xDebug is not installed');
     }
     $xdebug_start = !xdebug_is_enabled();
     if ($xdebug_start) {
         xdebug_enable();
     }
     ini_set('xdebug.max_nesting_level', 200);
     $file = new \SplTempFileObject();
     for ($i = 0; $i < 500; $i++) {
         $file->fwrite("1,2,3\n");
     }
     $reader = new CsvReader($file);
     $reader->rewind();
     $reader->setStrict(true);
     $reader->setColumnHeaders(array('one', 'two'));
     $current = $reader->current();
     $this->assertEquals(null, $current);
     if ($xdebug_start) {
         xdebug_disable();
     }
 }
Esempio n. 25
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));
 }
Esempio n. 26
0
 /**
  * Import  from csv
  * using https://github.com/ddeboer/data-import
  *
  * @Route("/import/{filetype}/{entity}/{id}", name="import_upload")
  */
 public function importAction($id, $filetype, $entity)
 {
     $em = $this->getDoctrine()->getManager();
     // Create and configure the reader
     $upload = $em->getRepository('AppBundle:Upload')->find($id);
     $path = $this->get('kernel')->getRootDir() . '/../uploads/' . $upload->getName();
     $entity_namespace = 'AppBundle:' . $entity;
     $entity_redirect = $entity;
     $file = new \SplFileObject($path);
     $csvReader = new CsvReader($file);
     // Tell the reader that the first row in the CSV file contains column headers
     $csvReader->setHeaderRowNumber(0);
     $csvReader->setStrict(FALSE);
     // Create the workflow from the reader
     $workflow = new Workflow($csvReader);
     // Create a writer: you need Doctrine’s EntityManager.
     $doctrineWriter = new DoctrineWriter($em, $entity_namespace);
     $doctrineWriter->disableTruncate();
     $workflow->addWriter($doctrineWriter);
     // Process the workflow
     $workflow->process();
     return $this->redirect($this->generateUrl(strtolower($entity_redirect)));
 }
Esempio n. 27
0
 private function formatToReader(Format $format, \SplFileInfo $file)
 {
     if ($format instanceof CsvFormat) {
         $reader = new CsvReader($file->openFile(), $format->getDelimiter(), $format->getEnclosure(), $format->getEscape());
         $reader->setStrict(false);
         if ($format->isHeaderInFirstRow()) {
             $reader->setHeaderRowNumber(0, CsvReader::DUPLICATE_HEADERS_MERGE);
             $reader->setColumnHeaders(array_map('trim', $reader->getColumnHeaders()));
             //TODO some header-collaborator?
         }
     } elseif ($format instanceof ExcelFormat) {
         $headerRowNumber = $format->isHeaderInFirstRow() ? 0 : null;
         $reader = new ExcelReader($file->openFile(), $headerRowNumber, $format->getActivesheet());
         if ($format->isHeaderInFirstRow()) {
             $reader->setColumnHeaders(array_map('trim', $reader->getColumnHeaders()));
             //TODO some header-collaborator?
         }
     } elseif ($format instanceof JsonFormat) {
         $array = json_decode(file_get_contents($file), true);
         $reader = new ArrayReader($array);
     } elseif ($format instanceof XmlFormat) {
         $reader = new XmlReader($file->openFile(), $format->getXpath());
     } elseif ($format instanceof CompressedFormat && $format->getSubFormat()) {
         $reader = $this->formatToReader($format->getSubFormat(), $format->getInsideStream($file));
     } else {
         throw new InvalidConfigurationException('Cannot build reader. Unknown format: ' . $format);
     }
     return $reader;
 }
Esempio n. 28
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;
 }
Esempio n. 29
0
 /**
  * Parse attachments
  * @return array    Returns array with failed or success data
  *                  (See parser-common/src/Parser.php) for more info.
  */
 public function parse()
 {
     // Validate user based regex
     try {
         preg_match(config("{$this->configBase}.parser.file_regex"), '', $matches);
     } catch (\Exception $e) {
         $this->warningCount++;
         return $this->failed('Configuration error in the regular expression');
     }
     foreach ($this->parsedMail->getAttachments() as $attachment) {
         if (strpos($attachment->filename, '.zip') !== false && $attachment->contentType == 'application/octet-stream') {
             $zip = new Zipper();
             if (!$this->createWorkingDir()) {
                 return $this->failed("Unable to create working directory");
             }
             file_put_contents($this->tempPath . $attachment->filename, $attachment->getContent());
             $zip->zip($this->tempPath . $attachment->filename);
             $zip->extractTo($this->tempPath);
             foreach ($zip->listFiles() as $index => $compressedFile) {
                 if (strpos($compressedFile, '.csv') !== false) {
                     // For each CSV file we find, we are going to do magic (however they usually only send 1 zip)
                     if (preg_match(config("{$this->configBase}.parser.file_regex"), $compressedFile, $matches)) {
                         $this->feedName = $matches[1];
                         // If feed is known and enabled, validate data and save report
                         if ($this->isKnownFeed() && $this->isEnabledFeed()) {
                             $csvReports = new Reader\CsvReader(new SplFileObject($this->tempPath . $compressedFile));
                             $csvReports->setHeaderRowNumber(0);
                             foreach ($csvReports as $report) {
                                 // Handle field mappings first
                                 $aliasses = config("{$this->configBase}.feeds.{$this->feedName}.aliasses");
                                 if (is_array($aliasses)) {
                                     foreach ($aliasses as $alias => $real) {
                                         if (array_key_exists($alias, $report)) {
                                             $report[$real] = $report[$alias];
                                             unset($report[$alias]);
                                         }
                                     }
                                 }
                                 /*
                                  * Legacy 3.x fix for migrations.
                                  *
                                  * This resolves shadowserver errors where the CSV was send in duplicate resulting
                                  * in the header fields being used as data. If the header is detected the row can
                                  * be skipped safely
                                  */
                                 if ($report['ip'] === 'ip') {
                                     continue;
                                 }
                                 // Sanity check
                                 if ($this->hasRequiredFields($report) === true) {
                                     // incident has all requirements met, filter and add!
                                     $report = $this->applyFilters($report);
                                     $incident = new Incident();
                                     $incident->source = config("{$this->configBase}.parser.name");
                                     $incident->source_id = false;
                                     $incident->ip = $report['ip'];
                                     $incident->domain = false;
                                     $incident->class = config("{$this->configBase}.feeds.{$this->feedName}.class");
                                     $incident->type = config("{$this->configBase}.feeds.{$this->feedName}.type");
                                     $incident->timestamp = strtotime($report['timestamp']);
                                     $incident->information = json_encode($report);
                                     // some rows have a domain, which is an optional column we want to register
                                     switch ($this->feedName) {
                                         case "spam_url":
                                             if (isset($report['url'])) {
                                                 $incident->domain = getDomain($report['url']);
                                             }
                                             break;
                                         case "ssl_scan":
                                             if (isset($report['subject_common_name'])) {
                                                 /*
                                                  * Common name does not add http://, but that is required for
                                                  * the domain helper check so lets add it manually
                                                  */
                                                 $testurl = "http://{$report['subject_common_name']}";
                                                 $incident->domain = getDomain($testurl);
                                             }
                                             break;
                                         case "compromised_website":
                                             if (isset($report['http_host'])) {
                                                 $incident->domain = getDomain($report['http_host']);
                                             }
                                             break;
                                     }
                                     $this->incidents[] = $incident;
                                 }
                                 //End hasRequired fields
                             }
                             // End foreach report loop
                         }
                         // End isKnown & isEnabled
                     } else {
                         // Pregmatch failed to get feedName from attachment
                         $this->warningCount++;
                     }
                 } else {
                     // Attached file is not a CSV within a ZIP file
                     $this->warningCount++;
                 }
             }
             // End each file in ZIP attachment loop
         }
         // End if not a ZIP attachment
     }
     // End foreach attachment loop
     return $this->success();
 }
Esempio n. 30
0
 /**
  * Creates a new Campaign entity.
  *
  */
 public function createAction(Request $request)
 {
     $entity = new Campaign();
     //         $product = new \Suppliercheck\SupplierBundle\Entity\Product();
     //         $product->setName('tag1');
     //         $product->setCampaignId(1);
     //         $entity->getProducts()->add($product);
     //         $em1 = $this->getDoctrine()->getManager();
     //         $em1->persist($product);
     //         $em1->flush();
     // Original create form
     // $form = $this->createCreateForm($entity);
     $request = $this->getRequest();
     $form = $this->createCreateForm($entity);
     //        	 $form->handleRequest($request);
     if ($request->isMethod('POST')) {
         $form->handleRequest($request);
         if ($form->isValid()) {
             //         	$form['file']->getData()->move($dir, $someNewFilename);
             $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, 'SuppliercheckSupplierBundle: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('SuppliercheckSupplierBundle:Import');
             $listData = $getData->findAll();
             foreach ($listData as $value) {
                 $newProduct = new Product();
                 $newProduct->setCampaign($entity);
                 $newProduct->createFromImport($value);
                 $sku = $newProduct->getSku();
                 $newProduct->setLink($sku);
                 $entity->getProducts()->add($newProduct);
                 $newProduct = $value;
             }
             //         	$entity->addProducts($value);
             //var_dump($entity);
             //         	$user->getAuthoredComments()->add($newComment);
             //         	$newComment->setAuthor($user);
             $em = $this->getDoctrine()->getManager();
             $em->persist($entity);
             $em->flush();
             return $this->redirect($this->generateUrl('supplier_campaign_show', array('id' => $entity->getId())));
         }
     }
     //         if ($form->isValid()) {
     //             $em = $this->getDoctrine()->getManager();
     //             $em->persist($entity);
     //             $em->flush();
     //             return $this->redirect($this->generateUrl('supplier_campaign_show', array('id' => $entity->getId())));
     //         }
     return $this->render('SuppliercheckSupplierBundle:Campaign:new.html.twig', array('entity' => $entity, 'form' => $form->createView()));
 }