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

ajout filtre anneeuniv sur les sessions

parent d3da8598
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -55,6 +55,11 @@ class AtelierController extends AbstractActionController
        $archivageAsOptions = ['0' => 'Non historisés', '1' => 'Historisés'];
        $anneeUnivAsOptions = $this->getProgrammeService()->getAnneesUnivOptions();

        // si anneeUniv nest pas défini on utilise la derniere année universitaire disponible
        if (!array_key_exists('anneeuniv', $params)) {
            $params['anneeuniv'] = array_key_last($anneeUnivAsOptions);
        }

        $ateliers = $this->getAtelierService()->getAteliersWithFiltre($params, 'libelle','asc', true);

        return new ViewModel([
+7 −0
Original line number Diff line number Diff line
@@ -91,15 +91,22 @@ class SessionController extends AbstractActionController

    public function indexAction(): ViewModel
    {
        $anneeUnivAsOptions = $this->getSeanceService()->getAnneesUnivOptions();
        $groupes = $this->getGroupeService()->getGroupes();
        $types = $this->getEtatTypeService()->getEtatsTypesByCategorieCode(SessionEtats::TYPE);
        $villeAsOptions = $this->getVilleService()->getVillesAsOptions();
        $siteAsOptions = $this->getSiteService()->getSitesAsOptions();
        $params = $this->params()->fromQuery();

        // si anneeUniv nest pas défini on utilise la derniere année universitaire disponible
        if (!array_key_exists('anneeuniv', $params)) {
                $params['anneeuniv'] = array_key_last($anneeUnivAsOptions);
        }

        $sessions = $this->getSessionService()->getSessionsWithFiltre($params);

        return new ViewModel([
            'anneeUnivAsOptions' => $anneeUnivAsOptions,
            'sessions' => $sessions,
            'params' => $params,
            'groupes' => $groupes,
+18 −0
Original line number Diff line number Diff line
@@ -146,6 +146,24 @@ class Session implements HistoriqueAwareInterface, HasEtatsInterface, HasEveneme
        return $this->seances->toArray();
    }

    public function getAnneesUnivProgrammes(): array
    {
        $anneesUniv = [];
        foreach($this->getSeances() as $seance){
            $anneesUniv[] = $seance->getAnneeUniv();
        }
        $anneesUniv = array_filter(array_unique($anneesUniv));
        sort($anneesUniv);

        return $anneesUniv;
    }

    public function getStringAnneesUnivProgrammes(): string
    {
        $anneesUniv = $this->getAnneesUnivProgrammes();
        return implode(', ', $anneesUniv);
    }

    public function getDebut(bool $datetime = false): string|DateTime|null
    {
        $minimum = null;
+24 −1
Original line number Diff line number Diff line
@@ -70,10 +70,15 @@ class SeanceService
    }

    /** @return Seance[] */
    public function getSeances(string $champ = 'id', string $ordre = 'ASC'): array
    public function getSeances(string $champ = 'id', string $ordre = 'ASC', bool $withHisto = false): array
    {
        $qb = $this->createQueryBuilder()
            ->orderBy('seance.' . $champ, $ordre);

        if (!$withHisto) {
            $qb = $qb->andWhere('seance.histoDestruction IS NULL');
        }

        return $qb->getQuery()->getResult();
    }

@@ -197,4 +202,22 @@ class SeanceService
        if ($seance->isPremiereSeance() OR $seance->isDerniereSeance()) $flashMessenger?->addInfoMessage($message);
    }

    public function getAnneesUnivOptions(): array
    {
        $seances = $this->getSeances();

        // extraire les annees universitaires
        $annees = [];
        foreach ($seances as $seance) {
            $annee = $seance->getAnneeUniv();
            if ($annee) {
                $annees[$annee] = $annee;
            }
        }
        // trier les annees universitaires par ordre croissant
        ksort($annees);

        return $annees;
    }

}
 No newline at end of file
+20 −1
Original line number Diff line number Diff line
@@ -169,7 +169,26 @@ class SessionService
            $qb = $qb->andWhere('ville.id = :ville')->setParameter('ville', $params['ville']);
        }

        return $qb->getQuery()->getResult();
        $sessions =  $qb->getQuery()->getResult();

        if (array_key_exists('anneeuniv', $params)) {
            $anneeUniv = $params['anneeuniv'];
            if ($anneeUniv != '' ) {
                // filtrer sur l'année universitaire
                $sessions = array_filter($sessions, function ($session) use ($anneeUniv) {
                    /** @var Session $session */
                    foreach ($session->getSeances() as $seance) {
                        if ( $seance->estNonHistorise() && $seance->getAnneeUniv() == $anneeUniv ) {
                            return true;
                        }
                    }
                    return false;
                });
            }
            $sessions = array_values($sessions); // réindexer le tableau
        }

        return $sessions;
    }

    /** FACADE  *******************************************************************************************************/
Loading