Commit d4d91db3 authored by Johnny Leveneur's avatar Johnny Leveneur
Browse files

modification import etudiant

parent 1a1c0144
Loading
Loading
Loading
Loading
+26 −14
Original line number Diff line number Diff line
@@ -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;
@@ -24,6 +25,7 @@ class EtudiantController extends AbstractActionController
    use EtablissementIAServiceAwareTrait;
    use ComposanteIAServiceAwareTrait;
    use CycleIAServiceAwareTrait;
    use EtablissementServiceAwareTrait;

    public function indexAction(): ViewModel
    {
@@ -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");
@@ -152,6 +163,7 @@ class EtudiantController extends AbstractActionController
                    }, $content);
                }

                $messages [] = "Traitement du fichier " . $file['file']['name'];
                $messages [] = sizeof($array) . " lignes lues.";

            }
@@ -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 = [];
@@ -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;
                        }
@@ -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,
+3 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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);
@@ -33,6 +35,7 @@ class EtudiantControllerFactory
        $controller->setEtablissementIAService($etablissementIAService);
        $controller->setComposanteIAService($composanteIAService);
        $controller->setCycleIAService($cycleIAService);
        $controller->setEtablissementService($etablissementService);

        return $controller;
    }
+2 −1
Original line number Diff line number Diff line
@@ -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;
    }
+3 −3
Original line number Diff line number Diff line
@@ -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;
    }
+35 −2
Original line number Diff line number Diff line
@@ -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);
?>

@@ -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>