Commit 6f250725 authored by Johnny Leveneur's avatar Johnny Leveneur
Browse files

import étudiants stats

parent 0327e365
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -223,6 +223,8 @@ class EtudiantController extends AbstractActionController

        $error = [];
        $warning = [];
        $messages = [];

        $request = $this->getRequest();
        if ($request->isPost()) {

@@ -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 == '') {
@@ -248,6 +250,9 @@ class EtudiantController extends AbstractActionController
                        return $a;
                    }, $content);
                }

                $messages [] = sizeof($array) . " lignes lues.";

            }

            if (empty($error)) {
@@ -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;
                        }
                    }
                }
            }
@@ -290,6 +297,7 @@ class EtudiantController extends AbstractActionController
                'title' => $title,
                'error' => $error,
                'warning' => $warning,
                'messages' => $messages,
            ]);
        }

@@ -297,6 +305,7 @@ class EtudiantController extends AbstractActionController
            'title' => "Importer des étudiants (selection)",
            'error' => $error,
            'warning' => $warning,
            'messages' => $messages,
        ]);

        return $vm;
+7 −0
Original line number Diff line number Diff line
@@ -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;
@@ -104,6 +109,8 @@ class Etudiant implements ResourceInterface, IsSynchronisableInterface
        return $this->numeroEtudiant;
    }



    public function setNumeroEtudiant(?string $numeroEtudiant): void
    {
        $this->numeroEtudiant = $numeroEtudiant;
+2 −2
Original line number Diff line number Diff line
@@ -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>
+64 −3
Original line number Diff line number Diff line
@@ -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)) {
@@ -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;
    }
}
+24 −1
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@
 * @var String $title
 * @var array $error
 * @var array $warning
 * @var array $messages
 */
$this->headTitle($title);
?>
@@ -19,6 +20,8 @@ $this->headTitle($title);
    <input type="submit" value="Importer">
</form>



<?php if ($error): ?>
    <div class="alert alert-danger">
        <ul>
@@ -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; ?>