diff --git a/application/controllers/api/frontend/v1/Noten.php b/application/controllers/api/frontend/v1/Noten.php index 5d0569eff..83bda7923 100644 --- a/application/controllers/api/frontend/v1/Noten.php +++ b/application/controllers/api/frontend/v1/Noten.php @@ -170,8 +170,8 @@ class Noten extends FHCAPI_Controller foreach($student_uids as $uid) { $grades[$uid]['grades'] = []; - $res = $this->StudentModel->load([$uid]); - if(!isError($res) && hasData($res)) $student = getData($res)[0]; +// $res = $this->StudentModel->load([$uid]); +// if(!isError($res) && hasData($res)) $student = getData($res)[0]; $result = $this->LvgesamtnoteModel->getLvGesamtNoten($lv_id, $uid, $sem_kurzbz); @@ -504,7 +504,7 @@ class Noten extends FHCAPI_Controller $student_uid = $result->student_uid; $note = $result->note; - $punkte = null; + $punkte = $result->punkte; $datum = $result->datum; $lva_id = $result->lva_id; $lehreinheit_id = $result->lehreinheit_id; @@ -521,17 +521,22 @@ class Noten extends FHCAPI_Controller // $lehreinheit_id = getLehreinheit($db, $lvid, $student_uid, $stsem); // $lehreinheit_id = $result->lehreinheit_id; - $punkte = null; +// $punkte = null; -// if($punkte!='') -// { -// // Bei Punkteeingabe wird die Note nochmals geprueft und ggf korrigiert -// $note_pruef = $this->NotenschluesselaufteilungModel->getNote($punkte, $lva_id, $stsem); -// if($note_pruef!=$note) -// { -// $note = $note_pruef; -// } -// } + if(isset($punkte) && $punkte >= 0) { + // Bei Punkteeingabe wird die Note nochmals geprueft und ggf korrigiert + $result = $this->NotenschluesselaufteilungModel->getNote($punkte, $lva_id, $stsem); + if(isError($result)) { + $this->terminateWithError('notenspiegel hats zrissen'); + } else { + $data = getData($result); + if($data != $note) + { + $note = $data; + } + } + + } // TODO: more sophisticated empty check if($note=='') @@ -552,7 +557,6 @@ class Noten extends FHCAPI_Controller $this->terminateWithError('Kein gültiger Studiengang gefunden für ID: '.$studiengang_kz); } - $pruefungenChanged = $this->savePruefungstermin($typ, $student_uid, $lva_id, $stsem, $lehreinheit_id, $note, $punkte, $datum); //Gesamtnote updaten $result = $this->LvgesamtnoteModel->getLvGesamtNoten($lva_id, $student_uid, $stsem); @@ -603,6 +607,9 @@ class Noten extends FHCAPI_Controller } + // save pruefung after updating lvnote, since pruefungspunkte get loaded by lv punkte + $pruefungenChanged = $this->savePruefungstermin($typ, $student_uid, $lva_id, $stsem, $lehreinheit_id, $note, $punkte, $datum); + $savedPruefung = $pruefungenChanged['savedPruefung'] ?? null; $extraPruefung = $pruefungenChanged['extraPruefung'] ?? null; @@ -615,7 +622,7 @@ class Noten extends FHCAPI_Controller /** * private helper method to update/insert pruefungstermine */ - private function savePruefungstermin($typ, $student_uid, $lva_id, $stsem, $lehreinheit_id, $note, $punkte, $datum) + private function savePruefungstermin($typ, $student_uid, $lva_id, $stsem, $lehreinheit_id, $note, $punkte = '', $datum) { // extra check if the student has lvnote and a zeugnisnote in the relevant lva @@ -680,7 +687,7 @@ class Noten extends FHCAPI_Controller { // TODO: avoid hardcoded noten primary keys! $pr_note = 9; - $pr_punkte = null; + $pr_punkte = ''; $benotungsdatum = $jetzt; } @@ -690,7 +697,7 @@ class Noten extends FHCAPI_Controller 'student_uid' => $student_uid, 'mitarbeiter_uid' => getAuthUID(), 'note' => $pr_note, -// 'punkte' => $pr_punkte, + 'punkte' => $pr_punkte, 'pruefungstyp_kurzbz' => "Termin1", 'datum' => $benotungsdatum, 'anmerkung' => "", @@ -720,7 +727,7 @@ class Noten extends FHCAPI_Controller 'updateamum' => $jetzt, 'updatevon' => getAuthUID(), 'note' => $note, -// 'punkte' => $punkte, + 'punkte' => $punkte, 'datum' => $datum, 'anmerkung' => "" ) @@ -739,7 +746,7 @@ class Noten extends FHCAPI_Controller 'student_uid' => $student_uid, 'mitarbeiter_uid' => getAuthUID(), 'note' => $note, -// 'punkte' => null,//$punkte, + 'punkte' => $punkte, 'pruefungstyp_kurzbz' => $typ, 'datum' => $datum, 'anmerkung' => "", @@ -771,7 +778,7 @@ class Noten extends FHCAPI_Controller 'updateamum' => $jetzt, 'updatevon' => getAuthUID(), 'note' => $note, -// 'punkte' => $punkte, + 'punkte' => $punkte, 'datum' => $datum, 'anmerkung' => "" ) @@ -790,7 +797,7 @@ class Noten extends FHCAPI_Controller 'student_uid' => $student_uid, 'mitarbeiter_uid' => getAuthUID(), 'note' => $note, -// 'punkte' => null,//$punkte, + 'punkte' => $punkte, 'pruefungstyp_kurzbz' => $typ, 'datum' => $datum, 'anmerkung' => "", @@ -979,7 +986,7 @@ class Noten extends FHCAPI_Controller $student_uid = $student->uid; $typ = $student->typ; $note = 9; //$result->note; // TODO: parameterize for import maybe - $punkte = ''; // TODO: check punkte feature + $punkte = ''; // new pruefungen never have punkte, TODO: check if null or '' prefered $lehreinheit_id = $student->lehreinheit_id; $ret[$student->uid] = $this->savePruefungstermin($typ, $student_uid, $lva_id, $stsem, $lehreinheit_id, $note, $punkte, $datum); diff --git a/application/models/education/LePruefung_model.php b/application/models/education/LePruefung_model.php index f2da314bc..35cedc324 100644 --- a/application/models/education/LePruefung_model.php +++ b/application/models/education/LePruefung_model.php @@ -54,13 +54,13 @@ class LePruefung_model extends DB_Model } public function getPruefungenByLvStudiensemester($lv_id, $sem_kurzbz) { - $qry = "SELECT tbl_pruefung.*, tbl_lehrveranstaltung.bezeichnung as lehrveranstaltung_bezeichnung, tbl_lehrveranstaltung.lehrveranstaltung_id, + $qry = "SELECT lehre.tbl_pruefung.*, tbl_lehrveranstaltung.bezeichnung as lehrveranstaltung_bezeichnung, tbl_lehrveranstaltung.lehrveranstaltung_id, tbl_note.bezeichnung as note_bezeichnung, tbl_pruefungstyp.beschreibung as typ_beschreibung, tbl_lehreinheit.studiensemester_kurzbz as studiensemester_kurzbz FROM lehre.tbl_pruefung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung, lehre.tbl_note, lehre.tbl_pruefungstyp - WHERE tbl_pruefung.lehreinheit_id=tbl_lehreinheit.lehreinheit_id + WHERE lehre.tbl_pruefung.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id - AND tbl_pruefung.note = tbl_note.note - AND tbl_pruefung.pruefungstyp_kurzbz=tbl_pruefungstyp.pruefungstyp_kurzbz + AND lehre.tbl_pruefung.note = tbl_note.note + AND lehre.tbl_pruefung.pruefungstyp_kurzbz=tbl_pruefungstyp.pruefungstyp_kurzbz AND tbl_lehrveranstaltung.lehrveranstaltung_id = ? AND tbl_lehreinheit.studiensemester_kurzbz = ? ORDER BY datum DESC;";