protected function execute(InputInterface $input, OutputInterface $output)
 {
     $em = $this->getContainer()->get('doctrine')->getManager();
     if (strpos(getcwd(), "prod") !== false) {
         $env = "prod";
     } else {
         $env = "dev";
     }
     $output->writeln("Environnement : " . $env);
     $user = $this->getContainer()->getParameter('oracle_user');
     $password = $this->getContainer()->getParameter('oracle_pwd');
     $sid = "pbaza";
     // Passer cette variable à TRUE pour déclencher une mise à jour des directions depuis BAZA
     $updateDirection = TRUE;
     $this->ORA = oci_connect($user, $password, $sid);
     if ($updateDirection) {
         $output->writeln("*** Import des directions ***");
         // Marquage des directions existantes
         $listeDirection = $em->getRepository('EVPOSaffectationBundle:Direction')->findAll();
         foreach ($listeDirection as $direction) {
             $direction->setExisteBaza(FALSE);
         }
         unset($listeDirection);
         $requeteBaza = "select code_direction, nvl(lib_long_direction, ' ') lib_long_direction from baz_direction where flag is null";
         $csr = oci_parse($this->ORA, $requeteBaza);
         oci_execute($csr);
         $nb = 0;
         while (($row = oci_fetch_array($csr, OCI_ASSOC + OCI_RETURN_NULLS)) !== false) {
             $codeDirection = strtoupper($row["CODE_DIRECTION"]);
             $libDirection = utf8_encode($row["LIB_LONG_DIRECTION"]);
             if ($em->getRepository('EVPOSaffectationBundle:Direction')->isDirection($codeDirection)) {
                 $direction = $em->getRepository('EVPOSaffectationBundle:Direction')->getDirection($codeDirection);
             } else {
                 $direction = new Direction();
             }
             $direction->setCodeDirection($codeDirection);
             $direction->setLibDirection($libDirection);
             $direction->setExisteBaza(TRUE);
             $em->persist($direction);
             $nb++;
         }
         $em->flush();
         oci_free_statement($csr);
         unset($csr);
         $output->writeln("Import de " . $nb . " directions");
     }
     $output->writeln("*** Import des services depuis BAZA ***");
     // Marquage des services existants
     $listeService = $em->getRepository('EVPOSaffectationBundle:Service')->findAll();
     foreach ($listeService as $service) {
         $service->setExisteBaza(FALSE);
     }
     unset($listeService);
     $requeteBaza = "select code_service, code_direction, nvl(description_service, ' ') description_service from baz_service where flag is null";
     $csr = oci_parse($this->ORA, $requeteBaza);
     oci_execute($csr);
     $nb = 0;
     while (($row = oci_fetch_array($csr, OCI_ASSOC + OCI_RETURN_NULLS)) !== false) {
         $codeService = strtoupper($row["CODE_SERVICE"]);
         $codeDirection = strtoupper($row["CODE_DIRECTION"]);
         $direction = $em->getRepository('EVPOSaffectationBundle:Direction')->getDirection($codeDirection);
         $libService = utf8_encode($row["DESCRIPTION_SERVICE"]);
         if ($em->getRepository('EVPOSaffectationBundle:Service')->isService($codeService)) {
             $service = $em->getRepository('EVPOSaffectationBundle:Service')->getService($codeService);
         } else {
             $service = new Service();
         }
         if ($updateDirection) {
             $service->setDirection($em->getRepository('EVPOSaffectationBundle:Direction')->getDirection($codeDirection));
         }
         $service->setCodeService($codeService);
         $service->setDirection($direction);
         $service->setLibService($libService);
         $service->setExisteBaza(TRUE);
         $em->persist($service);
         $nb++;
     }
     $em->flush();
     $output->writeln("*** Fusion des données d'entités GPARC ***");
     $fileName = "/home/data/evpos/" . $env . "/gparc/entites.csv";
     $codeInconnu = [];
     if (file_exists($fileName)) {
         $csvFile = fopen($fileName, 'r');
         $nbLine = 0;
         while (($data = fgetcsv($csvFile, 0, ';')) !== FALSE) {
             if ($nbLine > 0) {
                 $lib = trim($data[0]);
                 $actif = trim($data[2]);
                 $codeService = trim($data[6]);
                 $codeSirh = trim($data[7]);
                 if ($actif == "1" && $codeService != "" && $codeService != "-") {
                     // Mise à jour du service concerné
                     if ($em->getRepository('EVPOSaffectationBundle:Service')->isService($codeService)) {
                         // Mise à jour du service
                         $service = $em->getRepository('EVPOSaffectationBundle:Service')->getService($codeService);
                     } else {
                         // Création du service
                         $service = new Service();
                         $service->setCodeService($codeService);
                         $service->setExisteBaza(TRUE);
                         $codeInconnu[$codeService] = TRUE;
                     }
                     $service->setLibService($lib);
                     $service->setCodeSirh($codeSirh);
                     $em->persist($service);
                 }
             }
             $nbLine++;
         }
         fclose($csvFile);
         $em->flush();
         $output->writeln("OK");
     } else {
         $output->writeln("Fichier " . $fileName . " introuvable");
     }
     foreach (array_keys($codeInconnu) as $code) {
         $erreur = new CtrlServiceInconnu();
         $erreur->setCodeService($code);
         $erreur->setRemarque("Code service trouvé dans GPARC, mais pas dans BAZA");
         $em->persist($erreur);
     }
     $em->flush();
     // Suppression des services non retrouvés dans BAZA
     $listeService = $em->getRepository('EVPOSaffectationBundle:Service')->getServicesNonBaza();
     foreach ($listeService as $service) {
         foreach ($service->getListeUtilisateurs() as $utilisateur) {
             $utilisateur->setServiceUtil(NULL);
             $em->persist($utilisateur);
         }
         $em->remove($service);
         $output->writeln("- suppression de " . $service->getCodeService());
     }
     unset($listeService);
     $em->flush();
     oci_free_statement($csr);
     unset($csr);
     $output->writeln("Import de " . $nb . " services");
     $output->write("Création Direction et service inconnus... ");
     // Création d'une direction inconnue
     if (!$em->getRepository('EVPOS\\affectationBundle\\Entity\\Direction')->isDirection("?")) {
         $dirInconnue = new Direction();
         $dirInconnue->setCodeDirection("?");
         $dirInconnue->setLibDirection("Direction inconnue");
         $em->persist($dirInconnue);
     }
     $em->flush();
     // Création d'un service inconnu
     if (!$em->getRepository('EVPOS\\affectationBundle\\Entity\\Service')->isService("?")) {
         $servInconnu = new Service();
         $servInconnu->setCodeService("?");
         $servInconnu->setLibService("Service inconnu");
         $dirInconnue = $em->getRepository('EVPOS\\affectationBundle\\Entity\\Direction')->getDirection("?");
         $servInconnu->setDirection($dirInconnue);
         $em->persist($servInconnu);
     }
     $em->flush();
     $output->writeln("OK");
     $output->writeln("*** Import des utilisateurs ***");
     // Marquage des utilisateurs existants
     $listeUtil = $em->getRepository('EVPOSaffectationBundle:Utilisateur')->findAll();
     foreach ($listeUtil as $util) {
         $util->setExisteBaza(FALSE);
         $em->persist($util);
     }
     $em->flush();
     unset($listeUtil);
     $requeteBaza = "SELECT UPPER (u.ntuid) matricule,\n                     u.ntufullnam nom,\n                     u.code_service code_service,\n                     ua.code_service code_service_sirh,\n                     TO_CHAR (u.NTULASTLGN, 'YYYY-MM-DD') NTULASTLGN\n                FROM baz_user_nt u left outer JOIN BAZ_AGENT ua on ua.matricule = u.ntuid\n               WHERE ntuscript IS NOT NULL\n                     AND (ntudisbld != 1 OR ntudisbld IS NULL)\n                     AND ntufullnam IS NOT NULL\n                     AND UPPER (ntuid) NOT LIKE '%\\__' escape '\\'";
     $csr = oci_parse($this->ORA, $requeteBaza);
     oci_execute($csr);
     $nb = 0;
     while (($row = oci_fetch_array($csr, OCI_ASSOC + OCI_RETURN_NULLS)) !== false) {
         $matUtil = $row["MATRICULE"];
         $nomUtil = utf8_encode($row["NOM"]);
         $codeService = strtoupper(utf8_encode($row["CODE_SERVICE"]));
         $codeSirh = strtoupper(utf8_encode($row["CODE_SERVICE_SIRH"]));
         $lastLogin = $row["NTULASTLGN"];
         if ($em->getRepository('EVPOSaffectationBundle:Utilisateur')->isUtilisateur($matUtil)) {
             $utilisateur = $em->getRepository('EVPOSaffectationBundle:Utilisateur')->getUtilisateur($matUtil);
         } else {
             $utilisateur = new Utilisateur();
         }
         $service = $em->getRepository('EVPOSaffectationBundle:Service')->getServiceSirh($codeSirh);
         if ($service === NULL) {
             // Service non trouvé dans SIRH
             $service = $em->getRepository('EVPOSaffectationBundle:Service')->getService($codeService);
         }
         if ($service !== NULL) {
             $utilisateur->setServiceUtil($service);
         } else {
             // Service non trouvé
             $utilisateur->setServiceUtil(NULL);
         }
         if ($em->getRepository('EVPOSaffectationBundle:Service')->isService($codeService)) {
             $utilisateur->setServiceUtil($em->getRepository('EVPOSaffectationBundle:Service')->getService($codeService));
         }
         $utilisateur->setMatUtil($matUtil);
         $utilisateur->setNomUtil($nomUtil);
         if ($lastLogin !== null) {
             $utilisateur->setLastLogin(new \DateTime($lastLogin));
             $age = time() - $utilisateur->getLastLogin()->getTimestamp();
             $utilisateur->setAgeLogin(round($age / (60 * 60 * 24)));
         } else {
             $utilisateur->setLastLogin(new \DateTime("1/1/1900"));
             $utilisateur->setAgeLogin(9999);
         }
         $utilisateur->setExisteBaza(TRUE);
         $em->persist($utilisateur);
         $nb++;
     }
     $em->flush();
     oci_free_statement($csr);
     unset($csr);
     $output->writeln("Import de " . $nb . " utilisateurs");
     $requeteBaza = "select distinct alias as mat_util, code_service from baz_exchange";
     $csr = oci_parse($this->ORA, $requeteBaza);
     oci_execute($csr);
     $nb = 0;
     while (($row = oci_fetch_array($csr, OCI_ASSOC + OCI_RETURN_NULLS)) !== false) {
         $matUtil = $row["MAT_UTIL"];
         $codeService = $row["CODE_SERVICE"];
         $utilisateur = $em->getRepository('EVPOSaffectationBundle:Utilisateur')->getUtilisateur($matUtil);
         if ($utilisateur !== NULL) {
             if ($utilisateur->getCodeService() != $codeService) {
                 $service = $em->getRepository('EVPOSaffectationBundle:Service')->getService($codeService);
                 if ($service !== NULL) {
                     $utilisateur->setServiceUtil($service);
                     $nb++;
                 }
             }
         }
     }
     $em->flush();
     oci_free_statement($csr);
     unset($csr);
     $output->writeln("Mise à jour du service de " . $nb . " utilisateurs");
     // Suppression des utilisateurs qui n'existaient pas dans BAZA
     $output->write("Suppression des utilisateurs qui n'existaient pas dans BAZA...");
     $listeUtil = $em->getRepository('EVPOSaffectationBundle:Utilisateur')->getUtilisateursSuppr();
     foreach ($listeUtil as $util) {
         $em->remove($util);
         $output->write('.');
     }
     $em->flush();
     unset($listeUtil);
     $output->writeln("OK");
     // Comptage des utilisateurs de chaque service
     $output->write("Comptage des utilisateurs de chaque service... ");
     $listeService = $em->getRepository('EVPOSaffectationBundle:Service')->findAll();
     foreach ($listeService as $service) {
         $nbUtil = $service->getListeUtilisateurs()->count();
         $service->setNbAgent($nbUtil);
         $em->persist($service);
     }
     unset($listeService);
     $em->flush();
     $output->writeln("OK");
     // Comptage des utilisateurs de chaque direction
     $output->write("Comptage des utilisateurs de chaque direction... ");
     $listeDirection = $em->getRepository('EVPOSaffectationBundle:Direction')->findAll();
     foreach ($listeDirection as $direction) {
         $nbUtil = 0;
         foreach ($direction->getListeServices() as $service) {
             $nbUtil += $service->getListeUtilisateurs()->count();
         }
         $direction->setNbAgent($nbUtil);
         $em->persist($direction);
     }
     unset($listeDirection);
     $em->flush();
     $output->writeln("OK");
     // Création des utilisateurs "libre service"
     $output->write("Création des utilisateurs libre service... ");
     $listeService = $em->getRepository('EVPOSaffectationBundle:Service')->findAll();
     foreach ($listeService as $service) {
         $util = new Utilisateur();
         $util->setMatUtil("LS_" . $service->getCodeService());
         $util->setNomUtil("Libre service " . $service->getCodeService());
         $util->setServiceUtil($service);
         $em->persist($util);
     }
     $em->flush();
     unset($listeService);
     $output->writeln("OK");
     // Mise à jour de la colonne "niveauVIP"
     $output->writeln('Mise à jour de la colonne "niveauVIP"...');
     $listeVIP = $em->getRepository('EVPOSaffectationBundle:Utilisateur')->getVIP();
     foreach ($listeVIP as $vip) {
         $vip->setNiveauVIP('');
         $em->persist($vip);
     }
     unset($listeVIP);
     $fileName = "/home/data/evpos/" . $env . "/gparc/util_vip.csv";
     $output->write("- Recherche du fichier " . $fileName . "... ");
     if (file_exists($fileName)) {
         $output->writeln("OK");
         $csvFile = fopen($fileName, 'r');
         $nbLine = 0;
         while (($data = fgetcsv($csvFile, 0, ';')) !== FALSE) {
             if ($nbLine > 0) {
                 $mat = trim($data[0]);
                 $niveauVIP = trim($data[1]);
                 $utilisateur = $em->getRepository('EVPOSaffectationBundle:Utilisateur')->getUtilisateur($mat);
                 if ($utilisateur !== NULL) {
                     $utilisateur->setNiveauVIP($niveauVIP);
                     $em->persist($utilisateur);
                 }
             }
             $nbLine++;
         }
     } else {
         $output->writeln("Non trouvé");
     }
     $em->flush();
     fclose($csvFile);
     $output->writeln("OK");
     $output->writeln("Fin du traitement");
     oci_close($this->ORA);
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $em = $this->getContainer()->get('doctrine')->getManager();
     if (strpos(getcwd(), "prod") !== false) {
         $env = "prod";
     } else {
         $env = "dev";
     }
     $output->writeln("*** Import des postes ***");
     // Préparation des données
     $output->write("Préparation des données existantes... ");
     $listePoste = $em->getRepository('EVPOSaffectationBundle:Poste')->findAll();
     foreach ($listePoste as $poste) {
         $poste->setLicenceW8(FALSE);
         $poste->delListeUtilisateurs();
         $poste->setExisteGparc(FALSE);
     }
     $em->flush();
     unset($listePoste);
     $output->writeln("OK");
     // Lecture du fichier CSV extrait de GPARC
     $output->write("Lecture du fichier des postes (" . $env . ")... ");
     $fileName = "/home/data/evpos/" . $env . "/gparc/gparc_prod_moca_01_materiel.csv";
     $csvFile = fopen($fileName, 'r');
     $nbLine = 0;
     $nbDoublon = 0;
     $serviceInconnu = $em->getRepository('EVPOSaffectationBundle:Service')->getService("?");
     $utilServiceInconnu = $em->getRepository('EVPOSaffectationBundle:Utilisateur')->getUtilisateur('LS_?');
     // Liste des hostnames rencontrés dans l'export GPARC, pour ne pas traiter deux fois les doublons
     $listeHostname = [];
     // Liste des utilisateurs trouvés dans l'export GPARC et inconnus de BAZA
     $listeUtilisateurInconnu = [];
     $listeServiceRhErreur = [];
     $listeServiceErreur = [];
     while (($data = fgetcsv($csvFile, 0, ';')) !== FALSE) {
         if ($nbLine > 0) {
             $hostname = trim(strtoupper($data[3]));
             if ($hostname != "-" && in_array($hostname, $listeHostname) !== TRUE) {
                 $listeHostname[] = $hostname;
                 $codeService = $data[1];
                 $codeMateriel = $data[2];
                 $statut = $data[4];
                 $modele = $data[6];
                 $categorie = $data[7];
                 $licenceW8 = $data[8];
                 $ssd = $data[9];
                 $codeSirh = $data[11];
                 $localisation = $data[12];
                 $matUtil = strtoupper($data[13]);
                 $commentaire = $data[15];
                 $typeUsage = $data[16];
                 $typeReseau = $data[21];
                 $master = $data[22];
                 $avancementMigMoca = $data[23];
                 if ($hostname !== "") {
                     // Recherche si le poste existe
                     $poste = $em->getRepository('EVPOSaffectationBundle:Poste')->find($hostname);
                     if ($poste === NULL) {
                         // Création d'un nouveau poste
                         $poste = new Poste();
                         $poste->setHostname($hostname);
                     }
                     // Update des caractéristiques du poste
                     $poste->setCodeMateriel($codeMateriel);
                     $poste->setCategorie($categorie);
                     $poste->setStatut($statut);
                     $poste->setModele($modele);
                     $poste->setCategorie($categorie);
                     $poste->setLocalisation($localisation);
                     $poste->setCommentaire($commentaire);
                     $poste->setTypeUsage($typeUsage);
                     $poste->setExisteGparc(TRUE);
                     $poste->setTypeReseau($typeReseau);
                     $poste->setMaster($master);
                     switch ($licenceW8) {
                         case "OUI":
                             $poste->setLicenceW8(TRUE);
                             break;
                         default:
                             $poste->setLicenceW8(FALSE);
                     }
                     switch ($ssd) {
                         case "OUI":
                             $poste->setSSD(TRUE);
                             break;
                         default:
                             $poste->setSSD(FALSE);
                     }
                     $poste->setAvancementMigMoca($avancementMigMoca);
                     // Mise à jour du service
                     $service = $em->getRepository('EVPOSaffectationBundle:Service')->getServiceSirh($codeSirh);
                     if ($service === NULL) {
                         // Service non trouvé dans SIRH
                         $listeServiceRhErreur[$codeSirh] = TRUE;
                         $service = $em->getRepository('EVPOSaffectationBundle:Service')->getService($codeService);
                     }
                     if ($service !== NULL) {
                         $poste->setService($service);
                     } else {
                         // Service non trouvé
                         $listeServiceErreur[$codeService] = TRUE;
                         $poste->setService(NULL);
                     }
                     // Recherche de l'utilisateur
                     $util = $em->getRepository('EVPOSaffectationBundle:Utilisateur')->find($matUtil);
                     if ($util === NULL & $service !== NULL) {
                         $util = $em->getRepository('EVPOSaffectationBundle:Utilisateur')->find("LS_" . $service->getCodeService());
                     }
                     if ($util !== NULL) {
                         $poste->addListeUtilisateur($util);
                     } else {
                         $listeUtilisateurInconnu[] = $matUtil;
                     }
                     $em->persist($poste);
                 }
             } else {
                 // Le hostname est "-" ou en double
                 $nbDoublon++;
             }
         }
         $nbLine++;
     }
     fclose($csvFile);
     $em->flush();
     unset($listeHostname);
     // Enregistrement des erreurs
     foreach (array_keys($listeServiceRhErreur) as $erreur) {
         $erreurServiceInconnu = new CtrlServiceInconnu();
         $erreurServiceInconnu->setCodeSirh($erreur);
         $erreurServiceInconnu->setRemarque("Code RH non trouvé, mais utilisé par un poste");
         $em->persist($serviceInconnu);
     }
     foreach (array_keys($listeServiceErreur) as $erreur) {
         $erreurServiceInconnu = new CtrlServiceInconnu();
         $erreurServiceInconnu->setCodeService($erreur);
         $erreurServiceInconnu->setRemarque("Préfixe AD non trouvé, mais utilisé par un poste");
         $em->persist($erreurServiceInconnu);
     }
     $em->flush();
     $output->writeln("OK (" . $nbLine . " lignes - " . $nbDoublon . " doublons)");
     $output->writeln("*** Affectation des postes sans service au service de leur Utilisateur ***");
     $postesSansService = $em->getRepository('EVPOSaffectationBundle:Poste')->getPostesSansService();
     foreach ($postesSansService as $poste) {
         foreach ($poste->getListeUtilisateurs() as $user) {
             $service = $user->getServiceUtil();
             $poste->setService($service);
             $output->write('_');
         }
         if ($poste->getService() === NULL) {
             $poste->setService($serviceInconnu);
             $poste->addListeUtilisateur($utilServiceInconnu);
             $output->write('?');
         }
         $em->persist($poste);
     }
     $output->writeln("OK");
     unset($postesSansService);
     $output->writeln("Fin de report");
     $em->flush();
     $output->writeln("Validation des modifications");
     // Enregistrement des utilisateurs inconnus
     $output->write("Enregistrement des erreurs... ");
     $listeErreur = $em->getRepository('EVPOS\\affectationBundle\\Entity\\CtrlUtilisateurInconnu')->findAll();
     foreach ($listeErreur as $erreur) {
         $em->remove($erreur);
     }
     $em->flush();
     unset($listeErreur);
     foreach (array_unique($listeUtilisateurInconnu) as $matErreur) {
         $erreur = new CtrlUtilisateurInconnu();
         $erreur->setMatUtil($matErreur);
         $erreur->setCommentaire("Matricule trouvé lors de l'import des postes GPARC, mais pas dans BAZA.");
         $em->persist($erreur);
     }
     $em->flush();
     unset($listeUtilisateurInconnu);
     $output->writeln("OK");
     // Suppression des postes ne figurant pas dans la liste extraite de GPARC
     $output->write("Suppression des postes non référencés dans GPARC...");
     $listePoste = $em->getRepository('EVPOSaffectationBundle:Poste')->findNonGparc();
     foreach ($listePoste as $poste) {
         $output->write(".");
         $em->remove($poste);
     }
     $em->flush();
     unset($listePoste);
     $output->writeln("OK");
     // Import des équipements liés
     $output->writeln("*** Import des équipements liés ***");
     $output->write("Suppression des équipements existants... ");
     $listeEquipement = $em->getRepository('EVPOSaffectationBundle:Equipement')->findAll();
     foreach ($listeEquipement as $equipement) {
         $em->remove($equipement);
     }
     $em->flush();
     unset($listeEquipement);
     $output->writeln("OK");
     // Lecture du fichier CSV extrait de GPARC
     $output->write("Lecture du fichier des équipements liés... ");
     $fileName = [];
     $fileName[] = "/home/data/evpos/" . $env . "/gparc/gparc_prod_moca_02_materiels-lies.csv";
     $fileName[] = "/home/data/evpos/" . $env . "/gparc/gparc_prod_moca_03_materiels-lies-montant.csv";
     // Liste des différents codes matériel, pour éviter les doublons
     $listeCodeMateriel = [];
     foreach ($fileName as $file) {
         $output->write($file . " ");
         $csvFile = fopen($file, 'r');
         $nbLine = 0;
         $nbDoublon = 0;
         while (($data = fgetcsv($csvFile, 0, ';')) !== FALSE) {
             if ($nbLine > 0) {
                 $hostname = strtoupper(trim($data[0]));
                 if ($hostname != "") {
                     $codeMateriel = strtoupper(trim($data[1]));
                     if (in_array($codeMateriel, $listeCodeMateriel)) {
                         // Le code a déjà été rencontré
                         $nbDoublon++;
                     } else {
                         if ($categorie != "" && $codeMateriel != "-") {
                             // Le code matériel n'avais jamais été rencontré
                             // et la catégorie est renseignée
                             $listeCodeMateriel[] = $codeMateriel;
                             $categorie = trim($data[2]);
                             $modele = trim($data[3]);
                             $equipement = new Equipement();
                             $equipement->setCodeMateriel($codeMateriel);
                             $equipement->setCategorie($categorie);
                             $equipement->setModele($modele);
                             // recherche du poste lié
                             $poste = $em->getRepository('EVPOS\\affectationBundle\\Entity\\Poste')->find($hostname);
                             if ($poste !== NULL) {
                                 $equipement->setPoste($poste);
                                 $em->persist($equipement);
                             }
                         }
                     }
                 }
             }
             $nbLine++;
         }
         fclose($csvFile);
     }
     unset($listeCodeMateriel);
     $em->flush();
     $output->writeln("OK (" . $nbDoublon . " doublons)");
     $output->write("Mise à jour du nombre de postes par service... ");
     $listeService = $em->getRepository('EVPOS\\affectationBundle\\Entity\\Service')->findAll();
     foreach ($listeService as $service) {
         $service->setNbPoste($service->getListePostes()->count());
         $em->persist($service);
     }
     unset($listeService);
     $em->flush();
     $output->writeln("OK");
     $output->write("Mise à jour du nombre de poste par direction... ");
     $listeDirection = $em->getRepository('EVPOS\\affectationBundle\\Entity\\direction')->findAll();
     foreach ($listeDirection as $direction) {
         $nbPoste = 0;
         foreach ($direction->getListeServices() as $service) {
             $nbPoste += $service->getNbPoste();
         }
         $direction->setNbPoste($nbPoste);
         $em->persist($direction);
     }
     unset($listeDirection);
     $em->flush();
     $output->writeln("OK");
     $output->writeln("Fin du traitement");
 }