Loading module/Etudiant/src/Controller/EtudiantController.php +12 −3 Original line number Diff line number Diff line Loading @@ -223,6 +223,8 @@ class EtudiantController extends AbstractActionController $error = []; $warning = []; $messages = []; $request = $this->getRequest(); if ($request->isPost()) { Loading @@ -230,7 +232,7 @@ class EtudiantController extends AbstractActionController $file = $request->getFiles(); $fichier_path = $file['file']['tmp_name']; $messages [] = "Traitement du fichier " . $file['file']['name']; //reading $array = []; if ($fichier_path == null or $fichier_path == '') { Loading @@ -248,6 +250,9 @@ class EtudiantController extends AbstractActionController return $a; }, $content); } $messages [] = sizeof($array) . " lignes lues."; } if (empty($error)) { Loading @@ -274,11 +279,13 @@ class EtudiantController extends AbstractActionController foreach ($champs as $champ) { $etudiant [$champ] = $line[$ind_champs[$champ]]; } $etudiant['id'] = $etudiant['source_id'] . $etudiant['email']; $etudiant['id'] = $etudiant['source_id'] . '_' . $etudiant['email']; $etudiants[] = $etudiant; } // $this->getEtudiantService()->importEtudiants($etudiants); foreach ($this->getEtudiantService()->importEtudiants($etudiants) as $message) { $messages[] = $message; } } } } Loading @@ -290,6 +297,7 @@ class EtudiantController extends AbstractActionController 'title' => $title, 'error' => $error, 'warning' => $warning, 'messages' => $messages, ]); } Loading @@ -297,6 +305,7 @@ class EtudiantController extends AbstractActionController 'title' => "Importer des étudiants (selection)", 'error' => $error, 'warning' => $warning, 'messages' => $messages, ]); return $vm; Loading module/Etudiant/src/Entity/Db/Etudiant.php +7 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,11 @@ class Etudiant implements ResourceInterface, IsSynchronisableInterface return $this->id; } public function setId(?string $id): void { $this->id = $id; } public function getUtilisateur(): ?AbstractUser { return $this->utilisateur; Loading Loading @@ -104,6 +109,8 @@ class Etudiant implements ResourceInterface, IsSynchronisableInterface return $this->numeroEtudiant; } public function setNumeroEtudiant(?string $numeroEtudiant): void { $this->numeroEtudiant = $numeroEtudiant; Loading module/Etudiant/src/Entity/Db/Mapping/Etudiant.Entity.Db.Etudiant.dcm.xml +2 −2 Original line number Diff line number Diff line Loading @@ -18,10 +18,10 @@ <one-to-many field="inscriptions" target-entity="Atelier\Entity\Db\Inscription" mapped-by="etudiant"/> <one-to-many field="inscriptionsAdministratives" target-entity="Etudiant\Entity\Db\InscriptionAdministrative" mapped-by="etudiant"/> <!-- DB IMPORT ############################# --> <field name="createdOn" column="created_on" type="datetime"/> <field name="createdOn" column="created_on" type="datetime" nullable="true"/> <field name="updatedOn" column="updated_on" type="datetime"/> <field name="deletedOn" column="deleted_on" type="datetime"/> <field name="sourceId" column="source_id" type="string" length="128" nullable="true"/> </entity> </doctrine-mapping> module/Etudiant/src/Service/Etudiant/EtudiantService.php +64 −3 Original line number Diff line number Diff line Loading @@ -172,7 +172,7 @@ class EtudiantService $keysEtudiant = ['id']; $qb = $this->createQueryBuilder(); $qb->join('etudiant.inscriptionsAdministratives', 'ia'); $qb->leftJoin('etudiant.inscriptionsAdministratives', 'ia'); foreach ($params as $key => $value) { if (in_array($key, $keysIA)) { Loading @@ -191,11 +191,72 @@ class EtudiantService /** IMPORT manuel (CSV) */ public function importEtudiants(array $etudiants): void /** * @param array $etudiants * @return string[] */ public function importEtudiants(array $etudiants): array { foreach ($etudiants as $etudiant) { $messages = []; $nbCreation = 0; $nbMaj = 0; foreach ($etudiants as $etudiant) { $e = $this->getEtudiant($etudiant['id']); if($e === null) { $e = new Etudiant(); $e->setId($etudiant['id']); $e->setSourceId($etudiant['source_id']); $e->setLogin($etudiant['login']); $e->setNom($etudiant['nom']); $e->setPrenom($etudiant['prenom']); $e->setEmail($etudiant['email']); $e->setNumeroEtudiant($etudiant['numero_etudiant']); $e->setInsertedOn(new \DateTime()); $this->create($e); $nbCreation ++; }else{ $isMaj = false; if($etudiant['source_id'] != $e->getSourceId()) { $e->setSourceId($etudiant['source_id']); $isMaj = true; } if($etudiant['login'] != $e->getLogin()) { $e->setLogin($etudiant['login']); $isMaj = true; } if($etudiant['nom'] != $e->getNom()) { $e->setNom($etudiant['nom']); $isMaj = true; } if($etudiant['prenom'] != $e->getPrenom()) { $e->setPrenom($etudiant['prenom']); $isMaj = true; } if($etudiant['email'] != $e->getEmail()) { $e->setEmail($etudiant['email']); $isMaj = true; } if($etudiant['numero_etudiant'] != $e->getNumeroEtudiant()) { $e->setNumeroEtudiant($etudiant['numero_etudiant']); $isMaj = true; } if($isMaj) { $this->update($e); $nbMaj++; } } } $messages[] = "Création de " . $nbCreation . " étudiants"; $messages[] = "Mise à jour de " . $nbMaj . " étudiants"; return $messages; } } module/Etudiant/view/etudiant/etudiant/importer-etudiant.phtml +24 −1 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ * @var String $title * @var array $error * @var array $warning * @var array $messages */ $this->headTitle($title); ?> Loading @@ -19,6 +20,8 @@ $this->headTitle($title); <input type="submit" value="Importer"> </form> <?php if ($error): ?> <div class="alert alert-danger"> <ul> Loading @@ -28,3 +31,23 @@ $this->headTitle($title); </ul> </div> <?php endif; ?> <?php if ($warning): ?> <div class="alert alert-warning"> <ul> <?php foreach ($warning as $w): ?> <li><?php echo $w; ?></li> <?php endforeach; ?> </ul> </div> <?php endif; ?> <?php if ($messages): ?> <div class="alert alert-info"> <ul> <?php foreach ($messages as $m): ?> <li><?php echo $m; ?></li> <?php endforeach; ?> </ul> </div> <?php endif; ?> Loading
module/Etudiant/src/Controller/EtudiantController.php +12 −3 Original line number Diff line number Diff line Loading @@ -223,6 +223,8 @@ class EtudiantController extends AbstractActionController $error = []; $warning = []; $messages = []; $request = $this->getRequest(); if ($request->isPost()) { Loading @@ -230,7 +232,7 @@ class EtudiantController extends AbstractActionController $file = $request->getFiles(); $fichier_path = $file['file']['tmp_name']; $messages [] = "Traitement du fichier " . $file['file']['name']; //reading $array = []; if ($fichier_path == null or $fichier_path == '') { Loading @@ -248,6 +250,9 @@ class EtudiantController extends AbstractActionController return $a; }, $content); } $messages [] = sizeof($array) . " lignes lues."; } if (empty($error)) { Loading @@ -274,11 +279,13 @@ class EtudiantController extends AbstractActionController foreach ($champs as $champ) { $etudiant [$champ] = $line[$ind_champs[$champ]]; } $etudiant['id'] = $etudiant['source_id'] . $etudiant['email']; $etudiant['id'] = $etudiant['source_id'] . '_' . $etudiant['email']; $etudiants[] = $etudiant; } // $this->getEtudiantService()->importEtudiants($etudiants); foreach ($this->getEtudiantService()->importEtudiants($etudiants) as $message) { $messages[] = $message; } } } } Loading @@ -290,6 +297,7 @@ class EtudiantController extends AbstractActionController 'title' => $title, 'error' => $error, 'warning' => $warning, 'messages' => $messages, ]); } Loading @@ -297,6 +305,7 @@ class EtudiantController extends AbstractActionController 'title' => "Importer des étudiants (selection)", 'error' => $error, 'warning' => $warning, 'messages' => $messages, ]); return $vm; Loading
module/Etudiant/src/Entity/Db/Etudiant.php +7 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,11 @@ class Etudiant implements ResourceInterface, IsSynchronisableInterface return $this->id; } public function setId(?string $id): void { $this->id = $id; } public function getUtilisateur(): ?AbstractUser { return $this->utilisateur; Loading Loading @@ -104,6 +109,8 @@ class Etudiant implements ResourceInterface, IsSynchronisableInterface return $this->numeroEtudiant; } public function setNumeroEtudiant(?string $numeroEtudiant): void { $this->numeroEtudiant = $numeroEtudiant; Loading
module/Etudiant/src/Entity/Db/Mapping/Etudiant.Entity.Db.Etudiant.dcm.xml +2 −2 Original line number Diff line number Diff line Loading @@ -18,10 +18,10 @@ <one-to-many field="inscriptions" target-entity="Atelier\Entity\Db\Inscription" mapped-by="etudiant"/> <one-to-many field="inscriptionsAdministratives" target-entity="Etudiant\Entity\Db\InscriptionAdministrative" mapped-by="etudiant"/> <!-- DB IMPORT ############################# --> <field name="createdOn" column="created_on" type="datetime"/> <field name="createdOn" column="created_on" type="datetime" nullable="true"/> <field name="updatedOn" column="updated_on" type="datetime"/> <field name="deletedOn" column="deleted_on" type="datetime"/> <field name="sourceId" column="source_id" type="string" length="128" nullable="true"/> </entity> </doctrine-mapping>
module/Etudiant/src/Service/Etudiant/EtudiantService.php +64 −3 Original line number Diff line number Diff line Loading @@ -172,7 +172,7 @@ class EtudiantService $keysEtudiant = ['id']; $qb = $this->createQueryBuilder(); $qb->join('etudiant.inscriptionsAdministratives', 'ia'); $qb->leftJoin('etudiant.inscriptionsAdministratives', 'ia'); foreach ($params as $key => $value) { if (in_array($key, $keysIA)) { Loading @@ -191,11 +191,72 @@ class EtudiantService /** IMPORT manuel (CSV) */ public function importEtudiants(array $etudiants): void /** * @param array $etudiants * @return string[] */ public function importEtudiants(array $etudiants): array { foreach ($etudiants as $etudiant) { $messages = []; $nbCreation = 0; $nbMaj = 0; foreach ($etudiants as $etudiant) { $e = $this->getEtudiant($etudiant['id']); if($e === null) { $e = new Etudiant(); $e->setId($etudiant['id']); $e->setSourceId($etudiant['source_id']); $e->setLogin($etudiant['login']); $e->setNom($etudiant['nom']); $e->setPrenom($etudiant['prenom']); $e->setEmail($etudiant['email']); $e->setNumeroEtudiant($etudiant['numero_etudiant']); $e->setInsertedOn(new \DateTime()); $this->create($e); $nbCreation ++; }else{ $isMaj = false; if($etudiant['source_id'] != $e->getSourceId()) { $e->setSourceId($etudiant['source_id']); $isMaj = true; } if($etudiant['login'] != $e->getLogin()) { $e->setLogin($etudiant['login']); $isMaj = true; } if($etudiant['nom'] != $e->getNom()) { $e->setNom($etudiant['nom']); $isMaj = true; } if($etudiant['prenom'] != $e->getPrenom()) { $e->setPrenom($etudiant['prenom']); $isMaj = true; } if($etudiant['email'] != $e->getEmail()) { $e->setEmail($etudiant['email']); $isMaj = true; } if($etudiant['numero_etudiant'] != $e->getNumeroEtudiant()) { $e->setNumeroEtudiant($etudiant['numero_etudiant']); $isMaj = true; } if($isMaj) { $this->update($e); $nbMaj++; } } } $messages[] = "Création de " . $nbCreation . " étudiants"; $messages[] = "Mise à jour de " . $nbMaj . " étudiants"; return $messages; } }
module/Etudiant/view/etudiant/etudiant/importer-etudiant.phtml +24 −1 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ * @var String $title * @var array $error * @var array $warning * @var array $messages */ $this->headTitle($title); ?> Loading @@ -19,6 +20,8 @@ $this->headTitle($title); <input type="submit" value="Importer"> </form> <?php if ($error): ?> <div class="alert alert-danger"> <ul> Loading @@ -28,3 +31,23 @@ $this->headTitle($title); </ul> </div> <?php endif; ?> <?php if ($warning): ?> <div class="alert alert-warning"> <ul> <?php foreach ($warning as $w): ?> <li><?php echo $w; ?></li> <?php endforeach; ?> </ul> </div> <?php endif; ?> <?php if ($messages): ?> <div class="alert alert-info"> <ul> <?php foreach ($messages as $m): ?> <li><?php echo $m; ?></li> <?php endforeach; ?> </ul> </div> <?php endif; ?>