[x] Import appréciations jury

+ sous-caté sur @career
	+ @excelManager
		+ export (si déjà donné, "ADM/ADJ/...", sinon "[A compléter]")
		+ import pour un semestre
	+ déploiement de l'application de la mention jury
This commit is contained in:
xdrm-brackets 2016-01-03 11:55:20 +01:00
parent be13fecb9e
commit 4c3d629edb
11 changed files with 965 additions and 933 deletions

View File

@ -346,26 +346,27 @@ class careerManager{
/**************************************************/
/****************************************/ /* Intégration des mentions jury pour un semestre */
/* Passage de semestre pour un étudiant */ /**************************************************/
/****************************************/
/* /*
* Cherche si un semestre de même formation *
* et de rang supérieur existe pour cette même année A * @semestre<int> UID du semestre en question
* ou l'année suivante A+1 avec rang+1 * @jury<Array> Tableau contenant les étudiants et leurs mentions
*
* *
*/ */
case 'passageSemestre': if( permission('admin') ){ case 'applyJurySemestre': if( permission('admin') ){
$areSetParam = isset($request->etudiant) && isset($request->semestre); // les arguments existent $areSetParam = isset($request->semestre) && isset($request->jury); // les arguments existent
$etudiantCheck = $areSetParam && checkParam($request->etudiant, 'utilisateur.identifiant'); // l'identifiant de l'étudiant est au bon format $juryCheck = $areSetParam && checkParam($request->jury, '<array>'); // les mentions jury est au bon format
$semestreCheck = $$etudiantCheck && checkParam($request->semestre, 'auto_increment_id'); // l'id du semestre est au bon format $semestreCheck = $juryCheck && checkParam($request->semestre, 'auto_increment_id'); // le semestre est au bon format
if( $semestreCheck ){ // si tout les paramètres sont bons if( $semestreCheck ){ // si tout les paramètres sont bons
$passageStatus = DataBase::getInstance()->passageSemestre($request->etudiant, $request->semestre); $integration = DataBase::getInstance()->applyJurySemestre($request->semestre, $request->jury);
if( $creationOk )
if( $integration )
$answer->request = 'success'; $answer->request = 'success';
else else
$answer->request = 'error'; $answer->request = 'error';
@ -379,8 +380,6 @@ class careerManager{
/***********/ /***********/
/* DEFAULT */ /* DEFAULT */
/***********/ /***********/

View File

@ -637,6 +637,26 @@ class DataBase{
/* Applique les mentions du jury aux étudiants d'un semestre
*
* @semestre<int> UID du semestre en question
* @jury<Array> Tableau contenant les étudiants et leurs mention
*
*
* @return success<Boolean> Retourne VRAI si aucune erreur n'occure, sinon retourne FAUX
*
*/
public function applyJurySemestre($semestre, $jury){
$state = true;
foreach($jury as $ETU){
$state = $state && DataBase::getInstance()->applyJuryTo($ETU->etudiant, $semestre, $ETU->mention) == 'success';
}
return $state;
}
/* Applique la mention du jury à un étudiant d'un semestre /* Applique la mention du jury à un étudiant d'un semestre
* *
* @etudiant<String> UID de l'étudiant en question * @etudiant<String> UID de l'étudiant en question
@ -654,7 +674,7 @@ class DataBase{
*/ */
public function applyJuryTo($etudiant, $semestre, $mention){ public function applyJuryTo($etudiant, $semestre, $mention){
// on vérifie que le semestre et que l'étudiant existent // on vérifie que le semestre existe et que l'étudiant est inscrit à ce semestre
if( !($semestreInfo=semestreRepo::info($semestre)) ) return 'unknown_semestre'; if( !($semestreInfo=semestreRepo::info($semestre)) ) return 'unknown_semestre';
if( !($etudiantUID=userRepo::UID($etudiant, $semestre)) ) return 'unknown_user'; if( !($etudiantUID=userRepo::UID($etudiant, $semestre)) ) return 'unknown_user';
@ -699,9 +719,9 @@ class DataBase{
$appartenanceUID = groupRepo::includeAppartenance($etudiant, $rdbSemestre); $appartenanceUID = groupRepo::includeAppartenance($etudiant, $rdbSemestre);
} }
if( isset($nextSemestre) ) var_dump('nxt: '.$nextSemestre); // if( isset($nextSemestre) ) var_dump('nxt: '.$nextSemestre);
if( isset($rdbSemestre) ) var_dump('rdb: '.$rdbSemestre); // if( isset($rdbSemestre) ) var_dump('rdb: '.$rdbSemestre);
if( isset($appartenanceUID) ) var_dump('app: '.$appartenanceUID); // if( isset($appartenanceUID) ) var_dump('app: '.$appartenanceUID);
return 'success'; return 'success';
} }

View File

@ -189,7 +189,7 @@ class groupRepo{
public static function membres($groupeUID, $semestreUID){ public static function membres($groupeUID, $semestreUID){
// si le groupe existe => on récupère ses utilisateurs // si le groupe existe => on récupère ses utilisateurs
// var_dump($groupeUID.' - '.$semestreUID); // var_dump($groupeUID.' - '.$semestreUID);
$getMembres = DataBase::getPDO()->prepare("SELECT u.identifiant, u.prenom, u.nom, u.sexe, u.mail, u.droits, s.nom as semestre, g.id_groupe, g.nom as groupe $getMembres = DataBase::getPDO()->prepare("SELECT u.identifiant, u.prenom, u.nom, u.sexe, u.mail, u.droits, s.nom as semestre, g.id_groupe, g.nom as groupe, app.mention
FROM utilisateur as u, groupe as g, semestre as s, appartenance as app, formation as f FROM utilisateur as u, groupe as g, semestre as s, appartenance as app, formation as f
WHERE s.id_formation = f.id_formation WHERE s.id_formation = f.id_formation
AND u.identifiant = app.id_etudiant AND u.identifiant = app.id_etudiant

View File

@ -245,7 +245,7 @@ class semestreRepo{
)); ));
// on retourne les infos du semestre courant // on retourne les infos du semestre courant
return DataBase::delNumeric( $getSemestreInfos->fetch(), true ); return $getSemestreInfos->fetch();
} }

View File

@ -495,6 +495,79 @@ if( exportJury != null ){
/*******************************/
/* GESTION DE L'IMPORT DE JURY */
/*******************************/
var importJury = document.querySelector('#import_jury[data-stre]');
if( importJury != null ){
importJury.addEventListener('change', function(e){
var fileInput = importJury.children[0];
var semestre = parseInt( importJury.dataset.stre );
console.log(semestre);
addClass( importJury, 'loading' );
var file = fileInput.files[0];
/* [1] IMPORTATION DU FICHIER
=======================================*/
var fd = new FormData();
fd.append('filename', 'import_jury');
fd.append('file', file, file.name);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'manager/import.php', true);
xhr.onreadystatechange = function(){
if( xhr.readyState == 4 && [0, 200].indexOf(xhr.status) > -1 )
console.log('[1] IMPORT=> '+xhr.responseText);
if( xhr.responseText == 'success' ){
/* [2] LECTURE DU FICHIER
=======================================*/
var request = { level_0: 'excel', level_1: 'import_jury' };
API.send(request, function(e){
console.log('[2] PARSE=>'+e.request);
if( e.request == 'success' ){
/* [3] INTÉGRATION À LA BDD
=======================================*/
requestIntegration = { level_0: 'career', level_1: 'applyJurySemestre', jury: e.jury, semestre: semestre };
API.send( requestIntegration, function(f){
console.log('[3] INTEGRATION=>'+f.request);
if( f.request == 'success' ){
console.log('liste intégrée');
reload();
}else console.log('integration error');
});
}else console.log('import error');
});
}
}
xhr.send(fd);
}, false);
}
/* GESTION DE PUBLICATION DES NOTES D'UN CONTRÔLE */ /* GESTION DE PUBLICATION DES NOTES D'UN CONTRÔLE */
var publicationControles = document.querySelectorAll('#CONTAINER > section[name=allcontroles] .confirm.center.active[data-ctrl][data-publication]'); var publicationControles = document.querySelectorAll('#CONTAINER > section[name=allcontroles] .confirm.center.active[data-ctrl][data-publication]');

View File

@ -193,8 +193,8 @@ if( exportInscrits != null ){
var fSemestre = (selectedSemestre!=null) ? selectedSemestre.dataset.stre : null; var fSemestre = (selectedSemestre!=null) ? selectedSemestre.dataset.stre : null;
var fAnnee = (selectedSemestre!=null) ? selectedSemestre.dataset.year : null; var fAnnee = (selectedSemestre!=null) ? selectedSemestre.dataset.year : null;
console.log(fSemestre); // console.log(fSemestre);
console.log(fAnnee); // console.log(fAnnee);
/* [1] On récupère la liste des groupes en question (groupManager) /* [1] On récupère la liste des groupes en question (groupManager)
===================================================================*/ ===================================================================*/

View File

@ -1009,7 +1009,7 @@ if( permission('master') || permission('admin') ){
if( $semestreOpt != null ) if( $semestreOpt != null )
echo "<div data-stre='".$semestreOpt."' class='confirm active center'>Importer les décisions du jury<input type='file' id='import_jury'></div>"; echo "<div id='import_jury' data-stre='".$semestreOpt."' class='confirm active center'>Importer les décisions du jury<input type='file'></div>";
echo "</div>"; echo "</div>";

Binary file not shown.

BIN
src/files/admin2_import_jury.xlsx Executable file

Binary file not shown.

View File

@ -49,7 +49,7 @@ debug();
/* [1] On récupère le semestre d'un étudiant /* [1] On récupère le semestre d'un étudiant
=====================================================*/ =====================================================*/
// var_dump( DataBase::getInstance()->applyJuryTo('Etud100', 37, 'RDB') ); var_dump( DataBase::getInstance()->applyJuryTo('Etud100', 72, 'ADM') );

File diff suppressed because it is too large Load Diff