60,6 → 60,7 |
"<li>moyenneObsSansNomParMois</li>". |
"<li>moyenneObsIdentifieesParMois</li>". |
"<li>pourcentageObsIdentifieesEnFinDAnnee</li>". |
"<li>pourcentageObsIdentifieesEnFinDAnneePlusPlus</li>". |
"<li>moyenneActionsParJour</li>". |
"<li>personnesEnvoyantUnePropositionParMois</li>". |
"</ul>"; |
70,6 → 71,7 |
$moyenneObsSansNomParMois = $this->moyenneObsSansNomParMois($annee); |
$moyenneObsIdentifieesParMois = $this->moyenneObsIdentifieesParMois($annee); |
$pourcentageObsIdentifieesEnFinDAnnee = $this->pourcentageObsIdentifieesEnFinDAnnee($annee); |
$pourcentageObsIdentifieesEnFinDAnneePlusPlus = $this->pourcentageObsIdentifieesEnFinDAnneePlusPlus($annee); |
$moyenneActionsParJour = $this->moyenneActionsParJour($annee); |
$personnesEnvoyantUnePropositionParMois = $this->personnesEnvoyantUnePropositionParMois($annee); |
|
78,6 → 80,7 |
'moyenneObsSansNomParMois' => $moyenneObsSansNomParMois, |
'moyenneObsIdentifieesParMois' => $moyenneObsIdentifieesParMois, |
'pourcentageObsIdentifieesEnFinDAnnee' => $pourcentageObsIdentifieesEnFinDAnnee, |
'pourcentageObsIdentifieesEnFinDAnneePlusPlus' => $pourcentageObsIdentifieesEnFinDAnneePlusPlus['pourcentage'], |
'moyenneActionsParJour' => $moyenneActionsParJour, |
'personnesEnvoyantUnePropositionParMois' => $personnesEnvoyantUnePropositionParMois['nombre'] |
); |
109,7 → 112,7 |
" ORDER BY anneemois DESC) as parMois;"; |
|
$res = $this->bdd->recupererTous($req); |
return floatval($res[0]['moyenne']); |
return intval($res[0]['moyenne']); |
} |
|
// Retourne la moyenne par mois sur l'année en cours, des propositions marquées comme "retenues" |
129,9 → 132,69 |
" GROUP BY anneemois) as temp2;"; |
|
$res = $this->bdd->recupererTous($req); |
return floatval($res[0]['moyenne']); |
return intval($res[0]['moyenne']); |
} |
|
// Version améliorée mais non optimale (prend en compte les consensus non validés) |
// @TODO on devrait croiser les IDS pour ne pas prendre en compte les obs validées ou en |
// consensus, mais qui datent des années précédentes |
protected function pourcentageObsIdentifieesEnFinDAnneePlusPlus($annee) { |
// Obs ayant atteint un consensus cette année |
$req1 = "SELECT count(*) as nombre FROM(". |
" SELECT id_observation, id_commentaire, id_vote, nbvotes FROM (". |
" SELECT do.id_observation, dc.id_commentaire, dcv.id_vote, count(dcv.id_vote) as nbvotes". |
" FROM del_commentaire dc". |
" LEFT JOIN del_observation do ON do.id_observation = dc.ce_observation". |
" LEFT JOIN del_commentaire_vote dcv ON dc.id_commentaire = dcv.ce_proposition". |
" AND dcv.valeur = 1". |
" AND dc.proposition_retenue = 0". |
" GROUP BY dc.id_commentaire". |
" HAVING MAX(YEAR(dcv.date)) = '" . $annee . "'". |
" ) as temp GROUP BY id_observation". |
") as temp2;"; |
$obsEnConsensus = $this->bdd->recupererTous($req1); |
$oc = intval($obsEnConsensus[0]['nombre']); |
|
// Obs ayant une "proposition retenue" cette année |
$req2 = "SELECT count(*) as nombre FROM (". |
" SELECT count(DISTINCT id_observation), MAX(dcv.date) as maxdate". |
" FROM del_commentaire dc". |
" LEFT JOIN del_commentaire_vote dcv ON dcv.ce_proposition = dc.id_commentaire". |
" LEFT JOIN del_observation do ON do.id_observation = dc.ce_observation". |
" WHERE proposition_retenue = 1". |
" AND YEAR(do.date_transmission) = '" . $annee . "'". |
" GROUP BY dc.id_commentaire". |
" HAVING MAX(YEAR(dcv.date)) = '" . $annee . "')". |
" as temp;"; |
$nbObsValidees = $this->bdd->recupererTous($req2); |
$ov = intval($nbObsValidees[0]['nombre']); |
|
// Nombre d'obs sans nom soumises cette année |
$req3 = "SELECT count(*) as nombre". |
" FROM del_observation". |
" WHERE YEAR(date_transmission) = '" . $annee . "'". |
" AND (mots_cles_texte LIKE '%aDeterminer%'". |
" OR certitude = 'aDeterminer'". |
" OR certitude = 'douteux'". |
" OR nom_sel_nn IS NULL". |
" OR nom_sel_nn = 0 OR". |
" id_observation IN (". |
" SELECT DISTINCT ce_observation". |
" FROM del_commentaire". |
" WHERE proposition_initiale = 1". |
" AND (nom_sel_nn IS NULL OR nom_sel_nn = '')". |
" ))"; |
$nbObsSansNom = $this->bdd->recupererTous($req3); |
$osn = intval($nbObsSansNom[0]['nombre']); |
|
return array( |
'observationsEnConsensus' => $oc, |
'observationsValidees' => $ov, |
'observationsSansNom' => $osn, |
'pourcentage' => ($osn == 0 ? 0 : (($oc + $ov) / $osn) * 100) |
); |
} |
|
protected function pourcentageObsIdentifieesEnFinDAnnee($annee) { |
$req = "SELECT (". |
" SELECT count(*) FROM (". |
182,7 → 245,7 |
" ) as moyenne;"; |
|
$res = $this->bdd->recupererTous($req); |
return floatval($res[0]['moyenne']); |
return intval($res[0]['moyenne']); |
} |
|
// Retourne le nombre et la liste des personnes ayant sur l'année une moyenne de participation par mois >= 1 |