/**
  * {@inheritDoc}
  */
 public function load(ObjectManager $manager)
 {
     $entity = new Division();
     $entity->setGrade("CP-CE1");
     $entity->setHeadTeacher("Mme LEMOUE Laurence");
     $entity->setSchool($this->getReference("school-nddf"));
     $manager->persist($entity);
     $this->setReference('division-lemoue', $entity);
     $entity = new Division();
     $entity->setGrade("CE2-CM1");
     $entity->setHeadTeacher("Mme CATTEEU Anne-Sophie");
     $entity->setSchool($this->getReference("school-nddf"));
     $manager->persist($entity);
     $this->setReference('division-catteeu', $entity);
     $entity = new Division();
     $entity->setGrade("CE1");
     $entity->setHeadTeacher("Mle NOUAILLE-DEGORCE Valérie ");
     $entity->setSchool($this->getReference("school-rg"));
     $manager->persist($entity);
     $this->setReference('division-nouaille', $entity);
     $entity = new Division();
     $entity->setGrade("CE2");
     $entity->setHeadTeacher("Mme LUCIEN Nathalie ");
     $entity->setSchool($this->getReference("school-rg"));
     $manager->persist($entity);
     $this->setReference('division-lucien', $entity);
     $entity = new Division();
     $entity->setGrade("GS");
     $entity->setHeadTeacher("Mme PICHODO Marie-Pierre ");
     $entity->setSchool($this->getReference("school-ecureuils"));
     $manager->persist($entity);
     $this->setReference('division-pichodo', $entity);
     $manager->flush();
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $file = $input->getArgument('file');
     $em = $this->getContainer()->get('doctrine')->getManager();
     if (!$this->askConfirmation($input, $output, '<question>Careful, database will be purged. Do you want to continue y/N ?</question>', false)) {
         return;
     }
     $purger = new ORMPurger($em);
     $purger->setPurgeMode(ORMPurger::PURGE_MODE_DELETE);
     $executor = new ORMExecutor($em, $purger);
     $executor->setLogger(function ($message) use($output) {
         $output->writeln(sprintf('  <comment>></comment> <info>%s</info>', $message));
     });
     $executor->purge();
     // Load users
     $stream = fopen($file, 'r');
     while ($line = fgets($stream)) {
         if (strpos($line, 'COPY multipass_users (id') !== FALSE) {
             break;
         }
     }
     $userManager = $this->getUserManager();
     $userAdmin = $userManager->createUser();
     $userAdmin->setPlainPassword('admin');
     $userAdmin->setEnabled(true);
     $userAdmin->setEmail('*****@*****.**');
     $userAdmin->setRoles(array('ROLE_SUPER_ADMIN'));
     $userAdmin->setFirstname('Romain');
     $userAdmin->setLastname('Coeur');
     $userAdmin->setPhone('0628974930');
     $userManager->updateUser($userAdmin);
     $users = array('admin' => $userAdmin);
     while ($line = fgets($stream)) {
         $data = explode('	', $line);
         if ($data[0] == "\\.\n") {
             break;
         }
         $entity = $userManager->createUser();
         $entity->setUsername($data[1]);
         $entity->setUsernameCanonical($data[1]);
         $entity->setEmail($data[1]);
         $entity->setEmailCanonical($data[1]);
         $entity->setEnabled(true);
         $entity->setPlainPassword('wild1234');
         $entity->setPassword('9908e42e69c19bc0e6c0ce1bf05b381fbc94ca10aa7e6b648815d676248f8a3fe2ee124f7d9d375e9f909036e45cc9e766e3c9369655c1db1f331e71c17bc2c9');
         $userManager->updateUser($entity);
         $users[$data[0]] = $entity;
     }
     $em->flush();
     $output->writeln(sprintf('  <comment>></comment> <info>%s users loaded</info>', count($users)));
     // Add home data to users
     rewind($stream);
     while ($line = fgets($stream)) {
         if (strpos($line, 'COPY multipass_homes (id') !== FALSE) {
             break;
         }
     }
     $nb = 0;
     while ($line = fgets($stream)) {
         $data = explode('	', $line);
         if ($data[0] == "\\.\n") {
             break;
         }
         $user = $users[$data[11]];
         $user->setFirstname($data[1]);
         $user->setLastname($data[2]);
         $user->setPhone($data[3]);
         $user->setTelephoneSecondaire($data[4]);
         $user->setAdresse($data[5]);
         $user->setCodePostal($data[6]);
         $user->setCommune($data[7]);
         $user->setModeDePaiement($data[8]);
         $user->setGender($data[9]);
         $user->setCaf($data[10]);
         $em->persist($user);
         $nb++;
     }
     $em->flush();
     $output->writeln(sprintf('  <comment>></comment> <info>%s users updated</info>', $nb));
     // Load schools
     rewind($stream);
     while ($line = fgets($stream)) {
         if (strpos($line, 'COPY multipass_schools (id') !== FALSE) {
             break;
         }
     }
     $schools = array();
     while ($line = fgets($stream)) {
         $data = explode('	', $line);
         if ($data[0] == "\\.\n") {
             break;
         }
         $entity = new School();
         $entity->setName($data[1]);
         $entity->setAdress($data[2]);
         $em->persist($entity);
         $schools[$data[0]] = $entity;
     }
     $em->flush();
     $output->writeln(sprintf('  <comment>></comment> <info>%s schools loaded</info>', count($schools)));
     // Load divisions
     rewind($stream);
     while ($line = fgets($stream)) {
         if (strpos($line, 'COPY multipass_classrooms (id') !== FALSE) {
             break;
         }
     }
     $divisions = array();
     while ($line = fgets($stream)) {
         $data = explode('	', $line);
         if ($data[0] == "\\.\n") {
             break;
         }
         $entity = new Division();
         $entity->setSchool($schools[$data[10]]);
         $gradeAndTeacher = explode(' DE ', $data[1]);
         $entity->setGrade($gradeAndTeacher[0]);
         $entity->setHeadTeacher($gradeAndTeacher[1]);
         $em->persist($entity);
         $divisions[$data[0]] = $entity;
     }
     $em->flush();
     $output->writeln(sprintf('  <comment>></comment> <info>%s divisions loaded</info>', count($divisions)));
     // Load children
     rewind($stream);
     while ($line = fgets($stream)) {
         if (strpos($line, 'COPY multipass_children (id') !== FALSE) {
             break;
         }
     }
     $nb = 0;
     while ($line = fgets($stream)) {
         $data = explode('	', $line);
         if ($data[0] == "\\.\n") {
             break;
         }
         if ($data[5] == '\\N') {
             continue;
         }
         $entity = new Eleve();
         $entity->setPrenom($data[1]);
         $entity->setNom($data[2]);
         $entity->setDateDeNaissance(new \DateTime($data[3]));
         $entity->setUser($users[$data[4]]);
         $entity->setDivision($divisions[$data[5]]);
         $habits = array();
         if ($data[8] == 't') {
             $habits[] = "lundi";
         }
         if ($data[9] == 't') {
             $habits[] = "mardi";
         }
         if ($data[10] == 't') {
             $habits[] = "jeudi";
         }
         if ($data[11] == 't') {
             $habits[] = "vendredi";
         }
         $entity->setHabits($habits);
         $entity->setAllergie($data[13]);
         $entity->setRegimeSansPorc($data[14]);
         $em->persist($entity);
         $nb++;
     }
     $em->flush();
     $output->writeln(sprintf('  <comment>></comment> <info>%s divisions loaded</info>', $nb));
     fclose($stream);
     $output->writeln(sprintf('<info>done</info>'));
 }