Merge branch 'statistics'
This commit is contained in:
commit
78e66a0a26
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by PhpStorm.
|
||||||
|
* User: lucas
|
||||||
|
* Date: 08/03/18
|
||||||
|
* Time: 17:36
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace api\module\departement;
|
||||||
|
|
||||||
|
|
||||||
|
use database\core\Repo;
|
||||||
|
use database\repo\departement;
|
||||||
|
|
||||||
|
class statsController
|
||||||
|
{
|
||||||
|
|
||||||
|
public static function get($args){
|
||||||
|
|
||||||
|
/** @var departement $repo */
|
||||||
|
$repo = Repo::getRepo("departement");
|
||||||
|
|
||||||
|
return ["data" => $repo->getStats()];
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,6 +9,7 @@
|
||||||
namespace database\repo;
|
namespace database\repo;
|
||||||
|
|
||||||
|
|
||||||
|
use database\core\Repo;
|
||||||
use database\core\Repo_i;
|
use database\core\Repo_i;
|
||||||
|
|
||||||
class departement extends Repo_i
|
class departement extends Repo_i
|
||||||
|
@ -88,4 +89,82 @@ class departement extends Repo_i
|
||||||
return $results;
|
return $results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getStats() : array{
|
||||||
|
|
||||||
|
/* (1) Potentiel horaire du département */
|
||||||
|
$Potentiel = $this->pdo->prepare("SELECT SUM(hoursToDo) potentiel
|
||||||
|
FROM Professeur
|
||||||
|
WHERE Categorie_idCategorie IN (1,2,3)
|
||||||
|
GROUP BY Categorie_idCategorie IN (1,2,3);");
|
||||||
|
|
||||||
|
$Potentiel->execute([]);
|
||||||
|
|
||||||
|
$results = $Potentiel->fetch();
|
||||||
|
|
||||||
|
/* (2) Sous-service (professeurs ayant moins d'heure prévu que d'heure du) */
|
||||||
|
/** @var professor $ProfRepo */
|
||||||
|
$ProfRepo = Repo::getRepo("professor");
|
||||||
|
|
||||||
|
$profs = $ProfRepo->getWithVH(null);
|
||||||
|
|
||||||
|
$results["sous_service"] = 0;
|
||||||
|
$results["heures_comp"] = 0;
|
||||||
|
$results["heures_vacataire"] = 0;
|
||||||
|
|
||||||
|
foreach ($profs as $prof){
|
||||||
|
if(in_array($prof["idCat"],[1,2,3,4]) and $prof["equiTD"] < $prof["hoursToDo"]){
|
||||||
|
$results["sous_service"] += $prof["hoursToDo"] - $prof["equiTD"];
|
||||||
|
|
||||||
|
/* (3) Heures effectués par des vacataires */
|
||||||
|
}else if(in_array($prof["idCat"],[5,6])){
|
||||||
|
$results["heures_vacataire"] += $prof["equiTD"];
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (4) Heures complementaires */
|
||||||
|
|
||||||
|
if(is_numeric($prof["VHComp"])){
|
||||||
|
$results["heures_comp"] += $prof["VHComp"];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (5) Heures effectuées pour des départements exterieurs */
|
||||||
|
//je crois que j'ai créé un montre - Lucas - 2018
|
||||||
|
$HDepExt = $this->pdo->prepare("
|
||||||
|
SELECT U.disabled disabled,
|
||||||
|
count(U.code) nbrUe,
|
||||||
|
SUM((IFNULL(T1.VolumeCours,0)*IFNULL(tauxInfoCours,0) + IFNULL(T2.VolumeTD,0)*IFNULL(tauxInfoTD,0) + IFNULL(T3.VolumeTP,0)*IFNULL(tauxInfoTP,0))) totalInfo,
|
||||||
|
SUM((IFNULL(T1.VolumeCours,0)*(1-IFNULL(tauxInfoCours,0)) + IFNULL(T2.VolumeTD,0)*(1-IFNULL(tauxInfoTD,0)) + IFNULL(T3.VolumeTP,0)*(1-IFNULL(tauxInfoTP,0)))) totalExterieur
|
||||||
|
FROM UE U
|
||||||
|
LEFT JOIN (SELECT SUM(F.isInternal)/count(F.idFormation) tauxInfoCours,SUM(C.volume)*1.5 VolumeCours, C.UE_code code_UE
|
||||||
|
FROM Cours C
|
||||||
|
JOIN GroupeCours C2 ON C.idCours = C2.Cours_idCours
|
||||||
|
JOIN Formation F ON C2.Formation_idFormation = F.idFormation
|
||||||
|
GROUP BY C.UE_code) T1 ON U.code = T1.code_UE
|
||||||
|
LEFT JOIN (SELECT SUM(F.isInternal)/count(F.idFormation) tauxInfoTD,SUM(T1.volume) VolumeTD, T1.UE_code code_UE
|
||||||
|
FROM TD T1
|
||||||
|
JOIN GroupeTD GT ON T1.idTD = GT.TD_idTD
|
||||||
|
JOIN Formation F ON GT.Formation_idFormation = F.idFormation
|
||||||
|
GROUP BY T1.UE_code) T2 ON U.code = T2.code_UE
|
||||||
|
LEFT JOIN (SELECT SUM(F.isInternal)/count(F.idFormation) tauxInfoTP,SUM(T1.volume) VolumeTP, T1.UE_code code_UE
|
||||||
|
FROM TP T1
|
||||||
|
JOIN GroupeTP TP2 ON T1.idTP = TP2.TP_idTP
|
||||||
|
JOIN Formation F ON TP2.Formation_idFormation = F.idFormation
|
||||||
|
GROUP BY T1.UE_code) T3 ON U.code = T3.code_UE
|
||||||
|
GROUP BY U.disabled");
|
||||||
|
|
||||||
|
$HDepExt->execute([]);
|
||||||
|
|
||||||
|
$HDepExtData = $HDepExt->fetchAll();
|
||||||
|
|
||||||
|
$results = array_merge($results,[
|
||||||
|
"heures_exterieur" => $HDepExtData[0]["totalExterieur"],
|
||||||
|
"heures_ue_desactive" => $HDepExtData[1]["totalExterieur"] + $HDepExtData[1]["totalInfo"],
|
||||||
|
"nbr_ue_desactive" => $HDepExtData[1]["nbrUe"]
|
||||||
|
]);
|
||||||
|
|
||||||
|
return $results;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -319,7 +319,7 @@ class professor extends Repo_i {
|
||||||
$prof['VHComp'] = round($prof['equiTD'] - $prof['hoursToDo'], 2);
|
$prof['VHComp'] = round($prof['equiTD'] - $prof['hoursToDo'], 2);
|
||||||
$prof['VHComp'] = ( $prof['VHComp'] < 0 ) ? 0 : $prof['VHComp'];
|
$prof['VHComp'] = ( $prof['VHComp'] < 0 ) ? 0 : $prof['VHComp'];
|
||||||
}else{
|
}else{
|
||||||
$VH["equiTD"] = $prof["VHTd"] + (2/3)*$prof["VHTp"] + 1.5*$prof["VHCours"];
|
$prof["equiTD"] = $prof["VHTd"] + (2/3)*$prof["VHTp"] + 1.5*$prof["VHCours"];
|
||||||
if(is_numeric($prof["hoursToDo"]) and $prof["hoursToDo"] > 0){
|
if(is_numeric($prof["hoursToDo"]) and $prof["hoursToDo"] > 0){
|
||||||
$prof['VHComp'] = round($prof['equiTD'] - $prof['hoursToDo'], 2);
|
$prof['VHComp'] = round($prof['equiTD'] - $prof['hoursToDo'], 2);
|
||||||
$prof['VHComp'] = ( $prof['VHComp'] < 0 ) ? 0 : $prof['VHComp'];
|
$prof['VHComp'] = ( $prof['VHComp'] < 0 ) ? 0 : $prof['VHComp'];
|
||||||
|
|
|
@ -79,6 +79,14 @@
|
||||||
"par": {
|
"par": {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"stats":{
|
||||||
|
"GET": {
|
||||||
|
"des": "Get the statistics about the departement",
|
||||||
|
"per": [],
|
||||||
|
"par": {
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue