public function load(ObjectManager $manager) { // Liste des noms de catégorie à ajouter $datas = array(array('firstname' => 'Administrateur', 'lastname' => 'système', 'email' => '*****@*****.**', 'username' => 'master', 'code' => 'MAS', 'position' => 'Administrateur système', 'password' => 'gR39XM+O6/ET4XX/GOMFEivFFOWqZxFx6jJ35wnrQV4/kLXeg7l1cG4n/IoOvlqYnDeHOysyZLkcVkw+5N1TZA==', 'salt' => '81b44c0ab9f5775ff6012d0018fc0001', 'role' => 'Admin', 'is_active' => true), array('firstname' => 'Superviseur', 'lastname' => 'Test user', 'email' => '*****@*****.**', 'username' => 'supuser', 'code' => 'STU', 'position' => 'Utilisateur Test', 'password' => 'K+bKy5uo7wOt7ULqjmWhUMqVytU8Binm08iefsxoF3pONFfv9/KZrAekq8RFyscG1ElN3n/E4S9rq7SPUFg4ag==', 'salt' => '6cc12f6be90a8ddbc88fc34c5d5de620', 'agence' => 'Siège Immeuble Regus', 'role' => 'Superviseur', 'is_active' => true), array('firstname' => 'Sambatra', 'lastname' => 'RAHADRANASANDATRA', 'email' => '*****@*****.**', 'username' => 'sambatra', 'code' => 'SAM', 'position' => 'Chef de ventes', 'password' => 'K+bKy5uo7wOt7ULqjmWhUMqVytU8Binm08iefsxoF3pONFfv9/KZrAekq8RFyscG1ElN3n/E4S9rq7SPUFg4ag==', 'salt' => '6cc12f6be90a8ddbc88fc34c5d5de620', 'role' => 'Superviseur', 'is_active' => true), array('firstname' => 'Narindra', 'lastname' => 'RANDRIANARIVELO', 'email' => '*****@*****.**', 'username' => 'narindra', 'code' => 'NAR', 'position' => 'Agent de ventes et d\'escale', 'password' => 'K+bKy5uo7wOt7ULqjmWhUMqVytU8Binm08iefsxoF3pONFfv9/KZrAekq8RFyscG1ElN3n/E4S9rq7SPUFg4ag==', 'salt' => '6cc12f6be90a8ddbc88fc34c5d5de620', 'role' => 'Superviseur', 'is_active' => true), array('firstname' => 'Miarisoa', 'lastname' => '', 'email' => '*****@*****.**', 'username' => 'miarisoa', 'code' => 'MIA', 'position' => 'Agent de ventes et d\'escale', 'password' => 'K+bKy5uo7wOt7ULqjmWhUMqVytU8Binm08iefsxoF3pONFfv9/KZrAekq8RFyscG1ElN3n/E4S9rq7SPUFg4ag==', 'salt' => '6cc12f6be90a8ddbc88fc34c5d5de620', 'role' => 'Superviseur', 'is_active' => true), array('firstname' => 'Malanto', 'lastname' => 'Nassar', 'email' => '*****@*****.**', 'username' => 'malanto', 'code' => 'PIS', 'position' => 'Agent de ventes', 'password' => 'K+bKy5uo7wOt7ULqjmWhUMqVytU8Binm08iefsxoF3pONFfv9/KZrAekq8RFyscG1ElN3n/E4S9rq7SPUFg4ag==', 'salt' => '6cc12f6be90a8ddbc88fc34c5d5de620', 'role' => 'Superviseur', 'is_active' => true), array('firstname' => 'bot1 resa', 'lastname' => 'madagasikara-airways.com', 'email' => '*****@*****.**', 'username' => 'bot1', 'code' => 'BOT1', 'position' => 'Bot resa', 'password' => 'K+bKy5uo7wOt7ULqjmWhUMqVytU8Binm08iefsxoF3pONFfv9/KZrAekq8RFyscG1ElN3n/E4S9rq7SPUFg4ag==', 'salt' => '6cc12f6be90a8ddbc88fc34c5d5de620', 'role' => 'Freelancer', 'is_active' => true), array('firstname' => 'Agent de vente', 'lastname' => 'externe', 'email' => '*****@*****.**', 'username' => 'agentexterne', 'code' => 'AE1', 'position' => 'Agent de vente externe', 'password' => 'K+bKy5uo7wOt7ULqjmWhUMqVytU8Binm08iefsxoF3pONFfv9/KZrAekq8RFyscG1ElN3n/E4S9rq7SPUFg4ag==', 'salt' => '6cc12f6be90a8ddbc88fc34c5d5de620', 'role' => 'Freelancer', 'is_active' => true), array('firstname' => 'Agent', 'lastname' => 'Escale', 'email' => '*****@*****.**', 'username' => 'agentescale', 'code' => 'AES1', 'position' => 'Agent escale', 'password' => 'K+bKy5uo7wOt7ULqjmWhUMqVytU8Binm08iefsxoF3pONFfv9/KZrAekq8RFyscG1ElN3n/E4S9rq7SPUFg4ag==', 'salt' => '6cc12f6be90a8ddbc88fc34c5d5de620', 'role' => 'Freelancer', 'is_active' => true)); foreach ($datas as $item) { // On crée la catégorie $entity = new Utilisateur(); $entity->setFirstname($item['firstname']); $entity->setLastname($item['lastname']); $entity->setUsername($item['username']); $entity->setEmail($item['email']); $entity->setPosition($item['position']); $entity->setPassword($item['password']); $entity->setSalt($item['salt']); $entity->setCode($item['code']); $entity->setRole($manager->getRepository('AppCoreBundle:Role')->findOneBy(array('name' => $item['role']))); $entity->setIsActive($item['is_active']); // On la persiste $manager->persist($entity); } // On déclenche l'enregistrement $manager->flush(); }
/** * Imports Utilisateur entities. * Same method explained in CoursController.php * Parse CSV file * The CSV cours structure was defined with Christophe Widmer (please contact him for CSV examples and notices) * This one is a bit more complex * WARNING : each column has its own role, dont blend it * */ public function importAction(Request $request) { $parser = new Csv(); $type = 'text/plain'; $ext = 'csv'; $path = __DIR__ . '/../../../../web/uploads/csv'; $em = $this->getDoctrine()->getManager(); $form = $this->createForm(new CsvType()); if ($request->getMethod() == 'POST') { $form->bind($request); if ($form->isValid()) { $data = $form->getData(); $file = $data['csv']->move($path, 'temp.csv'); $parser->set($path, 'temp.csv'); $rows = $parser->parseCsv(); $length = count($rows); foreach ($rows as $row) { $statement = array(); foreach ($row as $cell) { $cell = trim($cell); $statement[] = empty($cell); } if (in_array(true, $statement)) { $length--; } else { $role = $em->getRepository('AppCoreBundle:Role')->findOneBy(array('name' => $row[4])); if (!empty($role)) { $entity = new Utilisateur(); $entity->setLastname($row[0]); $entity->setFirstname($row[1]); $entity->setUsername($row[2]); $entity->setEmail($row[3]); $entity->setRole($role); $entity->setPassword($row[5]); $factory = $this->get('security.encoder_factory'); $encoder = $factory->getEncoder($entity); $entity->setSalt(md5(time())); $entity->setPassword($encoder->encodePassword($entity->getPassword(), $entity->getSalt())); $validator = $this->get('validator'); if (!count($validator->validate($entity))) { $em->persist($entity); } else { $length--; } } else { $length--; } } } $em->flush(); if (file_exists($path . '/temp.csv')) { unlink($path . '/temp.csv'); } $this->get('session')->getFlashBag()->add('success', $length . ' utilisateurs ont été ajoutés !'); return $this->redirect($this->generateUrl('utilisateur_import')); } } return $this->render('AppCoreBundle:Utilisateur:import.html.twig', array('headline' => 'Utilisateurs', 'title' => 'Importer des utilisateurs', 'form' => $form->createView())); }