em = $em; $this->userManager = $userManager; $this->tokenStorage = $tokenStorage; $this->projectDir = $kernel->getProjectDir(); } /** * {@inheritdoc} */ public function configure(): void { $this->setName('zitec:ge:importer'); $this->addArgument( 'fileOrigin', InputArgument::REQUIRED, 'csv file to import' ); $this->setDescription( 'Green Entrepreneur Importer' ); } /** * {@inheritdoc} */ public function execute(InputInterface $input, OutputInterface $output): int { $filename=$input->getArgument('fileOrigin'); $type = IOFactory::identify($filename); $objReader = IOFactory::createReader($type); $objPHPExcel = $objReader->load($filename); foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { $worksheets[$worksheet->getTitle()] = $worksheet->toArray(); } $this->sectores = $this->em->getRepository('App:Sector')->findAll(); $invalidos=[]; foreach($worksheets as $user){ $i = 0; foreach($user as $geuser){ if($i==0){ $i++;continue;} if (!empty($geuser[0]) || !empty($geuser[1])) { $data=[]; $data['firstname']=$geuser[0]; $data['lastname']=$geuser[1]; $data['locale']=$this->getLocale($geuser[2]); $data['gender']=($geuser[3]=='Male')?'m':'f'; if(!empty($geuser[4])){ $data['dateOfBirth']=DateTime::createFromFormat('m/d/Y',$geuser[4]); }else{ $data['dateOfBirth']=null; } $data['sector']=$this->getSector($geuser[6]); $data['email']=$geuser[10]; $repetido=$this->em->getRepository('App:Licitador')->findByEmail($data['email']); if($this->checkemail($data['email']) && empty($repetido)){ $user=new Licitador(); $parts = explode("@", $data['email']); $data['username']=$data['email']; $data['plainPassword']=$parts[0]; echo "\nCreando Usuario {$data['username']} \n"; $this->updateUser($user, $data); }else{ echo "\nUsuario invalido {$data['firstname']} {$data['lastname']} \n"; $invalidos[]=$data; } } } } $spreadsheet = new Spreadsheet(); $spreadsheet->setActiveSheetIndex(0); $sheet = $spreadsheet->getActiveSheet(); $keys= array_keys($invalidos[0]); foreach($keys as $index=>$key){ $i=$index+1; $sheet->setCellValue('A'.$i, $key); } $fila='A'; foreach($invalidos as $invalido){ ++$fila; $i=1; foreach($invalido as $field){ $sheet->setCellValue($fila.$i, $field); $i++; } } $writer = IOFactory::createWriter($spreadsheet, 'Xls'); $writer->save('invalidos.xls'); $this->output=$output; exit(0); } private function getLocale($locale){ $local='EN'; switch($locale){ case 'Algeria': $local='DZ';break; case 'Egypt':$local='EG';break; case 'Israel':$local='IL';break; case 'Jordan':$local='JO';break; case 'Lebanon':$local='LB';break; case 'Morocco':$local='MA';break; case 'Palestine':$local='PS';break; case 'Tunisia':$local='TN';break; } return $local; } private function getSector($sector){ foreach($this->sectores as $s){ if (strpos($sector, 'food') !== false && strpos($s->getNombre(), 'food') !== false) { return $s; }elseif(strpos($sector, 'Renewable') !== false && strpos($s->getNombre(), 'Renewable') !== false) { return $s; }elseif(strpos($sector, 'waste') !== false && strpos($s->getNombre(), 'waste') !== false) { return $s; }elseif(strpos($sector, 'tourism') !== false && strpos($s->getNombre(), 'tourism') !== false) { return $s; }elseif(strpos($sector, 'construction') !== false && strpos($s->getNombre(), 'construction') !== false) { return $s; }elseif(strpos($sector, 'textile') !== false && strpos($s->getNombre(), 'textile') !== false) { return $s; }elseif(strpos($sector, 'mobility') !== false && strpos($s->getNombre(), 'mobility') !== false) { return $s; }elseif(strpos($sector, 'cleaning') !== false && strpos($s->getNombre(), 'cleaning') !== false) { return $s; }elseif(strpos($sector, 'furniture') !== false && strpos($s->getNombre(), 'furniture') !== false) { return $s; }elseif(strpos($sector, 'electrical') !== false && strpos($s->getNombre(), 'electrical') !== false) { return $s; }elseif(strpos($sector, 'Communication') !== false && strpos($s->getNombre(), 'Communication') !== false) { return $s; } } } private function checkemail($str) { return (!preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE; } private function updateUser($user, $data){ $user->setUsername($data['username']); $user->setUsernameCanonical($data['username']); $user->setEmail($data['email']); $user->setEmailCanonical($data['email']); $user->setPlainPassword($data['plainPassword']); $user->setFirstname($data['firstname']); $user->setLastname($data['lastname']); $user->setLocale($data['locale']); $user->setGender($data['gender']); if(!empty($data['dateOfBirth'])){ $user->setDateOfBirth($data['dateOfBirth']); } $user->setNew(1); $user->setEnabled(1); // $this->em->persist($user); // $this->em->flush(); echo "\nUsuario {$data['username']} creado\n"; $this->userManager->updateUser($user); $token = new UsernamePasswordToken($user, $data['plainPassword'], 'admin', $user->getRoles()); $this->tokenStorage->setToken($token); //$this->container->get('security.token_storage')->setToken($token); // $this->container->get('session')->set('_security_main', serialize($token)); mkdir($this->projectDir.'/public/uploads/'.$user->getId()); } }