Loading module/Etudiant/src/Controller/EtudiantController.php +26 −14 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ use Etudiant\Entity\Db\Etudiant; use Etudiant\Service\AnneeUnivIA\AnneeUnivIAServiceAwareTrait; use Etudiant\Service\ComposanteIA\ComposanteIAServiceAwareTrait; use Etudiant\Service\CycleIA\CycleIAServiceAwareTrait; use Etudiant\Service\Etablissement\EtablissementServiceAwareTrait; use Etudiant\Service\EtablissementIA\EtablissementIAServiceAwareTrait; use Etudiant\Service\Etudiant\EtudiantServiceAwareTrait; use Laminas\Mvc\Controller\AbstractActionController; Loading @@ -24,6 +25,7 @@ class EtudiantController extends AbstractActionController use EtablissementIAServiceAwareTrait; use ComposanteIAServiceAwareTrait; use CycleIAServiceAwareTrait; use EtablissementServiceAwareTrait; public function indexAction(): ViewModel { Loading Loading @@ -126,19 +128,28 @@ class EtudiantController extends AbstractActionController $warning = []; $messages = []; $etablissement = null; $etablissementAsOptions = $this->getEtablissementService()->getEtablissementAsOptions(); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $file = $request->getFiles(); $etablissement = (isset($data['etablissement']) and $data['etablissement'] != '') ? $this->getEtablissementService()->getEtablissement($data['etablissement']) : null; $fichier_path = $file['file']['tmp_name']; $messages [] = "Traitement du fichier " . $file['file']['name']; //reading $array = []; if ($fichier_path == null or $fichier_path == '') { if($etablissement == null) { $error[] = "Aucun établissement sélectionné !"; }elseif ($fichier_path == null or $fichier_path == '') { $error[] = "Aucun fichier !"; } else { $all = file_get_contents($fichier_path); $encoding = mb_detect_encoding($all, 'UTF-8, ISO-8859-1'); $handle = fopen($fichier_path, "r"); Loading @@ -152,6 +163,7 @@ class EtudiantController extends AbstractActionController }, $content); } $messages [] = "Traitement du fichier " . $file['file']['name']; $messages [] = sizeof($array) . " lignes lues."; } Loading @@ -161,8 +173,8 @@ class EtudiantController extends AbstractActionController $error[] = "Le fichier ne contient pas de données."; } else { $champs = ['source_id', 'nom', 'prenom', 'numero_etudiant', 'email', 'login', 'annee', 'etablissement', 'composante', 'cycle', 'diplome', 'Formation']; // champs obligatoires $champs = [ 'nom', 'prenom', 'email', 'cycle', 'diplome']; $champs = array_map('strtolower', $champs); $array[0] = array_map('strtolower', $array[0]); $ind_champs = []; Loading @@ -181,7 +193,14 @@ class EtudiantController extends AbstractActionController foreach ($champs as $champ) { $etudiant [$champ] = $line[$ind_champs[$champ]]; } $etudiant['source_id'] = $etablissement->getSigle(); $etudiant['id'] = $etudiant['source_id'] . '_' . $etudiant['email']; $etudiant['numero_etudiant'] = '' ; $etudiant['login'] = '' ; $etudiant['annee'] = Etudiant::getAnneeDate(); $etudiant['etablissement'] = $etablissement->getSigle() . ' - ' . $etablissement->getLibelle(); $etudiant['composante'] = ''; $etudiant['formation'] = ''; $etudiants[] = $etudiant; } Loading @@ -192,19 +211,12 @@ class EtudiantController extends AbstractActionController } } $title = "Importer des étudiants (import)"; return new ViewModel([ 'title' => $title, 'error' => $error, 'warning' => $warning, 'messages' => $messages, ]); } $vm = new ViewModel([ 'title' => "Importer des étudiants (selection)", 'title' => "Importer des étudiants", 'etablissement' => $etablissement, 'etablissementAsOptions' => $etablissementAsOptions, 'error' => $error, 'warning' => $warning, 'messages' => $messages, Loading module/Etudiant/src/Controller/EtudiantControllerFactory.php +3 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ namespace Etudiant\Controller; use Etudiant\Service\AnneeUnivIA\AnneeUnivIAService; use Etudiant\Service\ComposanteIA\ComposanteIAService; use Etudiant\Service\CycleIA\CycleIAService; use Etudiant\Service\Etablissement\EtablissementService; use Etudiant\Service\EtablissementIA\EtablissementIAService; use Etudiant\Service\Etudiant\EtudiantService; use Etudiant\Service\InscriptionAdministrative\InscriptionAdministrativeService; Loading @@ -26,6 +27,7 @@ class EtudiantControllerFactory $etablissementIAService = $container->get(EtablissementIAService::class); $composanteIAService = $container->get(ComposanteIAService::class); $cycleIAService = $container->get(CycleIAService::class); $etablissementService = $container->get(EtablissementService::class); $controller = new EtudiantController; $controller->setEtudiantService($etudiantService); Loading @@ -33,6 +35,7 @@ class EtudiantControllerFactory $controller->setEtablissementIAService($etablissementIAService); $controller->setComposanteIAService($composanteIAService); $controller->setCycleIAService($cycleIAService); $controller->setEtablissementService($etablissementService); return $controller; } Loading module/Etudiant/src/Service/Etablissement/EtablissementService.php +2 −1 Original line number Diff line number Diff line Loading @@ -70,7 +70,8 @@ class EtablissementService $etablissements = $this->getEtablissements(); $options = []; foreach ($etablissements as $etablissement) { $options[$etablissement->getId()] = $etablissement->getLibelle(); /** @var Etablissement $etablissement */ $options[$etablissement->getId()] = $etablissement->getSigle() . ' - ' . $etablissement->getLibelle(); } return $options; } Loading module/Etudiant/src/Service/Etudiant/EtudiantService.php +3 −3 Original line number Diff line number Diff line Loading @@ -327,9 +327,9 @@ class EtudiantService } } } $messages[] = "Création de " . $nbCreationEtudiant . " étudiants"; $messages[] = "Mise à jour de " . $nbMajEtudiant . " étudiants"; if ($nbMajIA > 0) $messages[] = "Mise à jour de " . $nbMajIA . " inscriptions administratives"; $messages[] = "Création de " . $nbCreationEtudiant . " étudiant(s)"; $messages[] = "Mise à jour de " . $nbMajEtudiant . " étudiant(s)"; if ($nbMajIA > 0) $messages[] = "Mise à jour de " . $nbMajIA . " inscription(s) administrative(s)"; return $messages; } Loading module/Etudiant/view/etudiant/etudiant/importer-etudiant.phtml +35 −2 Original line number Diff line number Diff line Loading @@ -3,10 +3,15 @@ /** * @see \Etudiant\Controller\EtudiantController::importerAction() * @var String $title * @var Etablissement $etablissement * @var String [] $etablissementAsOptions * @var array $error * @var array $warning * @var array $messages */ use Etudiant\Entity\Db\Etablissement; $this->headTitle($title); ?> Loading @@ -14,14 +19,42 @@ $this->headTitle($title); <?php echo $title ?> </h1> <div class="alert alert-primary"> <p> <strong>Attention:</strong> Le fichier doit être au format CSV et doit contenir les colonnes suivantes: </p> <ul> <li>Nom</li> <li>Prénom</li> <li>Email</li> <li>Cycle</li> <li>Diplôme</li> </ul> <p> L'importation se fera sur l'année en cours</p> </div> <br> <form action="<?php echo $this->url(); ?>" method="post" enctype="multipart/form-data"> <select name="etablissement" id="etablissement"> <option value="">Choisissez un établissement</option> <?php foreach ($etablissementAsOptions as $key => $libelle): ?> <option value="<?php echo $key; ?>" <?php if ($etablissement && $etablissement->getId() == $key): ?> selected <?php endif; ?> > <?php echo $libelle; ?> </option> <?php endforeach; ?> </select> <br><br> <label for="file">Choisissez le fichier à importer:</label> <input type="file" id="file" name="file"> <br><br> <input type="submit" value="Importer"> </form> <?php if ($error): ?> <div class="alert alert-danger"> <ul> Loading Loading
module/Etudiant/src/Controller/EtudiantController.php +26 −14 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ use Etudiant\Entity\Db\Etudiant; use Etudiant\Service\AnneeUnivIA\AnneeUnivIAServiceAwareTrait; use Etudiant\Service\ComposanteIA\ComposanteIAServiceAwareTrait; use Etudiant\Service\CycleIA\CycleIAServiceAwareTrait; use Etudiant\Service\Etablissement\EtablissementServiceAwareTrait; use Etudiant\Service\EtablissementIA\EtablissementIAServiceAwareTrait; use Etudiant\Service\Etudiant\EtudiantServiceAwareTrait; use Laminas\Mvc\Controller\AbstractActionController; Loading @@ -24,6 +25,7 @@ class EtudiantController extends AbstractActionController use EtablissementIAServiceAwareTrait; use ComposanteIAServiceAwareTrait; use CycleIAServiceAwareTrait; use EtablissementServiceAwareTrait; public function indexAction(): ViewModel { Loading Loading @@ -126,19 +128,28 @@ class EtudiantController extends AbstractActionController $warning = []; $messages = []; $etablissement = null; $etablissementAsOptions = $this->getEtablissementService()->getEtablissementAsOptions(); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $file = $request->getFiles(); $etablissement = (isset($data['etablissement']) and $data['etablissement'] != '') ? $this->getEtablissementService()->getEtablissement($data['etablissement']) : null; $fichier_path = $file['file']['tmp_name']; $messages [] = "Traitement du fichier " . $file['file']['name']; //reading $array = []; if ($fichier_path == null or $fichier_path == '') { if($etablissement == null) { $error[] = "Aucun établissement sélectionné !"; }elseif ($fichier_path == null or $fichier_path == '') { $error[] = "Aucun fichier !"; } else { $all = file_get_contents($fichier_path); $encoding = mb_detect_encoding($all, 'UTF-8, ISO-8859-1'); $handle = fopen($fichier_path, "r"); Loading @@ -152,6 +163,7 @@ class EtudiantController extends AbstractActionController }, $content); } $messages [] = "Traitement du fichier " . $file['file']['name']; $messages [] = sizeof($array) . " lignes lues."; } Loading @@ -161,8 +173,8 @@ class EtudiantController extends AbstractActionController $error[] = "Le fichier ne contient pas de données."; } else { $champs = ['source_id', 'nom', 'prenom', 'numero_etudiant', 'email', 'login', 'annee', 'etablissement', 'composante', 'cycle', 'diplome', 'Formation']; // champs obligatoires $champs = [ 'nom', 'prenom', 'email', 'cycle', 'diplome']; $champs = array_map('strtolower', $champs); $array[0] = array_map('strtolower', $array[0]); $ind_champs = []; Loading @@ -181,7 +193,14 @@ class EtudiantController extends AbstractActionController foreach ($champs as $champ) { $etudiant [$champ] = $line[$ind_champs[$champ]]; } $etudiant['source_id'] = $etablissement->getSigle(); $etudiant['id'] = $etudiant['source_id'] . '_' . $etudiant['email']; $etudiant['numero_etudiant'] = '' ; $etudiant['login'] = '' ; $etudiant['annee'] = Etudiant::getAnneeDate(); $etudiant['etablissement'] = $etablissement->getSigle() . ' - ' . $etablissement->getLibelle(); $etudiant['composante'] = ''; $etudiant['formation'] = ''; $etudiants[] = $etudiant; } Loading @@ -192,19 +211,12 @@ class EtudiantController extends AbstractActionController } } $title = "Importer des étudiants (import)"; return new ViewModel([ 'title' => $title, 'error' => $error, 'warning' => $warning, 'messages' => $messages, ]); } $vm = new ViewModel([ 'title' => "Importer des étudiants (selection)", 'title' => "Importer des étudiants", 'etablissement' => $etablissement, 'etablissementAsOptions' => $etablissementAsOptions, 'error' => $error, 'warning' => $warning, 'messages' => $messages, Loading
module/Etudiant/src/Controller/EtudiantControllerFactory.php +3 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ namespace Etudiant\Controller; use Etudiant\Service\AnneeUnivIA\AnneeUnivIAService; use Etudiant\Service\ComposanteIA\ComposanteIAService; use Etudiant\Service\CycleIA\CycleIAService; use Etudiant\Service\Etablissement\EtablissementService; use Etudiant\Service\EtablissementIA\EtablissementIAService; use Etudiant\Service\Etudiant\EtudiantService; use Etudiant\Service\InscriptionAdministrative\InscriptionAdministrativeService; Loading @@ -26,6 +27,7 @@ class EtudiantControllerFactory $etablissementIAService = $container->get(EtablissementIAService::class); $composanteIAService = $container->get(ComposanteIAService::class); $cycleIAService = $container->get(CycleIAService::class); $etablissementService = $container->get(EtablissementService::class); $controller = new EtudiantController; $controller->setEtudiantService($etudiantService); Loading @@ -33,6 +35,7 @@ class EtudiantControllerFactory $controller->setEtablissementIAService($etablissementIAService); $controller->setComposanteIAService($composanteIAService); $controller->setCycleIAService($cycleIAService); $controller->setEtablissementService($etablissementService); return $controller; } Loading
module/Etudiant/src/Service/Etablissement/EtablissementService.php +2 −1 Original line number Diff line number Diff line Loading @@ -70,7 +70,8 @@ class EtablissementService $etablissements = $this->getEtablissements(); $options = []; foreach ($etablissements as $etablissement) { $options[$etablissement->getId()] = $etablissement->getLibelle(); /** @var Etablissement $etablissement */ $options[$etablissement->getId()] = $etablissement->getSigle() . ' - ' . $etablissement->getLibelle(); } return $options; } Loading
module/Etudiant/src/Service/Etudiant/EtudiantService.php +3 −3 Original line number Diff line number Diff line Loading @@ -327,9 +327,9 @@ class EtudiantService } } } $messages[] = "Création de " . $nbCreationEtudiant . " étudiants"; $messages[] = "Mise à jour de " . $nbMajEtudiant . " étudiants"; if ($nbMajIA > 0) $messages[] = "Mise à jour de " . $nbMajIA . " inscriptions administratives"; $messages[] = "Création de " . $nbCreationEtudiant . " étudiant(s)"; $messages[] = "Mise à jour de " . $nbMajEtudiant . " étudiant(s)"; if ($nbMajIA > 0) $messages[] = "Mise à jour de " . $nbMajIA . " inscription(s) administrative(s)"; return $messages; } Loading
module/Etudiant/view/etudiant/etudiant/importer-etudiant.phtml +35 −2 Original line number Diff line number Diff line Loading @@ -3,10 +3,15 @@ /** * @see \Etudiant\Controller\EtudiantController::importerAction() * @var String $title * @var Etablissement $etablissement * @var String [] $etablissementAsOptions * @var array $error * @var array $warning * @var array $messages */ use Etudiant\Entity\Db\Etablissement; $this->headTitle($title); ?> Loading @@ -14,14 +19,42 @@ $this->headTitle($title); <?php echo $title ?> </h1> <div class="alert alert-primary"> <p> <strong>Attention:</strong> Le fichier doit être au format CSV et doit contenir les colonnes suivantes: </p> <ul> <li>Nom</li> <li>Prénom</li> <li>Email</li> <li>Cycle</li> <li>Diplôme</li> </ul> <p> L'importation se fera sur l'année en cours</p> </div> <br> <form action="<?php echo $this->url(); ?>" method="post" enctype="multipart/form-data"> <select name="etablissement" id="etablissement"> <option value="">Choisissez un établissement</option> <?php foreach ($etablissementAsOptions as $key => $libelle): ?> <option value="<?php echo $key; ?>" <?php if ($etablissement && $etablissement->getId() == $key): ?> selected <?php endif; ?> > <?php echo $libelle; ?> </option> <?php endforeach; ?> </select> <br><br> <label for="file">Choisissez le fichier à importer:</label> <input type="file" id="file" name="file"> <br><br> <input type="submit" value="Importer"> </form> <?php if ($error): ?> <div class="alert alert-danger"> <ul> Loading