if (isFiltreRechercheParam('filter_motif')) { if (getFiltreRechercheParam('filter_motif') == 'SANS') { $query->useAbsenceEleveSaisieQuery()->useJTraitementSaisieEleveQuery()->useAbsenceEleveTraitementQuery('b', 'left join')->filterByAMotifId(null)->endUse()->endUse()->endUse(); } else { $query->useAbsenceEleveSaisieQuery()->useJTraitementSaisieEleveQuery()->useAbsenceEleveTraitementQuery()->filterByAMotifId(getFiltreRechercheParam('filter_motif'))->endUse()->endUse()->endUse(); } } if (isFiltreRechercheParam('filter_justification')) { if (getFiltreRechercheParam('filter_justification') == 'SANS') { //on commence par filter certain élèves $query_clone = clone $query; $array_eleve_id = $query_clone->distinct()->select('Id')->find(); //on filtre les saisies pour trouver celles qui ne sont pas justifiées $absences_saisie_query1 = new AbsenceEleveSaisieQuery(); $absences_saisie_query1->where('AbsenceEleveSaisie.EleveId IN ?', $array_eleve_id)->useJTraitementSaisieEleveQuery('ab', 'left join')->useAbsenceEleveTraitementQuery('ad', 'left join')->endUse()->endUse() ->groupBy('Id')->withColumn('count(ad.a_justification_id)', 'nbJustif'); $absences_saisie_query = new AbsenceEleveSaisieQuery(); $absences_saisie_query->addSelectQuery($absences_saisie_query1, 'justif')->where('justif.nbJustif = 0')->where('justif.EleveId IN ?', $array_eleve_id); $absences_saisie_query->distinct()->select('Id'); $array_absence_id = $absences_saisie_query->find(); //on filtre la requete principale avec les saisies précédentes $query->useAbsenceEleveSaisieQuery()->where('AbsenceEleveSaisie.Id IN ?', $array_absence_id)->endUse(); } else { $query->useAbsenceEleveSaisieQuery()->useJTraitementSaisieEleveQuery()->useAbsenceEleveTraitementQuery()->filterByAJustificationId(getFiltreRechercheParam('filter_justification'))->endUse()->endUse()->endUse(); } } if (getFiltreRechercheParam('order') == "asc_id") { $query->orderBy('Id', Criteria::ASC);