[x] Clonage d'un MCC
+ On récupère la dernière année ayant des MCC (au moins un UE) + On clone les semestres + On clone les mcc_ue + On clone les mcc_modules + On duplique les contrôles
This commit is contained in:
parent
5a2d1359b9
commit
e25aa52d96
|
@ -265,9 +265,9 @@ class careerManager{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**********************/
|
/***********************/
|
||||||
/* intégration du MCC */
|
/* intégration des MCC */
|
||||||
/**********************/
|
/***********************/
|
||||||
case 'setMCC': if( permission('admin') ){
|
case 'setMCC': if( permission('admin') ){
|
||||||
|
|
||||||
|
|
||||||
|
@ -283,6 +283,23 @@ class careerManager{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************/
|
||||||
|
/* clonage des MCC */
|
||||||
|
/*******************/
|
||||||
|
case 'cloneMCC': if( permission('admin') ){
|
||||||
|
|
||||||
|
|
||||||
|
if( isset($request->annee) && checkParam($request->annee, 'semestre.annee') ){ // si tout les paramètres sont bons
|
||||||
|
$answer->request = DataBase::getInstance()->cloneMCC($request->annee);
|
||||||
|
}else
|
||||||
|
$answer->request = 'param_error';
|
||||||
|
|
||||||
|
}else
|
||||||
|
$answer->request = 'permission_error';
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -151,6 +151,64 @@ class DataBase{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* clone les MCC de la dernière année à l'année donnée
|
||||||
|
*
|
||||||
|
* @annee<int> L'année de destination
|
||||||
|
*
|
||||||
|
* @return status<String> "success" si tout s'est bien passé, sinon code erreur
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function cloneMCC($annee){
|
||||||
|
// on récupère la dernière année à être référencée, si aucun résultat, on retourne une erreur
|
||||||
|
if( !($srcYear=semestreRepo::getLastMCCYear()['annee']) ) return 'no_mcc_found';
|
||||||
|
|
||||||
|
// année de destination
|
||||||
|
$dstYear = $annee;
|
||||||
|
|
||||||
|
|
||||||
|
/* [1] Pour chaque SEMESTRE de l'année
|
||||||
|
============================================*/
|
||||||
|
$listSemestre = semestreRepo::forYear($srcYear);
|
||||||
|
foreach($listSemestre as $SEMESTRE){
|
||||||
|
// on clone le semestre pour la nouvelle année
|
||||||
|
$newSemestreUID = semestreRepo::creer($SEMESTRE['formation'], $SEMESTRE['nom_formation'], $SEMESTRE['nom'], $SEMESTRE['rang'], $dstYear);
|
||||||
|
|
||||||
|
/* [2] Pour chaque UE de ce semestre
|
||||||
|
============================================*/
|
||||||
|
$listUE = ueRepo::forYear($SEMESTRE['id']);
|
||||||
|
foreach($listUE as $UE){
|
||||||
|
// on clone le mcc_ue mais pour le nouveau semestre
|
||||||
|
$newUEUID = ueRepo::forMCC($newSemestreUID, $UE['nom'], $UE['libelle'], $UE['coefficient']);
|
||||||
|
|
||||||
|
/* [3] Pour chaque MODULE de cet UE
|
||||||
|
============================================*/
|
||||||
|
$listModule = moduleRepo::forYear($UE['id'], $SEMESTRE['id']);
|
||||||
|
foreach($listModule as $MODULE){
|
||||||
|
// on clone le mcc_module mais pour le nouvel mcc_ue
|
||||||
|
$newModuleUID = moduleRepo::forMCC($newUEUID, $MODULE['nom'], $MODULE['libelle'], $MODULE['coefficient']);
|
||||||
|
|
||||||
|
/* [4] Pour chaque CONTRÔLE de ce module
|
||||||
|
============================================*/
|
||||||
|
$listControle = controleRepo::forYear($MODULE['id'], $SEMESTRE['id']);
|
||||||
|
foreach($listControle as $CONTROLE){
|
||||||
|
// on duplique le contrôle mais pour le nouveau mcc_module
|
||||||
|
$newControleUID = controleRepo::forMCC($newModuleUID, $CONTROLE['nom'], $CONTROLE['libelle'], $CONTROLE['coefficient']);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// tout s'est bien déroulé si on est arrivé jusque là
|
||||||
|
return 'success';
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -241,7 +241,7 @@ class controleRepo{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// on retourne enfin l'UID du mcc_ue en question
|
// on retourne enfin l'UID du contrôle en question
|
||||||
return $controleUID;
|
return $controleUID;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -430,4 +430,18 @@ class semestreRepo{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* RETOURNE LA DERNIERE ANNEE AYANT UN MCC
|
||||||
|
*
|
||||||
|
* @return annee<int> Retourne l'année en question
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static function getLastMCCYear(){
|
||||||
|
$getLastMccYear = DataBase::getPDO()->query("SELECT DISTINCT max(s.annee) as annee
|
||||||
|
FROM semestre as s, mcc_ue
|
||||||
|
GROUP BY s.annee");
|
||||||
|
|
||||||
|
return $getLastMccYear->fetch();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -226,4 +226,38 @@ if( creerSemestre != null ){ // si la page est présente
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************/
|
||||||
|
/* GESTION DU CLONAGE DE MCC */
|
||||||
|
/*****************************/
|
||||||
|
var cloneMCC = document.querySelector('#clone_mcc[data-year]');
|
||||||
|
|
||||||
|
if( cloneMCC != null ){ // si la page est présente
|
||||||
|
|
||||||
|
cloneMCC.addEventListener('click', function(e){
|
||||||
|
|
||||||
|
addClass( cloneMCC, 'loading' );
|
||||||
|
|
||||||
|
// année de destination
|
||||||
|
var fAnnee = cloneMCC.dataset.year;
|
||||||
|
|
||||||
|
var request = {
|
||||||
|
level_0: 'career',
|
||||||
|
level_1: 'cloneMCC',
|
||||||
|
annee: fAnnee,
|
||||||
|
}
|
||||||
|
|
||||||
|
API.send(request, function(e){
|
||||||
|
if( e.request == 'success' )
|
||||||
|
reload();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}, false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-->
|
-->
|
|
@ -764,6 +764,26 @@ if( permission('admin') ){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if( permission('admin') ){
|
||||||
|
|
||||||
|
// on définit correctement l'année
|
||||||
|
if( $anneeOpt == null || $anneeOpt < $_SESSION['annee'] || $anneeOpt > $_SESSION['annee']+5 ) $anneeOpt = $_SESSION['annee'];
|
||||||
|
|
||||||
|
|
||||||
|
echo "<section name='clonemcc' data-title='Cloner les MCC'>";
|
||||||
|
|
||||||
|
echo "<div class='p center'>";
|
||||||
|
|
||||||
|
echo "<br>Clonage des MCC de la dernière année pour l'année suivante<br>";
|
||||||
|
echo "<div class='confirm active center' id='clone_mcc' data-year='".($_SESSION['annee']+1)."'>Cloner pour " .($_SESSION['annee']+1). "</div>";
|
||||||
|
|
||||||
|
echo "</div>";
|
||||||
|
|
||||||
|
echo "</section>";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
|
||||||
|
|
3
test.php
3
test.php
|
@ -45,8 +45,7 @@ require_once __ROOT__.'/manager/security.php';
|
||||||
|
|
||||||
|
|
||||||
debug();
|
debug();
|
||||||
$_SESSION['semestre'] = 37;
|
var_dump( semestreRepo::getLastMCCYear() );
|
||||||
var_dump( $_SESSION );
|
|
||||||
|
|
||||||
// [1] On récupère tous les UE d'un étudiant
|
// [1] On récupère tous les UE d'un étudiant
|
||||||
// $uelist = DataBase::getInstance()->getUEsEtudiant('mrd1609a', 16, 2015);
|
// $uelist = DataBase::getInstance()->getUEsEtudiant('mrd1609a', 16, 2015);
|
||||||
|
|
Loading…
Reference in New Issue