Intégration d'une liste d'élèves opérationnelle
This commit is contained in:
parent
bad5697273
commit
b7ca3d0321
|
@ -149,6 +149,46 @@ class DataBase{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* intègre une liste d'utilisateurs (pour un rang d'une année) à la BDD
|
||||||
|
*
|
||||||
|
* @rang<int> le rang du semestre en question
|
||||||
|
* @annee<int> l'année du semestre en question
|
||||||
|
* @formationList<Array> contient tous les étudiants par formations
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function addUserlist($rang, $annee, $formationList){
|
||||||
|
|
||||||
|
foreach($formationList as $form){
|
||||||
|
|
||||||
|
$formationUID = semestreRepo::includeFormation($form['nom'], $form['libelle']); // on récupère l'UID de la formation en la créant si nécessaire
|
||||||
|
|
||||||
|
if( is_numeric($formationUID) ){ // si la formation est ok, alors on cherche le semestre
|
||||||
|
|
||||||
|
$semestreUID = semestreRepo::includeSemestre($rang, $annee, $formationUID); // on récupère l'UID du semestre en le créant si nécessaire
|
||||||
|
|
||||||
|
if( is_numeric($semestreUID) ){ // si le semestre est ok, alors on ajoute les utilisateurs
|
||||||
|
|
||||||
|
foreach($form['userlist'] as $user){
|
||||||
|
// on récupère l'UID utilisateur en le créant si nécessaire
|
||||||
|
$utilisateurUID = userRepo::includeEtudiant($user['identifiant'], $user['prenom'], $user['nom'], $user['sexe'], $user['mail']);
|
||||||
|
|
||||||
|
if( is_string($utilisateurUID) ) // si l'utilisateur est ok, alors on créé l'appartenance
|
||||||
|
groupRepo::includeAppartenance($utilisateurUID, $semestreUID); // on ajoute l'utilisateur au groupeVide de chaque semestre (s'il n'a pas déjà un groupe)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* créé un semestre/formation dans la BDD
|
/* créé un semestre/formation dans la BDD
|
||||||
*
|
*
|
||||||
* @codeFormation<String> le code/nom de la formation
|
* @codeFormation<String> le code/nom de la formation
|
||||||
|
|
|
@ -245,6 +245,23 @@ require_once __ROOT__.'/manager/database.php';
|
||||||
$answer->request = 'permission_error';
|
$answer->request = 'permission_error';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************/
|
||||||
|
/* intégration des élèves pour un semestre */
|
||||||
|
/*******************************************/
|
||||||
|
case 'addUserlist': if( permission('admin') ){
|
||||||
|
|
||||||
|
if( isset($request->formationList) && isset($request->rang) && isset($request->annee) && is_numeric($request->rang) && is_numeric($request->annee) ){ // si tout les paramètres sont bons
|
||||||
|
DataBase::getInstance()->addUserlist($request->rang, $request->annee, $request->formationList);
|
||||||
|
$answer->request = 'success';
|
||||||
|
}else
|
||||||
|
$answer->request = 'param_error';
|
||||||
|
|
||||||
|
}else
|
||||||
|
$answer->request = 'permission_error';
|
||||||
|
break;
|
||||||
|
|
||||||
/***********/
|
/***********/
|
||||||
/* DEFAULT */
|
/* DEFAULT */
|
||||||
/***********/
|
/***********/
|
||||||
|
|
|
@ -324,4 +324,100 @@ class groupRepo extends DBAccess{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* retourne l'UID d'une appartenance et la créé en amont si elle n'existe pas
|
||||||
|
*
|
||||||
|
* @identifiant<String> l'UID de l'étudiant en question
|
||||||
|
* @semestre<int> l'UID du semestre en question
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @return UID<String> retourne l'UID de l'appartenance
|
||||||
|
* @return FALSE<Boolean> retourne FALSE si une erreur occure
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static function includeAppartenance($identifiant, $semestre){
|
||||||
|
/* [1] On vérifie l'existence de l'appartenance
|
||||||
|
======================================================*/
|
||||||
|
$getAppartenanceUID = DataBase::getPDO()->prepare("SELECT id_appartenance as id
|
||||||
|
FROM appartenance
|
||||||
|
WHERE id_etudiant = :identifiant
|
||||||
|
AND id_semestre = :semestre");
|
||||||
|
$getAppartenanceUID->execute(array( ':identifiant' => $identifiant, ':semestre' => $semestre ));
|
||||||
|
|
||||||
|
/* [2] Cas où l'appartenance existe déjà, alors on retourne l'UID
|
||||||
|
======================================================*/
|
||||||
|
if( $appartenanceUID = $getAppartenanceUID->fetch()['id'] ) return $appartenanceUID;
|
||||||
|
|
||||||
|
/* [3] Cas où l'appartenance n'existe pas,
|
||||||
|
/* alors on met l'étudiant dans le groupe de même
|
||||||
|
/* nom que la formation+semestre
|
||||||
|
======================================================*/
|
||||||
|
|
||||||
|
|
||||||
|
/* [3-1] On vérifie l'existence du groupe de même nom que la formation+semestre
|
||||||
|
======================================================*/
|
||||||
|
$getGroupeUID = DataBase::getPDO()->prepare("SELECT DISTINCT id_groupe as id
|
||||||
|
FROM groupe
|
||||||
|
WHERE nom = (SELECT concat(f.code, ' ', s.nom) as nom
|
||||||
|
FROM semestre as s, formation as f
|
||||||
|
WHERE s.id_formation = f.id_formation
|
||||||
|
AND s.id_semestre = :semestre)");
|
||||||
|
$getGroupeUID->execute(array( ':semestre' => $semestre ));
|
||||||
|
|
||||||
|
|
||||||
|
/* [3-2] Le groupe n'existe pas, alors on le créé
|
||||||
|
======================================================*/
|
||||||
|
if( !($groupeUID=$getGroupeUID->fetch()['id']) ){
|
||||||
|
|
||||||
|
$creerGroupe = DataBase::getPDO()->prepare("INSERT INTO groupe(id_groupe, nom)
|
||||||
|
VALUES(DEFAULT, (SELECT concat(f.code, ' ', s.nom) as nom
|
||||||
|
FROM semestre as s, formation as f
|
||||||
|
WHERE s.id_formation = f.id_formation
|
||||||
|
AND s.id_semestre = :semestre)
|
||||||
|
)");
|
||||||
|
$creerGroupe->execute(array( ':semestre' => $semestre ));
|
||||||
|
|
||||||
|
|
||||||
|
// si le groupe n'a pas été créé (erreur) on retourne false
|
||||||
|
$getGroupeUID = DataBase::getPDO()->prepare("SELECT DISTINCT id_groupe as id
|
||||||
|
FROM groupe
|
||||||
|
WHERE nom = (SELECT concat(f.code, ' ', s.nom) as nom
|
||||||
|
FROM semestre as s, formation as f
|
||||||
|
WHERE s.id_formation = f.id_formation
|
||||||
|
AND s.id_semestre = :semestre)");
|
||||||
|
$getGroupeUID->execute(array( ':semestre' => $semestre ));
|
||||||
|
|
||||||
|
if( !($groupeUID=$getGroupeUID->fetch()['id']) ) return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$creerAppartenance = DataBase::getPDO()->prepare("INSERT INTO appartenance(id_appartenance, id_etudiant, id_groupe, id_semestre)
|
||||||
|
VALUES(DEFAULT, :identifiant, :groupeUID, :semestre)");
|
||||||
|
$creerAppartenance->execute(array(
|
||||||
|
':identifiant' => $identifiant,
|
||||||
|
':groupeUID' => $groupeUID,
|
||||||
|
':semestre' => $semestre
|
||||||
|
));
|
||||||
|
|
||||||
|
/* [4] On vérifie que l'appartenance a été créé et retourne son UID
|
||||||
|
======================================================*/
|
||||||
|
$getAppartenanceUID = DataBase::getPDO()->prepare("SELECT id_appartenance as id
|
||||||
|
FROM appartenance
|
||||||
|
WHERE id_etudiant = :identifiant
|
||||||
|
AND id_semestre = :semestre");
|
||||||
|
$getAppartenanceUID->execute(array( ':identifiant' => $identifiant, ':semestre' => $semestre ));
|
||||||
|
|
||||||
|
return $appartenanceUID = $getAppartenanceUID->fetch()['id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -63,6 +63,91 @@ class semestreRepo extends DBAccess{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* retourne l'UID d'une formation et la créé en amont si elle n'existe pas
|
||||||
|
*
|
||||||
|
* @code<String> Le code de la formation
|
||||||
|
* @nom<String> Le nom de la formation
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @return UID<int> l'UID de la formation en question
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static function includeFormation($code, $nom){
|
||||||
|
/* [1] On vérifie l'existence de la formation
|
||||||
|
======================================================*/
|
||||||
|
$getFormationUID = DataBase::getPDO()->prepare("SELECT id_formation as id
|
||||||
|
FROM formation
|
||||||
|
WHERE code = :code
|
||||||
|
AND nom = :nom");
|
||||||
|
$getFormationUID->execute(array( ':code' => $code, ':nom' => $nom ));
|
||||||
|
|
||||||
|
/* [2] Cas où la formation existe déjà, alors on retourne l'UID
|
||||||
|
======================================================*/
|
||||||
|
if( $formationUID = $getFormationUID->fetch()['id'] ) return $formationUID;
|
||||||
|
|
||||||
|
/* [3] Cas où la formation n'existe pas, alors on la créé
|
||||||
|
======================================================*/
|
||||||
|
$creerFormation = DataBase::getPDO()->prepare("INSERT INTO formation(id_formation, code, nom, nb_semestres)
|
||||||
|
VALUES(DEFAULT, :code, :nom, DEFAULT)");
|
||||||
|
$creerFormation->execute(array( ':code' => $code, ':nom' => $nom ));
|
||||||
|
|
||||||
|
/* [4] On vérifie que la formation a été créé et retourne son UID
|
||||||
|
======================================================*/
|
||||||
|
$getFormationUID = DataBase::getPDO()->prepare("SELECT id_formation as id
|
||||||
|
FROM formation
|
||||||
|
WHERE code = :code
|
||||||
|
AND nom = :nom");
|
||||||
|
$getFormationUID->execute(array( ':code' => $code, ':nom' => $nom ));
|
||||||
|
|
||||||
|
return $formationUID = $getFormationUID->fetch()['id'];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* retourne l'UID d'un semestre le créé en amont si il n'existe pas
|
||||||
|
*
|
||||||
|
* @rang<int> Le rang du semestre en question
|
||||||
|
* @annee<int> L'année du semestre en question
|
||||||
|
* @formation<int> L'UID de la formation en question
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @return UID<int> l'UID du semestre en question
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static function includeSemestre($rang, $annee, $formation){
|
||||||
|
/* [1] On vérifie l'existence du semestre
|
||||||
|
======================================================*/
|
||||||
|
$getSemestreUID = DataBase::getPDO()->prepare("SELECT id_semestre as id
|
||||||
|
FROM semestre
|
||||||
|
WHERE rang = :rang
|
||||||
|
AND annee = :annee
|
||||||
|
AND id_formation = :formation");
|
||||||
|
$getSemestreUID->execute(array( ':rang' => $rang, ':annee' => $annee, ':formation' => $formation ));
|
||||||
|
|
||||||
|
/* [2] Cas où le semestre existe déjà, alors on retourne l'UID
|
||||||
|
======================================================*/
|
||||||
|
if( $semestreUID = $getSemestreUID->fetch()['id'] ) return $semestreUID;
|
||||||
|
|
||||||
|
/* [3] Cas où le semestre n'existe pas, alors on le créé
|
||||||
|
======================================================*/
|
||||||
|
$creerSemestre = DataBase::getPDO()->prepare("INSERT INTO semestre(id_semestre, id_formation, nom, rang, annee)
|
||||||
|
VALUES(DEFAULT, :formation, :nom, :rang, :annee)"); // par défaut le nom du semestre = "Sn" où n est le rang
|
||||||
|
$creerSemestre->execute(array( ':formation' => $formation, ':nom' => 'S'.$rang, ':rang' => $rang, ':annee' => $annee ));
|
||||||
|
|
||||||
|
/* [4] On vérifie que la formation a été créé et retourne son UID
|
||||||
|
======================================================*/
|
||||||
|
$getSemestreUID = DataBase::getPDO()->prepare("SELECT id_semestre as id
|
||||||
|
FROM semestre
|
||||||
|
WHERE rang = :rang
|
||||||
|
AND annee = :annee
|
||||||
|
AND id_formation = :formation");
|
||||||
|
$getSemestreUID->execute(array( ':rang' => $rang, ':annee' => $annee, ':formation' => $formation ));
|
||||||
|
|
||||||
|
return $getSemestreUID->fetch()['id'];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -351,7 +351,7 @@ class userRepo extends DBAccess{
|
||||||
* (*) Si aucun autre n'avait le même @identifiant
|
* (*) Si aucun autre n'avait le même @identifiant
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static function creer($identifiant, $prenom, $nom, $mail, $mdp, $droits){
|
public static function creer($identifiant, $prenom, $nom, $sexe, $mail, $mdp, $droits){
|
||||||
/* [1] On normalise les données
|
/* [1] On normalise les données
|
||||||
=================================================================================================*/
|
=================================================================================================*/
|
||||||
foreach($droits as $droit)
|
foreach($droits as $droit)
|
||||||
|
@ -362,6 +362,7 @@ class userRepo extends DBAccess{
|
||||||
$identifiant = strtolower($identifiant); // on met l'identifiant en minuscule
|
$identifiant = strtolower($identifiant); // on met l'identifiant en minuscule
|
||||||
$prenom = ucwords( strtolower($prenom) ); // majuscule à chaque mot sinon minuscule
|
$prenom = ucwords( strtolower($prenom) ); // majuscule à chaque mot sinon minuscule
|
||||||
$nom = strtoupper($nom); // nom en majuscules
|
$nom = strtoupper($nom); // nom en majuscules
|
||||||
|
$sexe = boolval($sexe); // VRAI pour homme / FAUX pour femme
|
||||||
$mail = strtolower($mail); // email en minuscules
|
$mail = strtolower($mail); // email en minuscules
|
||||||
$mdp = secure_sha1($mdp); // on hash le password (SHA1)
|
$mdp = secure_sha1($mdp); // on hash le password (SHA1)
|
||||||
$droits = implode(',', $droits); // on met le droit sous forme de chaine
|
$droits = implode(',', $droits); // on met le droit sous forme de chaine
|
||||||
|
@ -373,12 +374,13 @@ class userRepo extends DBAccess{
|
||||||
|
|
||||||
/* [3] On créé le nouvel utilisateur
|
/* [3] On créé le nouvel utilisateur
|
||||||
=================================================================================================*/
|
=================================================================================================*/
|
||||||
$creationUtilisateur = DataBase::getPDO()->prepare("INSERT INTO utilisateur(identifiant, prenom, nom, mail, mdp, droits)
|
$creationUtilisateur = DataBase::getPDO()->prepare("INSERT INTO utilisateur(identifiant, prenom, nom, sexe, mail, mdp, droits)
|
||||||
VALUES(:identifiant, :prenom, :nom, :mail, :mdp, :droits)");
|
VALUES(:identifiant, :prenom, :nom, :sexe, :mail, :mdp, :droits)");
|
||||||
$creationUtilisateur->execute(array(
|
$creationUtilisateur->execute(array(
|
||||||
':identifiant' => $identifiant,
|
':identifiant' => $identifiant,
|
||||||
':prenom' => $prenom,
|
':prenom' => $prenom,
|
||||||
':nom' => $nom,
|
':nom' => $nom,
|
||||||
|
':sexe' => $sexe,
|
||||||
':mail' => $mail,
|
':mail' => $mail,
|
||||||
':mdp' => $mdp,
|
':mdp' => $mdp,
|
||||||
':droits' => $droits
|
':droits' => $droits
|
||||||
|
@ -393,4 +395,59 @@ class userRepo extends DBAccess{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* retourne l'UID d'un étudiant et le créé en amont s'il n'existe pas
|
||||||
|
*
|
||||||
|
* @identifiant<String> l'UID de l'étudiant en question
|
||||||
|
* @prenom<String> le prénom de l'étudiant en question
|
||||||
|
* @nom<String> le nom de l'étudiant en question
|
||||||
|
* @sexe<Boolean> le sexe de l'étudiant en question
|
||||||
|
* @mail<String> le mail de l'étudiant en question
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @return UID<String> retourne l'UID de l'étudiant
|
||||||
|
* @return FALSE<Boolean> retourne FALSE si une erreur occure
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static function includeEtudiant($identifiant, $prenom, $nom, $sexe, $mail){
|
||||||
|
/* [1] On vérifie l'existence de l'étudiant (par identifiant uniquement)
|
||||||
|
======================================================*/
|
||||||
|
$getEtudiantUID = DataBase::getPDO()->prepare("SELECT identifiant as id
|
||||||
|
FROM utilisateur
|
||||||
|
WHERE identifiant = :identifiant");
|
||||||
|
$getEtudiantUID->execute(array( ':identifiant' => $identifiant ));
|
||||||
|
|
||||||
|
/* [2] Cas où l'étudiant existe déjà, alors on retourne l'UID
|
||||||
|
======================================================*/
|
||||||
|
if( $etudiantUID = $getEtudiantUID->fetch()['id'] ) return $etudiantUID;
|
||||||
|
|
||||||
|
/* [3] Cas où l'étudiant n'existe pas, alors on le créé
|
||||||
|
======================================================*/
|
||||||
|
$creerSemestre = DataBase::getPDO()->prepare("INSERT INTO utilisateur(identifiant, prenom, nom, sexe, mail, mdp, droits)
|
||||||
|
VALUES(:identifiant, :prenom, :nom, :sexe, :mail, DEFAULT, :droits)"); // par défaut le nom du semestre = "Sn" où n est le rang
|
||||||
|
$creerSemestre->execute(array(
|
||||||
|
':identifiant' => $identifiant,
|
||||||
|
':prenom' => $prenom,
|
||||||
|
':nom' => $nom,
|
||||||
|
':sexe' => $sexe,
|
||||||
|
':mail' => $mail,
|
||||||
|
':droits' => 'student'
|
||||||
|
));
|
||||||
|
|
||||||
|
/* [4] On vérifie que la formation a été créé et retourne son UID
|
||||||
|
======================================================*/
|
||||||
|
$getEtudiantUID = DataBase::getPDO()->prepare("SELECT identifiant as id
|
||||||
|
FROM utilisateur
|
||||||
|
WHERE identifiant = :identifiant");
|
||||||
|
$getEtudiantUID->execute(array( ':identifiant' => $identifiant ));
|
||||||
|
|
||||||
|
return $etudiantUID = $getEtudiantUID->fetch()['id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
24
test.php
24
test.php
|
@ -46,14 +46,28 @@ require_once __ROOT__.'/manager/security.php';
|
||||||
|
|
||||||
debug();
|
debug();
|
||||||
require_once __ROOT__.'/manager/phpExcel.php';
|
require_once __ROOT__.'/manager/phpExcel.php';
|
||||||
|
require_once __ROOT__.'/manager/groups.php';
|
||||||
|
|
||||||
$request = new stdClass(); $answer = new stdClass();
|
$r1 = new stdClass(); $a1 = new stdClass();
|
||||||
$request->level_1 = 'import_userlist_group';
|
$r1->level_1 = 'import_userlist_group';
|
||||||
$request->docPath = __ROOT__.'/src/files/modele_import_inscrits.xlsx';
|
$r1->docPath = __ROOT__.'/src/files/modele_import_inscrits.xlsx';
|
||||||
|
|
||||||
xlsx_switch_lvl1($request, $answer);
|
xlsx_switch_lvl1($r1, $a1);
|
||||||
|
|
||||||
|
|
||||||
|
if( $a1->request == 'success' ){
|
||||||
|
|
||||||
|
$r2 = new stdClass(); $a2 = new stdClass();
|
||||||
|
$r2->level_1 = 'addUserlist';
|
||||||
|
$r2->rang = 1;
|
||||||
|
$r2->annee = 2018;
|
||||||
|
$r2->formationList = $a1->formationList;
|
||||||
|
|
||||||
|
groups_switch_level_1($r2, $a2);
|
||||||
|
|
||||||
|
var_dump( $a2 );
|
||||||
|
}
|
||||||
|
|
||||||
var_dump( $answer->formationList );
|
|
||||||
|
|
||||||
// $request = new stdClass(); $answer = new stdClass();
|
// $request = new stdClass(); $answer = new stdClass();
|
||||||
// $request->level_1 = 'updateRole';
|
// $request->level_1 = 'updateRole';
|
||||||
|
|
Loading…
Reference in New Issue