2018-03-14 14:28:41 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace api\module\ue;
|
|
|
|
|
|
|
|
|
|
|
|
use database\core\Repo;
|
|
|
|
use database\repo\cours;
|
|
|
|
use error\core\Error;
|
|
|
|
use error\core\Err;
|
|
|
|
|
|
|
|
class coursController{
|
|
|
|
|
|
|
|
|
2018-03-15 18:17:28 +00:00
|
|
|
/* (1) Create a new Cours
|
|
|
|
*
|
|
|
|
* @code<String> UE code
|
|
|
|
*
|
|
|
|
* @return groups<array> The list of groups for this UE
|
|
|
|
*
|
|
|
|
---------------------------------------------------------*/
|
|
|
|
public static function post($args){
|
|
|
|
$code = "";
|
|
|
|
$idProf = null;
|
|
|
|
$volume = 0;
|
|
|
|
$formations = [];
|
|
|
|
extract($args);
|
|
|
|
|
2018-05-08 12:45:26 +00:00
|
|
|
/* Get the repos */
|
2018-03-15 18:17:28 +00:00
|
|
|
/** @var cours $cours_repo */
|
|
|
|
$cours_repo = Repo::getRepo('cours');
|
2018-05-08 12:45:26 +00:00
|
|
|
/** @var ue $ue_repo */
|
|
|
|
$ue_repo = Repo::getRepo('ue');
|
|
|
|
|
|
|
|
|
|
|
|
/* (1) Fetch default formation from UE
|
|
|
|
---------------------------------------------------------*/
|
|
|
|
/* (1) Try to fetch the cours' UE */
|
|
|
|
$fetched_ue = $ue_repo->get($code);
|
|
|
|
|
|
|
|
/* (2) Manage error */
|
|
|
|
if( !is_array($fetched_ue) || count($fetched_ue) < 1 )
|
|
|
|
return ['error' => new Error(Err::RepoError)];
|
|
|
|
|
|
|
|
$defaultForm = intval($fetched_ue[0]['idForm']);
|
|
|
|
|
|
|
|
/* (3) Add to formation list if got a valid default formation */
|
|
|
|
if( is_int($defaultForm) && $defaultForm >= 0 && !in_array($defaultForm, $formations) )
|
|
|
|
$formations[] = $defaultForm;
|
2018-03-15 18:17:28 +00:00
|
|
|
|
2018-05-08 12:45:26 +00:00
|
|
|
|
|
|
|
/* (2) Create the cours
|
|
|
|
---------------------------------------------------------*/
|
2018-03-15 18:17:28 +00:00
|
|
|
/* (1) Try to create cours */
|
|
|
|
$created_id = $cours_repo->create($code, $idProf, $volume, $formations);
|
|
|
|
|
|
|
|
/* (2) Manage error */
|
|
|
|
if( is_null($created_id) || !is_int($created_id) )
|
|
|
|
return ['error' => new Error(Err::RepoError)];
|
|
|
|
|
2018-05-08 12:45:26 +00:00
|
|
|
|
2018-03-15 18:17:28 +00:00
|
|
|
return ['created_id' => $created_id];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* (2) Get groups for a specific UE
|
2018-03-14 14:28:41 +00:00
|
|
|
*
|
|
|
|
* @code<String> UE code
|
|
|
|
*
|
|
|
|
* @return groups<array> The list of groups for this UE
|
|
|
|
*
|
|
|
|
---------------------------------------------------------*/
|
|
|
|
public static function get($args){
|
|
|
|
$code = "";
|
|
|
|
extract($args);
|
|
|
|
|
|
|
|
/* Get the cours repo */
|
|
|
|
/** @var cours $cours_repo */
|
|
|
|
$cours_repo = Repo::getRepo('cours');
|
|
|
|
|
|
|
|
/* (1) Try to fetch data */
|
|
|
|
$fetched = $cours_repo->getGroups($code);
|
|
|
|
|
|
|
|
/* (2) Manage error */
|
|
|
|
if( is_null($fetched) || !is_array($fetched) )
|
|
|
|
return ['error' => new Error(Err::RepoError)];
|
|
|
|
|
|
|
|
/* (3) Parse JSON list */
|
|
|
|
foreach($fetched as $f=>$v)
|
|
|
|
$fetched[$f]['formations'] = json_decode($v['formations']);
|
|
|
|
|
|
|
|
|
|
|
|
return ['groups' => $fetched];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2018-03-15 18:17:28 +00:00
|
|
|
/* (3) Updates an existing Cours
|
|
|
|
*
|
|
|
|
* @idCours<int> Id of the Cours to update
|
|
|
|
* @idProf<int> [OPT] The new professor ID (-1 to unset)
|
|
|
|
* @volume<int> [OPT] The new number of hours for the Cours
|
|
|
|
* @add_form<array> List of ids of formations to add
|
|
|
|
* @rem_form<array> List of ids of formations to remove
|
|
|
|
*
|
|
|
|
* @return updated<bool> Whether the Cours have been updated
|
|
|
|
*
|
|
|
|
---------------------------------------------------------*/
|
|
|
|
public static function put($args){
|
|
|
|
$idCours = -1;
|
|
|
|
$idProf = null;
|
|
|
|
$volume = null;
|
|
|
|
$add_form = [];
|
|
|
|
$rem_form = [];
|
|
|
|
extract($args);
|
|
|
|
|
|
|
|
/* Get the cours repo */
|
|
|
|
/** @var cours $cours_repo */
|
|
|
|
$cours_repo = Repo::getRepo('cours');
|
|
|
|
|
|
|
|
/* (1) If nothing to do -> error */
|
|
|
|
if( is_null($idProf) && is_null($volume) && count($add_form) + count($rem_form) == 0)
|
|
|
|
return ['error' => new Error(Err::MissingParam)];
|
|
|
|
|
|
|
|
/* (2) If have to update @idProf */
|
|
|
|
if( !is_null($idProf) ){
|
|
|
|
|
|
|
|
// call repo
|
|
|
|
$updated = $cours_repo->updateProf($idCours, $idProf < 0 ? NULL : $idProf );
|
|
|
|
|
|
|
|
// if error -> dispatch
|
|
|
|
if( !$updated )
|
|
|
|
return ['error' => new Error(Err::RepoError)];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/* (3) If have to update @volume */
|
|
|
|
if( !is_null($volume) ){
|
|
|
|
|
|
|
|
// call repo
|
|
|
|
$updated = $cours_repo->updateVolume($idCours, $volume);
|
|
|
|
|
|
|
|
// if error -> dispatch
|
|
|
|
if( !$updated )
|
|
|
|
return ['error' => new Error(Err::RepoError)];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/* (4) If have to add formations -> add them */
|
|
|
|
if( count($add_form) > 0 ){
|
|
|
|
|
|
|
|
foreach($add_form as $id_form)
|
|
|
|
$cours_repo->linkFormation($id_form, $idCours);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/* (5) If have to remove formations -> remove them */
|
|
|
|
if( count($rem_form) > 0 ){
|
|
|
|
|
|
|
|
foreach($rem_form as $id_form)
|
|
|
|
$cours_repo->unlinkFormation($id_form, $idCours);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return ['updated' => true];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* (4) Deletes an existing Cours
|
|
|
|
*
|
|
|
|
* @idCours<int> Id of the Cours
|
|
|
|
*
|
|
|
|
* @return deleted<bool> Whether it has been deleted
|
|
|
|
*
|
|
|
|
---------------------------------------------------------*/
|
|
|
|
public static function delete($args){
|
|
|
|
$idCours = 0;
|
|
|
|
extract($args);
|
|
|
|
|
|
|
|
/* Get the cours repo */
|
|
|
|
/** @var cours $cours_repo */
|
|
|
|
$cours_repo = Repo::getRepo('cours');
|
|
|
|
|
|
|
|
/* (1) Dispatch response from repo */
|
|
|
|
return ['deleted' => $cours_repo->delete($idCours)];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2018-03-14 14:28:41 +00:00
|
|
|
}
|