Subversion Repositories eFlore/Applications.del

Rev

Rev 1621 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1621 Rev 1625
Line 58... Line 58...
58
		return "<br/>Méthodes disponibles:<ul>".
58
		return "<br/>Méthodes disponibles:<ul>".
59
			"<li>tout</li>".
59
			"<li>tout</li>".
60
			"<li>moyenneObsSansNomParMois</li>".
60
			"<li>moyenneObsSansNomParMois</li>".
61
			"<li>moyenneObsIdentifieesParMois</li>".
61
			"<li>moyenneObsIdentifieesParMois</li>".
62
			"<li>pourcentageObsIdentifieesEnFinDAnnee</li>".
62
			"<li>pourcentageObsIdentifieesEnFinDAnnee</li>".
-
 
63
			"<li>pourcentageObsIdentifieesEnFinDAnneePlusPlus</li>".
63
			"<li>moyenneActionsParJour</li>".
64
			"<li>moyenneActionsParJour</li>".
64
			"<li>personnesEnvoyantUnePropositionParMois</li>".
65
			"<li>personnesEnvoyantUnePropositionParMois</li>".
65
		"</ul>";
66
		"</ul>";
66
	}
67
	}
Line 67... Line 68...
67
 
68
 
68
	// retourne toutes les stats pour l'année spécifiée
69
	// retourne toutes les stats pour l'année spécifiée
