/**
  * AJAX ONLY ! - Mise à jour d'une affectation d'élève ou d'enseignant
  */
 public function processUpdateAssignment()
 {
     // Récupération des paramètres
     $userType = _request('user_type', null);
     $userId = _request('user_id', null);
     $classroomId = _request('classroom_id', null);
     $classroomLevel = _request('classroom_level', 0);
     $oldClassroomId = _request('old_classroom_id', null);
     // Paramètres obligatoires
     if (is_null($userType) || is_null($userId) || is_null($classroomId)) {
         return new CopixActionReturn(CopixActionReturn::HTTPCODE, array('Content-Type: text/plain; charset=utf-8', 'HTTP/1.1 400 Bad Request'), 'Une erreur est survenue');
     }
     // Récupération de la classe
     $classroomDAO = _ioDAO('kernel|kernel_bu_ecole_classe');
     if (!($classroom = $classroomDAO->get($classroomId))) {
         return new CopixActionReturn(CopixActionReturn::HTTPCODE, array('Content-Type: text/plain; charset=utf-8', 'HTTP/1.1 404 Not found'), 'Classe non trouvée');
     }
     // Récupération du user
     $userDAO = _ioDAO('kernel|kernel_copixuser');
     $user = $userDAO->getUserByBuIdAndBuType($userId, $userType);
     if (false === $user) {
         return new CopixActionReturn(CopixActionReturn::HTTPCODE, array('Content-Type: text/plain; charset=utf-8', 'HTTP/1.1 404 Not found'), 'Utilisateur non trouvé');
     }
     // Récupération du contexte en session
     $filters = _sessionGet('gestionautonome|assignments_management_filters');
     // Affectation d'un élève
     _classInclude('gestionautonome|GestionAutonomeService');
     if ($userType == 'USER_ELE') {
         // Contrôle de la limite d'enseignants par classe
         if (!GestionAutonomeService::isStudentsLimitByClassroomReached($classroomId)) {
             // Contrôle des droits
             _currentUser()->assertCredential('module:classroom|' . $classroomId . '|student|update@gestionautonome');
             if ($filters['mode'] == 'changeClassroom') {
                 GestionAutonomeService::removeStudentAssignments($userId, $classroom->annee_scol);
             }
             GestionAutonomeService::addStudentAssignment($userId, $classroom, $classroomLevel);
         }
     } else {
         // Contrôle de la limite d'enseignants par classe
         if (!GestionAutonomeService::isTeachersLimitByClassroomReached($classroomId)) {
             // Contrôle des droits
             _currentUser()->assertCredential('module:classroom|' . $classroomId . '|teacher|update@gestionautonome');
             $personEntityDAO = _ioDAO('kernel|kernel_bu_personnel_entite');
             GestionAutonomeService::addPersonAssignmentOnClassroom($userId, $classroom, DAOKernel_bu_personnel_entite::ROLE_TEACHER);
         }
     }
     return new CopixActionReturn(CopixActionReturn::HTTPCODE, array('Content-Type: text/html; charset=utf-8', 'HTTP/1.1 200 OK'), CopixZone::process('gestionautonome|manageAssignments'));
 }