kernel = $kernel; $this->output = new ConsoleOutput(); } public function load(ObjectManager $manager): void { // app:Init $this->writeln("app:Init"); $application = new Application($this->kernel); $application->setAutoExit(false); $input = new ArrayInput(['command' => 'app:Init']); $boutput = new BufferedOutput(); $application->run($input, $boutput); $manager->flush(); // app:Synchro $manager->clear(); $this->writeln("app:Synchro"); $input = new ArrayInput(['command' => 'app:Synchro']); $boutput = new BufferedOutput(); $application->run($input, $boutput); // Assign id $metadata = $manager->getClassMetaData('App\Entity\Niveau01'); $metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE); $metadata->setIdGenerator(new AssignedGenerator()); $metadata = $manager->getClassMetaData('App\Entity\Niveau02'); $metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE); $metadata->setIdGenerator(new AssignedGenerator()); $metadata = $manager->getClassMetaData('App\Entity\Niveau03'); $metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE); $metadata->setIdGenerator(new AssignedGenerator()); $metadata = $manager->getClassMetaData('App\Entity\Niveau04'); $metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE); $metadata->setIdGenerator(new AssignedGenerator()); // Niveau 01 $this->writeln("Niveau01"); $csv = file_get_contents($this->kernel->getProjectDir().'/src/DataFixtures/niveau01.csv'); $tab = $this->csv_to_array($csv); foreach($tab as $lig) { $niveau01=$manager->getRepository('App\Entity\Niveau01')->find($lig['id']); if(!$niveau01) { $niveau01=new Niveau01(); $niveau01->setId($lig["id"]); $manager->persist($niveau01); } $niveau01->setLabel($lig["label"]); $niveau01->setCode($lig["code"]); $niveau01->setPostaladress($lig["postaladress"]); $niveau01->setTelephonenumber($lig["telephonenumber"]); $niveau01->setEmail($lig["email"]); $niveau01->setApikey($lig["apikey"]); $manager->flush(); } // Niveau 02 $this->writeln("Niveau02"); $csv = file_get_contents($this->kernel->getProjectDir().'/src/DataFixtures/niveau02.csv'); $tab = $this->csv_to_array($csv); foreach($tab as $lig) { $niveau01=$manager->getRepository('App\Entity\Niveau01')->findOneBy(["code"=>$lig['codenv1']]); if(!$niveau01) continue; $niveau02=$manager->getRepository('App\Entity\Niveau02')->find($lig['id']); if(!$niveau02) { $niveau02=new Niveau02(); $niveau02->setId($lig["id"]); $manager->persist($niveau02); } $niveau02->setLabel($lig["label"]); $niveau02->setCode($lig["code"]); $niveau02->setPostaladress($lig["postaladress"]); $niveau02->setTelephonenumber($lig["telephonenumber"]); $niveau02->setEmail($lig["email"]); $niveau02->setApikey($lig["apikey"]); $niveau02->setNiveau01($niveau01); $manager->flush(); } // Niveau 03 $this->writeln("Niveau03"); $csv = file_get_contents($this->kernel->getProjectDir().'/src/DataFixtures/niveau03.csv'); $tab = $this->csv_to_array($csv); foreach($tab as $lig) { $niveau02=$manager->getRepository('App\Entity\Niveau02')->findOneBy(["code"=>$lig['codenv2']]); if(!$niveau02) continue; $niveau03=$manager->getRepository('App\Entity\Niveau03')->find($lig['id']); if(!$niveau03) { $niveau03=new Niveau03(); $niveau03->setId($lig["id"]); $manager->persist($niveau03); } $niveau03->setLabel($lig["label"]); $niveau03->setCode($lig["code"]); $niveau03->setPostaladress($lig["postaladress"]); $niveau03->setTelephonenumber($lig["telephonenumber"]); $niveau03->setEmail($lig["email"]); $niveau03->setApikey($lig["apikey"]); $niveau03->setNiveau02($niveau02); $manager->flush(); } // Niveau 04 $this->writeln("Niveau04"); $csv = file_get_contents($this->kernel->getProjectDir().'/src/DataFixtures/niveau04.csv'); $tab = $this->csv_to_array($csv); foreach($tab as $lig) { $niveau03=$manager->getRepository('App\Entity\Niveau03')->findOneBy(["code"=>$lig['codenv3']]); if(!$niveau03) continue; $niveau04=$manager->getRepository('App\Entity\Niveau04')->find($lig['id']); if(!$niveau04) { $niveau04=new Niveau04(); $niveau04->setId($lig["id"]); $manager->persist($niveau04); } $niveau04->setLabel($lig["label"]); $niveau04->setCode($lig["code"]); $niveau04->setPostaladress($lig["postaladress"]); $niveau04->setTelephonenumber($lig["telephonenumber"]); $niveau04->setEmail($lig["email"]); $niveau04->setApikey($lig["apikey"]); $niveau04->setNiveau03($niveau03); $manager->flush(); } // User MODO $this->writeln("User Modo"); $userid=-99; $usercpt=0; $niveau01s=$manager->getRepository('App\Entity\Niveau01')->findAll(); foreach($niveau01s as $niveau01) { $userid=$userid-1; $usercpt=$usercpt+1; $username="modo".str_pad($usercpt,3,"0", STR_PAD_LEFT); $user=$manager->getRepository('App\Entity\User')->find($userid); if(!$user) { $user=new User(); $user->setId($userid); $manager->persist($user); $usermodo=new UserModo(); $usermodo->setUser($user); $usermodo->setNiveau01($niveau01); $manager->persist($usermodo); } $user->setUsername($username); $user->setPassword($username); $user->setRoles(["ROLE_MODO"]); $user->setFirstname(str_pad($usercpt,3,"0", STR_PAD_LEFT)); $user->setLastname("Modo"); $user->setEmail($username."@noreply.fr"); $user->setIsvisible(true); $user->setIsactive(true); $user->setAvatar("noavatar.png"); $user->setApikey($username); $user->setNiveau01($niveau01); $manager->flush(); } // User MASTER $this->writeln("User Master"); $userid=-199; $usercpt=0; $niveau02s=$manager->getRepository('App\Entity\Niveau02')->findAll(); foreach($niveau02s as $niveau02) { $userid=$userid-1; $usercpt=$usercpt+1; $username="master".str_pad($usercpt,3,"0", STR_PAD_LEFT); $user=$manager->getRepository('App\Entity\User')->find($userid); if(!$user) { $user=new User(); $user->setId($userid); $manager->persist($user); } $user->setUsername($username); $user->setPassword($username); $user->setRoles(["ROLE_MASTER"]); $user->setFirstname(str_pad($usercpt,3,"0", STR_PAD_LEFT)); $user->setLastname("Master"); $user->setEmail($username."@noreply.fr"); $user->setIsvisible(true); $user->setIsactive(true); $user->setAvatar("noavatar.png"); $user->setApikey($username); $user->setNiveau01($niveau02->getNiveau01()); $user->setNiveau02($niveau02); $manager->flush(); } // User MANAGER $this->writeln("User Manager"); $userid=-299; $usercpt=0; $niveau03s=$manager->getRepository('App\Entity\Niveau03')->findAll(); foreach($niveau03s as $niveau03) { $userid=$userid-1; $usercpt=$usercpt+1; $username="manager".str_pad($usercpt,3,"0", STR_PAD_LEFT); $user=$manager->getRepository('App\Entity\User')->find($userid); if(!$user) { $user=new User(); $user->setId($userid); $manager->persist($user); } $user->setUsername($username); $user->setPassword($username); $user->setRoles(["ROLE_MANAGER"]); $user->setFirstname(str_pad($usercpt,3,"0", STR_PAD_LEFT)); $user->setLastname("Manager"); $user->setEmail($username."@noreply.fr"); $user->setIsvisible(true); $user->setIsactive(true); $user->setAvatar("noavatar.png"); $user->setApikey($username); $user->setNiveau01($niveau03->getNiveau02()->getNiveau01()); $user->setNiveau02($niveau03->getNiveau02()); $user->setNiveau03($niveau03); $manager->flush(); } // User USER $this->writeln("User User"); $userid=-299; $usercpt=0; $niveau03s=$manager->getRepository('App\Entity\Niveau03')->findAll(); foreach($niveau03s as $niveau03) { $userid=$userid-1; $usercpt=$usercpt+1; $username="user".str_pad($usercpt,3,"0", STR_PAD_LEFT); $user=$manager->getRepository('App\Entity\User')->find($userid); if(!$user) { $user=new User(); $user->setId($userid); $manager->persist($user); } $user->setUsername($username); $user->setPassword($username); $user->setRoles(["ROLE_USER"]); $user->setFirstname(str_pad($usercpt,3,"0", STR_PAD_LEFT)); $user->setLastname("User"); $user->setEmail($username."@noreply.fr"); $user->setIsvisible(true); $user->setIsactive(true); $user->setAvatar("noavatar.png"); $user->setApikey($username); $user->setNiveau01($niveau03->getNiveau02()->getNiveau01()); $user->setNiveau02($niveau03->getNiveau02()); $user->setNiveau03($niveau03); $manager->flush(); } // app:Synchro $manager->clear(); $this->writeln("app:Synchro"); $input = new ArrayInput(['command' => 'app:Synchro']); $boutput = new BufferedOutput(); $application->run($input, $boutput); } private function writeln($string) { $this->output->writeln(' > '.$string.''); } private function csv_to_array($csv, $delimiter = ';', $enclosure = '', $escape = '\\', $terminator = "\n") { $r = array(); $rows = explode($terminator,trim($csv)); $names = array_shift($rows); $names = str_getcsv($names,$delimiter,$enclosure,$escape); $nc = count($names); foreach ($rows as $row) { if (trim($row)) { $values = str_getcsv($row,$delimiter,$enclosure,$escape); if (!$values) $values = array_fill(0,$nc,null); @$r[] = array_combine($names,$values); } } return $r; } }