. */ if (! defined('BASEPATH')) exit('No direct script access allowed'); //require_once('../../../include/studiengang.class.php'); //require_once('../../../include/student.class.php'); //require_once('../../../include/datum.class.php'); //require_once('../../../include/mail.class.php'); //require_once('../../../include/benutzerberechtigung.class.php'); //require_once('../../../include/phrasen.class.php'); //require_once('../../../include/projektarbeit.class.php'); //require_once('../../../include/projektbetreuer.class.php'); class Lehre extends FHCAPI_Controller { /** * Object initialization */ public function __construct() { parent::__construct([ 'lvStudentenMail' => self::PERM_LOGGED, 'LV' => self::PERM_LOGGED, 'Pruefungen' => self::PERM_LOGGED, 'semesterAverageGrade' => self::PERM_LOGGED, ]); } //------------------------------------------------------------------------------------------------------------------ // Public methods /** * constructs the emails of the groups from a lehrveranstaltung */ public function lvStudentenMail() { $lehreinheit_id = $this->input->get("lehreinheit_id",TRUE); // return early if the required parameter is missing if(!isset($lehreinheit_id)) { $this->terminateWithError('Missing required parameter', self::ERROR_TYPE_GENERAL); } $this->load->model('education/Lehreinheit_model', 'LehreinheitModel'); $studentenMails = $this->LehreinheitModel->getStudentenMail($lehreinheit_id); $studentenMails = $this->getDataOrTerminateWithError($studentenMails); //convert array of objects into array of strings $studentenMails = array_map(function($element){ return $element->mail; }, $studentenMails); $this->terminateWithSuccess($studentenMails); } public function LV($studiensemester_kurzbz, $lehrveranstaltung_id) { $this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel'); $result = $this->LehrveranstaltungModel->getLvsByStudentWithGrades(getAuthUID(), $studiensemester_kurzbz, getUserLanguage(), $lehrveranstaltung_id); $result = current($this->getDataOrTerminateWithError($result)); $this->terminateWithSuccess($result); } /** * fetches all Pruefungen of a student for a specific lehrveranstaltung * if the student passed the Pruefung on the first attempt, no information about the Pruefungen is stored in the database * @param mixed $lehrveranstaltung_id * @return void */ public function Pruefungen($lehrveranstaltung_id) { $this->load->model('education/Pruefung_model', 'PruefungModel'); $result = $this->PruefungModel->getByStudentAndLv(getAuthUID(), $lehrveranstaltung_id, getUserLanguage()); $result = $this->getDataOrTerminateWithError($result); $this->terminateWithSuccess($result); } /** * calculates and returns the grade average and weighted average for a specific semester * @param string $studiensemester_kurzbz * @return void */ public function semesterAverageGrade($studiensemester_kurzbz) { $this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel'); $semesterLvs = $this->LehrveranstaltungModel->getLvsByStudentWithGrades(getAuthUID(), $studiensemester_kurzbz, getUserLanguage()); if (isError($semesterLvs)) return $this->outputJsonError(getError($semesterLvs)); $semesterLvsData = getData($semesterLvs); $doGradesExist = false; $sum = 0; $count = 0; $sumWeighted = 0; $sumEcts = 0; foreach ($semesterLvsData as $lv) { if (!$lv->znote || $lv->znote < 1 || $lv->znote > 5) continue; $doGradesExist = true; $sum += $lv->znote; $count++; $sumWeighted += $lv->znote * floatval($lv->ects); $sumEcts += floatval($lv->ects); } $averageGrade = null; $weightedAverageGrade = null; if ($doGradesExist) { $averageGrade = $sum/$count; $weightedAverageGrade = $sumWeighted/$sumEcts; } $this->terminateWithSuccess(['average_grade' => $averageGrade, 'weighted_average_grade' => $weightedAverageGrade]); } }