69
	protected function tout($annee) {
70
	protected function tout($annee) {
70
		$moyenneObsSansNomParMois = $this->moyenneObsSansNomParMois($annee);
71
		$moyenneObsSansNomParMois = $this->moyenneObsSansNomParMois($annee);
71
		$moyenneObsIdentifieesParMois = $this->moyenneObsIdentifieesParMois($annee);
72
		$moyenneObsIdentifieesParMois = $this->moyenneObsIdentifieesParMois($annee);
-
 
73
		$pourcentageObsIdentifieesEnFinDAnnee = $this->pourcentageObsIdentifieesEnFinDAnnee($annee);
72
		$pourcentageObsIdentifieesEnFinDAnnee = $this->pourcentageObsIdentifieesEnFinDAnnee($annee);
74
		$pourcentageObsIdentifieesEnFinDAnneePlusPlus = $this->pourcentageObsIdentifieesEnFinDAnneePlusPlus($annee);
73
		$moyenneActionsParJour = $this->moyenneActionsParJour($annee);
75
		$moyenneActionsParJour = $this->moyenneActionsParJour($annee);
Line 74... Line 76...
74
		$personnesEnvoyantUnePropositionParMois = $this->personnesEnvoyantUnePropositionParMois($annee);
76
		$personnesEnvoyantUnePropositionParMois = $this->personnesEnvoyantUnePropositionParMois($annee);
75
 
77
 
76
		return array(
78
		return array(
77
			'annee' => intval($annee),
79
			'annee' => intval($annee),
78
			'moyenneObsSansNomParMois' => $moyenneObsSansNomParMois,
80
			'moyenneObsSansNomParMois' => $moyenneObsSansNomParMois,
-
 
81
			'moyenneObsIdentifieesParMois' => $moyenneObsIdentifieesParMois,
79
			'moyenneObsIdentifieesParMois' => $moyenneObsIdentifieesParMois,
82
			'pourcentageObsIdentifieesEnFinDAnnee' => $pourcentageObsIdentifieesEnFinDAnnee,
80
			'pourcentageObsIdentifieesEnFinDAnnee' => $pourcentageObsIdentifieesEnFinDAnnee,
83
			'pourcentageObsIdentifieesEnFinDAnneePlusPlus' => $pourcentageObsIdentifieesEnFinDAnneePlusPlus['pourcentage'],
81
			'moyenneActionsParJour' => $moyenneActionsParJour,
84
			'moyenneActionsParJour' => $moyenneActionsParJour,
82
			'personnesEnvoyantUnePropositionParMois' => $personnesEnvoyantUnePropositionParMois['nombre']
85
			'personnesEnvoyantUnePropositionParMois' => $personnesEnvoyantUnePropositionParMois['nombre']
Line 107... Line 110...
107
			")".
110
			")".
108
			" GROUP BY anneemois".
111
			" GROUP BY anneemois".
109
			" ORDER BY anneemois DESC) as parMois;";
112
			" ORDER BY anneemois DESC) as parMois;";
Line 110... Line 113...
110
 
113
 
111
		$res = $this->bdd->recupererTous($req);
114
		$res = $this->bdd->recupererTous($req);
112
		return floatval($res[0]['moyenne']);
115
		return intval($res[0]['moyenne']);
Line 113... Line 116...
113
	}
116
	}
114
 
117
 
115
	// Retourne la moyenne par mois sur l'année en cours, des propositions marquées comme "retenues"
118
	// Retourne la moyenne par mois sur l'année en cours, des propositions marquées comme "retenues"
Line 127... Line 130...
127
				// Le dernier vote doit être dans l'année considérée (@ACHTUNG bancal)
130
				// Le dernier vote doit être dans l'année considérée (@ACHTUNG bancal)
128
				" HAVING MAX(YEAR(dcv.date)) = '" . $annee . "') as temp".
131
				" HAVING MAX(YEAR(dcv.date)) = '" . $annee . "') as temp".
129
			" GROUP BY anneemois) as temp2;";
132
			" GROUP BY anneemois) as temp2;";
Line 130... Line 133...
130
 
133
 
131
		$res = $this->bdd->recupererTous($req);
134
		$res = $this->bdd->recupererTous($req);
-
 
135
		return intval($res[0]['moyenne']);
-
 
136
	}
-
 
137
 
-
 
138
	// Version améliorée mais non optimale (prend en compte les consensus non validés)
-
 
139
	// @TODO on devrait croiser les IDS pour ne pas prendre en compte les obs validées ou en
-
 
140
	// 		consensus, mais qui datent des années précédentes
-
 
141
	protected function pourcentageObsIdentifieesEnFinDAnneePlusPlus($annee) {
-
 
142
		// Obs ayant atteint un consensus cette année
-
 
143
		$req1 = "SELECT count(*) as nombre FROM(".
-
 
144
			" SELECT id_observation, id_commentaire, id_vote, nbvotes FROM (".
-
 
145
				" SELECT do.id_observation, dc.id_commentaire, dcv.id_vote, count(dcv.id_vote) as nbvotes".
-
 
146
				" FROM del_commentaire dc".
-
 
147
				" LEFT JOIN del_observation do ON do.id_observation = dc.ce_observation".
-
 
148
				" LEFT JOIN del_commentaire_vote dcv ON dc.id_commentaire = dcv.ce_proposition".
-
 
149
				" AND dcv.valeur = 1".
-
 
150
				" AND dc.proposition_retenue = 0".
-
 
151
				" GROUP BY dc.id_commentaire".
-
 
152
				" HAVING MAX(YEAR(dcv.date)) = '" . $annee . "'".
-
 
153
			" ) as temp GROUP BY id_observation".
-
 
154
		") as temp2;";
-
 
155
		$obsEnConsensus = $this->bdd->recupererTous($req1);
-
 
156
		$oc = intval($obsEnConsensus[0]['nombre']);
-
 
157
 
-
 
158
		// Obs ayant une "proposition retenue" cette année
-
 
159
		$req2 = "SELECT count(*) as nombre FROM (".
-
 
160
			" SELECT count(DISTINCT id_observation), MAX(dcv.date) as maxdate".
-
 
161
			" FROM del_commentaire dc".
-
 
162
			" LEFT JOIN del_commentaire_vote dcv ON dcv.ce_proposition = dc.id_commentaire".
-
 
163
			" LEFT JOIN del_observation do ON do.id_observation = dc.ce_observation".
-
 
164
			" WHERE proposition_retenue = 1".
-
 
165
			" AND YEAR(do.date_transmission) = '" . $annee . "'".
-
 
166
			" GROUP BY dc.id_commentaire".
-
 
167
			" HAVING MAX(YEAR(dcv.date)) = '" . $annee . "')".
-
 
168
		" as temp;";
-
 
169
		$nbObsValidees = $this->bdd->recupererTous($req2);
-
 
170
		$ov = intval($nbObsValidees[0]['nombre']);
-
 
171
 
-
 
172
		// Nombre d'obs sans nom soumises cette année
-
 
173
		$req3 = "SELECT count(*) as nombre".
-
 
174
			" FROM del_observation".
-
 
175
			" WHERE YEAR(date_transmission) = '" . $annee . "'".
-
 
176
			" AND (mots_cles_texte LIKE '%aDeterminer%'".
-
 
177
			" OR certitude = 'aDeterminer'".
-
 
178
			" OR certitude = 'douteux'".
-
 
179
			" OR nom_sel_nn IS NULL".
-
 
180
			" OR nom_sel_nn = 0 OR".
-
 
181
				" id_observation IN (".
-
 
182
				" SELECT DISTINCT ce_observation".
-
 
183
				" FROM del_commentaire".
-
 
184
				" WHERE proposition_initiale = 1".
-
 
185
				" AND (nom_sel_nn IS NULL OR nom_sel_nn = '')".
-
 
186
			" ))";
-
 
187
		$nbObsSansNom = $this->bdd->recupererTous($req3);
-
 
188
		$osn = intval($nbObsSansNom[0]['nombre']);
-
 
189
 
-
 
190
		return array(
-
 
191
			'observationsEnConsensus' => $oc,
-
 
192
			'observationsValidees' => $ov,
-
 
193
			'observationsSansNom' => $osn,
-
 
194
			'pourcentage' => ($osn == 0 ? 0 : (($oc + $ov) / $osn) * 100)
132
		return floatval($res[0]['moyenne']);
195
		);
Line 133... Line 196...
133
	}
196
	}
134
 
197
 
135
	protected function pourcentageObsIdentifieesEnFinDAnnee($annee) {
198
	protected function pourcentageObsIdentifieesEnFinDAnnee($annee) {
Line 180... Line 243...
180
			// nombre de jours écoulés dans l'année
243
			// nombre de jours écoulés dans l'année
181
			" / (SELECT IF( YEAR(CURDATE()) = '" . $annee . "', DAYOFYEAR(CURDATE()), 365)".
244
			" / (SELECT IF( YEAR(CURDATE()) = '" . $annee . "', DAYOFYEAR(CURDATE()), 365)".
182
			" ) as moyenne;";
245
			" ) as moyenne;";
Line 183... Line 246...
183
 
246
 
184
		$res = $this->bdd->recupererTous($req);
247
		$res = $this->bdd->recupererTous($req);
185
		return floatval($res[0]['moyenne']);
248
		return intval($res[0]['moyenne']);
Line 186... Line 249...
186
	}
249
	}
187
 
250
 
188
	// Retourne le nombre et la liste des personnes ayant sur l'année une moyenne de participation par mois >= 1
251
	// Retourne le nombre et la liste des personnes ayant sur l'année une moyenne de participation par mois >= 1