public function ImportServeurAction() { set_time_limit(0); $em = $this->getDoctrine()->getEntityManager(); // $full_path = "//landesk-serveurs.intranet.cg59.fr/reports/"; $precedent = ""; $nouveau = 0; $maj = 0; $sanserial = 0; foreach (glob($full_path . "*.csv") as $csvfile) { } // $nomCsv = substr($csvfile,53); //+11 $nomCsv = substr($csvfile, strripos($csvfile, '/', -1)); $csv = new SplFileObject($csvfile, 'r'); $csv->setFlags(SplFileObject::READ_CSV); $csv->setCsvControl(',', '"', '"'); echo "Import du fichier " . $nomCsv . " <br><br>"; $nouveauServeur = false; $stringListeNouveauServeur = ''; $headers = '*****@*****.**'; $resultat = ''; $row = 1; foreach ($csv as $data) { if ($row == 1) { $eHost = 0; for ($i = 0; $i != 11; $i++) { switch ($data[$i]) { case "Service Pack": $eServicePack = $i; break; case "Nom du périphérique": $eHostname = $i; break; case "Nom d'OS": $eOs = $i; break; case "Numéro de série": $eNser = $i; break; case "Modèle": $eModel = $i; break; case "Nombre de processeurs": $eNbCpu = $i; break; case "Total d'octets": $eRam = $i; break; case "Type": $eTcpu = $i; break; case "Fabricant": $eConstructeur = $i; break; case "Coeurs par Processeurs": $eNbCoeurCpu = $i; break; case "Adresse": $eAdresse = $i; break; } } } if ($data[$eHost] != null) { //si data[0] est pas null c'est a dir le hostname if ($data[$eHostname] != '' && $data[$eNser] != '') { // si hostname ET numéro de serie existent ==> MAJ $row++; $hostname = strtoupper($data[$eHostname]); $os = $data[$eOs]; $Nser = $data[$eNser]; $Model = $data[$eModel]; $Constructeur = $data[$eConstructeur]; $Ram = $data[$eRam]; $NbCpu = $data[$eNbCpu]; $ServicePack = $data[$eServicePack]; $Tcpu = $data[$eTcpu]; $adresse = $data[$eAdresse]; $nbCoeurCpu = $data[$eNbCoeurCpu]; //$Hostname = $data[$eHostname]; if ($row > 2) { // pour passer l'entete du fichier // récupération du serveur par Numero de série if ($em->getRepository('DeveloppementCartopliBundle:Serveur')->getNumServeurByNser($Nser) != NULL) { $serveur = $em->getRepository('DeveloppementCartopliBundle:Serveur')->find($em->getRepository('DeveloppementCartopliBundle:Serveur')->getNumServeurByNser($Nser)); if ($Tcpu != NULL) { $serveur->setTypecpu($Tcpu); } else { $serveur->setTypecpu('Serveur Pas ou Plus dans Referentiel'); break; // DVI erreur a corriger plus tard } // positionne le cycle de vie pour les serveur importé en masse, sinon le laisser tel quel if (preg_match('#SRVSTOCK#i', $serveur->getHostname())) { $serveur->setCycleDeVie($em->getRepository('DeveloppementCartopliBundle:ListesNew')->find(256)); } $serveur->setHostname($hostname); $serveur->setOs($os); $serveur->setNbcpu($NbCpu); $serveur->setModele($Model); $serveur->setRam($Ram); $serveur->setConstructeur($Constructeur); $serveur->setSP($ServicePack); //nouv fonctionnalite $serveur->setadresseIP($adresse); $serveur->setNbcoeur($nbCoeurCpu); $em->persist($serveur); $em->flush(); $precedent = $hostname; $maj++; echo "Serveur MAJ : " . $hostname . " <br>"; } else { // numero de serie non trouvé // Si Hostname existe et numero de serie différent ; MAJ if ($em->getRepository('DeveloppementCartopliBundle:Serveur')->getNumServeurByHostname($hostname) != NULL) { $serveur = $em->getRepository('DeveloppementCartopliBundle:Serveur')->find($em->getRepository('DeveloppementCartopliBundle:Serveur')->getNumServeurByHostname($hostname)); if ($Tcpu != NULL) { $serveur->setTypecpu($Tcpu); } else { $serveur->setTypecpu('Serveur Pas ou Plus dans Referentiel'); } $serveur->setNser($Nser); $serveur->setOs($os); $serveur->setNbcpu($NbCpu); $serveur->setModele($Model); $serveur->setRam($Ram); $serveur->setConstructeur($Constructeur); $serveur->setSP($ServicePack); $serveur->setadresseIP($adresse); $serveur->setNbcoeur($nbCoeurCpu); $em->persist($serveur); $em->flush(); $precedent = $hostname; $maj++; echo "Serveur MAJ par Hostname (NSerie posant pb): " . $hostname . " <br>"; } else { // Sinon Nouveau serveur // Si Nser et Hostname alors nouvreau serveur $RackLocal = 128; $nouveauServeur = true; $serveur = new Serveur(); $serveur->setPerimetreCST($em->getRepository('DeveloppementCartopliBundle:ListesNew')->find(870)); $serveur->setcriticite($em->getRepository('DeveloppementCartopliBundle:ListesNew')->find(833)); $serveur->setcomplexite($em->getRepository('DeveloppementCartopliBundle:ListesNew')->find(829)); $serveur->setplageService($em->getRepository('DeveloppementCartopliBundle:ListesNew')->find(823)); $serveur->setCycledevie($em->getRepository('DeveloppementCartopliBundle:ListesNew')->find(371)); $serveur->setLocalisation($em->getRepository('DeveloppementCartopliBundle:ListesNew')->find(369)); $serveur->setType($em->getRepository('DeveloppementCartopliBundle:ListesNew')->find(366)); $serveur->setRackLocal($em->getRepository('DeveloppementCartopliBundle:Rack')->find(128)); $serveur->setOs($os); $serveur->setNbcpu($NbCpu); $serveur->setModele($Model); $serveur->setRam($Ram); $serveur->setConstructeur($Constructeur); $serveur->setNser($Nser); $serveur->setHostname($hostname); $serveur->setSP($ServicePack); //nouv fonctionnalite $serveur->setadresseIP($adresse); $serveur->setNbcoeur($nbCoeurCpu); $serveur->setHost($em->getRepository('DeveloppementCartopliBundle:ListesNew')->find(805)); // nouv SM $em->persist($serveur); $em->flush(); $nouveau++; echo "Nouveau Serveur : " . $hostname . " <br>"; $stringListeNouveauServeur = $stringListeNouveauServeur . $hostname . ", "; } } } // Row >2 } else { // Pas de Hostname ou Ner dans le fichier // if ($data[2]==''){ echo "Serveur sans numero de série : " . $hostname." <br>" ; } if ($data[$eNser] != '') { //// pas nser echo "Serveur sans Numéro de serie : " . $data[$eHostname] . "<br>"; $sanserial++; } else { // pas de Hostname ?! } } } // var_dump("Fichier imcomplet : Serveur ". $data[0] . " num ser ". $data[2] . " non trouvé <br>"); } // foreach ligne du fichier $row = $row - 2; // enlever entete et dernière ligne echo "<br>Fin de Fichier. ligne:" . abs($row) . " , dernier serveur traité :" . $precedent . "<br>"; echo $nouveau . " Nouveaux serveurs <br>"; echo $maj . " Serveurs traités <br> dont " . $sanserial . " sans numémro de série <br>"; foreach (glob($full_path . "*DVI - Export Serveur ID Landesk*.csv") as $csvfile) { } //$nomCsv = substr($csvfile,53); $nomCsv = substr($csvfile, strripos($csvfile, '/', -1)); $csv = new SplFileObject($csvfile, 'r'); $csv->setFlags(SplFileObject::READ_CSV); $csv->setCsvControl(',', '"', '"'); echo " <br><br> Import du fichier " . $nomCsv . " <br><br>"; $nouveauServeur = false; $stringListeNouveauServeur = ''; $headers = '*****@*****.**'; $resultat = ''; $row = 1; foreach ($csv as $data) { if ($row == 1) { $eHost = 0; for ($i = 0; $i != 9; $i++) { switch ($data[$i]) { case "Service Pack": $eServicePack = $i; break; case "Nom du périphérique": $eHostname = $i; break; case "Nom d'OS": $eOs = $i; break; case "Numéro de série": $eNser = $i; break; case "Modèle": $eModel = $i; break; case "Nombre de processeurs": $eNbCpu = $i; break; case "Total d'octets": $eRam = $i; break; case "Type": $eTcpu = $i; break; case "Fabricant": $eConstructeur = $i; break; } } } if ($data[$eHost] != null) { //si data[0] est pas null c'est a dir le hostname if ($data[$eHostname] != '' && $data[$eNser] != '') { // si hostname ET numéro de serie existent ==> MAJ $row++; $hostname = strtoupper($data[$eHostname]); $os = $data[$eOs]; $Nser = $data[$eNser]; $Model = $data[$eModel]; $Constructeur = $data[$eConstructeur]; $Ram = $data[$eRam]; $NbCpu = $data[$eNbCpu]; $ServicePack = $data[$eServicePack]; $Tcpu = $data[$eTcpu]; //$Hostname = $data[$eHostname]; if ($row > 2) { // pour passer l'entete du fichier // récupération du serveur par Numero de série if ($em->getRepository('DeveloppementCartopliBundle:Serveur')->getNumServeurByNser($Nser) != NULL) { $serveur = $em->getRepository('DeveloppementCartopliBundle:Serveur')->find($em->getRepository('DeveloppementCartopliBundle:Serveur')->getNumServeurByNser($Nser)); if ($Tcpu != NULL) { $serveur->setTypecpu($Tcpu); } else { $serveur->setTypecpu('Serveur Pas ou Plus dans Referentiel'); break; // DVI erreur a corriger plus tard } // positionne le cycle de vie pour les serveur importé en masse, sinon le laisser tel quel if (preg_match('#SRVSTOCK#i', $serveur->getHostname())) { $serveur->setCycleDeVie($em->getRepository('DeveloppementCartopliBundle:ListesNew')->find(256)); } $serveur->setHostname($hostname); $serveur->setOs($os); $serveur->setNbcpu($NbCpu); $serveur->setModele($Model); $serveur->setRam($Ram); $serveur->setConstructeur($Constructeur); $serveur->setSP($ServicePack); //nouv fonctionnalite $em->persist($serveur); $em->flush(); $precedent = $hostname; $maj++; echo "Serveur MAJ : " . $hostname . " <br>"; } else { // numero de serie non trouvé // Si Hostname existe et numero de serie différent ; MAJ if ($em->getRepository('DeveloppementCartopliBundle:Serveur')->getNumServeurByHostname($hostname) != NULL) { $serveur = $em->getRepository('DeveloppementCartopliBundle:Serveur')->find($em->getRepository('DeveloppementCartopliBundle:Serveur')->getNumServeurByHostname($hostname)); if ($Tcpu != NULL) { $serveur->setTypecpu($Tcpu); } else { $serveur->setTypecpu('Serveur Pas ou Plus dans Referentiel'); } $serveur->setNser($Nser); $serveur->setOs($os); $serveur->setNbcpu($NbCpu); $serveur->setModele($Model); $serveur->setRam($Ram); $serveur->setConstructeur($Constructeur); $serveur->setSP($ServicePack); $em->persist($serveur); $em->flush(); $precedent = $hostname; $maj++; echo "Serveur MAJ par Hostname (NSerie posant pb): " . $hostname . " <br>"; } else { // Sinon Nouveau serveur // Si Nser et Hostname alors nouvreau serveur $RackLocal = 128; $nouveauServeur = true; $serveur = new Serveur(); $serveur->setPerimetreCST($em->getRepository('DeveloppementCartopliBundle:ListesNew')->find(870)); $serveur->setcriticite($em->getRepository('DeveloppementCartopliBundle:ListesNew')->find(833)); $serveur->setcomplexite($em->getRepository('DeveloppementCartopliBundle:ListesNew')->find(829)); $serveur->setplageService($em->getRepository('DeveloppementCartopliBundle:ListesNew')->find(823)); $serveur->setCycledevie($em->getRepository('DeveloppementCartopliBundle:ListesNew')->find(371)); $serveur->setLocalisation($em->getRepository('DeveloppementCartopliBundle:ListesNew')->find(369)); $serveur->setType($em->getRepository('DeveloppementCartopliBundle:ListesNew')->find(366)); $serveur->setRackLocal($em->getRepository('DeveloppementCartopliBundle:Rack')->find(128)); $serveur->setOs($os); $serveur->setNbcpu($NbCpu); $serveur->setModele($Model); $serveur->setRam($Ram); $serveur->setConstructeur($Constructeur); $serveur->setNser($Nser); $serveur->setHostname($hostname); $serveur->setSP($ServicePack); //nouv fonctionnalite $serveur->setHost($em->getRepository('DeveloppementCartopliBundle:ListesNew')->find(805)); // nouv SM $em->persist($serveur); $em->flush(); $nouveau++; echo "Nouveau Serveur : " . $Hostname . " <br>"; $stringListeNouveauServeur = $stringListeNouveauServeur . $hostname . ", "; } } } // Row >2 } else { // Pas de Hostname ou Ner dans le fichier // if ($data[2]==''){ echo "Serveur sans numero de série : " . $hostname." <br>" ; } if ($data[$eNser] != '') { //// pas nser echo "Serveur sans Numéro de serie : " . $data[$eHostname] . "<br>"; $sanserial++; } else { // pas de Hostname ?! } } } // var_dump("Fichier imcomplet : Serveur ". $data[0] . " num ser ". $data[2] . " non trouvé <br>"); } // foreach ligne du fichier $row = $row - 2; // enlever entete et dernière ligne echo "<br>Fin de Fichier. ligne:" . abs($row) . " , dernier serveur traité :" . $precedent . "<br>"; echo $nouveau . " Nouveaux serveurs <br>"; echo $maj . " Serveurs traités <br> dont " . $sanserial . " sans numémro de série <br>"; ///RETOUR A LA POPUP///// return $this->render('DeveloppementCartopliBundle:Default:resultatImport.html.twig', array('resultat' => $resultat)); ///FIN RETOUR///// }