diff --git a/application/controllers/api/frontend/v1/Noten.php b/application/controllers/api/frontend/v1/Noten.php index 3b48e1442..dcf57f9f1 100644 --- a/application/controllers/api/frontend/v1/Noten.php +++ b/application/controllers/api/frontend/v1/Noten.php @@ -47,13 +47,11 @@ class Noten extends FHCAPI_Controller 'global' ]); require_once(FHCPATH . 'include/mobilitaet.class.php'); - require_once(FHCPATH . 'include/student.class.php'); - require_once(FHCPATH . 'include/lvgesamtnote.class.php'); - require_once(FHCPATH . 'include/lehrveranstaltung.class.php'); - require_once(FHCPATH . 'include/lehreinheit.class.php'); - require_once(FHCPATH . 'include/studiengang.class.php'); - require_once(FHCPATH . 'include/pruefung.class.php'); + $this->load->model('education/LePruefung_model', 'LePruefungModel'); + $this->load->model('education/Lvgesamtnote_model', 'LvgesamtnoteModel'); + $this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel'); + $this->load->model('crm/Student_model', 'StudentModel'); } public function getStudentenNoten() { @@ -66,8 +64,7 @@ class Noten extends FHCAPI_Controller // todo: check various other berechtigungen if its mitarbeiter/lektor/zugeteilterLektor? - $this->load->model('education/Pruefung_model', 'PruefungModel'); - $this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel'); + // get studenten for lva & sem with zeugnisnote if available $studenten = $this->LehrveranstaltungModel->getStudentsByLv($sem_kurzbz, $lv_id); @@ -81,14 +78,25 @@ class Noten extends FHCAPI_Controller $grades = array(); $student_uids = array_map($func, $studentenData); + + $res = $this->StudentModel->load(['be21b081']); + $this->addMeta('be21b081', $res); + foreach($student_uids as $uid) { $grades[$uid]['grades'] = []; - $student = new student(); - $student->load($uid); - $student->result[]= $student; +// $student = new student(); +// $student->load($uid); +// $student->result[]= $student; + + $res = $this->StudentModel->load([$uid]); + $this->addMeta($uid, $res); + if(!isError($res) && hasData($res)) $student = getData($res)[0]; + $prestudent_id = $student->prestudent_id; + + // TODO: last class to get rid of but this one is complicated $mobility = new mobilitaet(); $mobility->loadPrestudent($prestudent_id); $output = $mobility->result; @@ -99,13 +107,20 @@ class Noten extends FHCAPI_Controller $eintrag = ' (d.d.)'; } $grades[$uid]['mobility'] = $eintrag; - - if ($lvgesamtnote = new lvgesamtnote($lv_id, $uid, $sem_kurzbz)) - { + + $result = $this->LvgesamtnoteModel->getLvGesamtNoten($lv_id, $uid, $sem_kurzbz); + $this->addMeta('getLvGesamtNoten', $result); + if(!isError($result) && hasData($result)) { + $lvgesamtnote = getData($result)[0]; $grades[$uid]['note_lv'] = $lvgesamtnote->note; $grades[$uid]['freigabedatum'] = $lvgesamtnote->freigabedatum; $grades[$uid]['benotungsdatum'] = $lvgesamtnote->benotungsdatum; $grades[$uid]['punkte_lv'] = $lvgesamtnote->punkte; + } else { + $grades[$uid]['note_lv'] = null; + $grades[$uid]['freigabedatum'] = null; + $grades[$uid]['benotungsdatum'] = null; + $grades[$uid]['punkte_lv'] = null; } } @@ -153,6 +168,8 @@ class Noten extends FHCAPI_Controller } } + + // TODO: develop the punkte feature with models // calculate grades points from notenschlüssel if (CIS_GESAMTNOTE_PUNKTE) { @@ -181,13 +198,14 @@ class Noten extends FHCAPI_Controller $note_vorschlag = round($notensumme / $anzahlnoten); } } + $student->note_vorschlag = $note_vorschlag; } } // get all prüfungen with noten held in that semester in that lva - $pruefungen = $this->PruefungModel->getPruefungenByLvStudiensemester($lv_id, $sem_kurzbz); + $pruefungen = $this->LePruefungModel->getPruefungenByLvStudiensemester($lv_id, $sem_kurzbz); $pruefungenData = getData($pruefungen); // $pruefungenData = $this->getDataOrTerminateWithError($pruefungen); $this->addMeta('$pruefungenData', $pruefungenData); @@ -222,9 +240,12 @@ class Noten extends FHCAPI_Controller // TODO: also do something similar when updating/creating a pruefung! foreach($result->noten as $note) { - $lvgesamtnote = new lvgesamtnote(); - if ($lvgesamtnote->load($lv_id, $note->uid, $sem_kurzbz)) + + $result = $this->LvgesamtnoteModel->getLvGesamtNoten($lv_id, $note->uid, $sem_kurzbz); + + if (!isError($result) && hasData($result)) { + $lvgesamtnote = getData($result)[0]; if ($lvgesamtnote->benotungsdatum > $lvgesamtnote->freigabedatum) { $lvgesamtnote->freigabedatum = date("Y-m-d H:i:s"); @@ -264,7 +285,7 @@ class Noten extends FHCAPI_Controller $student_uid = $result->student_uid; $note = $result->note; - $punkte = $result->punkte; + $punkte = null; $datum = $result->datum; $lva_id = $result->lva_id; $lehreinheit_id = $result->lehreinheit_id; @@ -280,79 +301,100 @@ class Noten extends FHCAPI_Controller // $lehreinheit_id = getLehreinheit($db, $lvid, $student_uid, $stsem); // $lehreinheit_id = $result->lehreinheit_id; + + $punkte = null; - $punkte = str_replace(',', '.', $punkte); - - if($punkte!='') - { - // Bei Punkteeingabe wird die Note nochmals geprueft und ggf korrigiert - $notenschluessel = new notenschluessel(); - $note_pruef = $notenschluessel->getNote($punkte, $lva_id, $stsem); - if($note_pruef!=$note) - { - $note = $note_pruef; - $note_dirty=true; - } - } +// if($punkte!='') +// { +// // Bei Punkteeingabe wird die Note nochmals geprueft und ggf korrigiert +// $notenschluessel = new notenschluessel(); +// $note_pruef = $notenschluessel->getNote($punkte, $lva_id, $stsem); +// if($note_pruef!=$note) +// { +// $note = $note_pruef; +// $note_dirty=true; +// } +// } + // TODO: more sophisticated empty check if($note=='') $note = 9; - - $old_note = $note; - // TODO: notwendiger check? -// //Laden der Lehrveranstaltung -// $lv_obj = new lehrveranstaltung(); -// if(!$lv_obj->load($lva_id)) -// die($lv_obj->errormsg); -// -// //Studiengang laden -// $stg_obj = new studiengang($lv_obj->studiengang_kz); -// + + $this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel'); + $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); + + $res = $this->LehrveranstaltungModel->load($lva_id); + if(isError($res) || !hasData($res)) { + $this->terminateWithError('Keine gültige Lehrveranstaltung gefunden für ID: '.$lva_id); + } + + $studiengang_kz = getData($res)[0]->studiengang_kz; + $res = $this->StudiengangModel->load($studiengang_kz); + if(isError($res) || !hasData($res)) { + $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 - $lvgesamtnote = new lvgesamtnote(); - if (!$lvgesamtnote->load($lva_id, $student_uid, $stsem)) - { - $lvgesamtnote->student_uid = $student_uid; - $lvgesamtnote->lehrveranstaltung_id = $lva_id; - $lvgesamtnote->studiensemester_kurzbz = $stsem; - $lvgesamtnote->note = $note; - $lvgesamtnote->punkte = $punkte; - $lvgesamtnote->mitarbeiter_uid = getAuthUID(); - $lvgesamtnote->benotungsdatum = $jetzt; - $lvgesamtnote->freigabedatum = null; - $lvgesamtnote->freigabevon_uid = null; - $lvgesamtnote->bemerkung = null; - $lvgesamtnote->updateamum = null; - $lvgesamtnote->updatevon = null; - $lvgesamtnote->insertamum = $jetzt; - $lvgesamtnote->insertvon = getAuthUID(); - $new = true; -// $response = "neu"; + $result = $this->LvgesamtnoteModel->getLvGesamtNoten($lva_id, $student_uid, $stsem); + if(!isError($result) && !hasData($result)) { + + $id = $this->LvgesamtnoteModel->insert( + array( + 'student_uid' => $student_uid, + 'lehrveranstaltung_id' => $lva_id, + 'studiensemester_kurzbz' => $stsem, + 'note' => $note, + 'punkte' => $punkte, + 'mitarbeiter_uid' => getAuthUID(), + 'benotungsdatum' => $jetzt, + 'freigabedatum' => null, + 'freigabevon_uid' => null, + 'bemerkung' => null, + 'updateamum' => null, + 'updatevon' => null, + 'insertamum' => $jetzt, + 'insertvon' => getAuthUID() + ) + ); + if($id) { + $res = $this->LvgesamtnoteModel->load($id->retval); + if(hasData($res)) $lvgesamtnote = getData($res)[0]; + } } - else + else if(!isError($result) && hasData($result)) { - $lvgesamtnote->note = $note; - $lvgesamtnote->punkte = $punkte; - $lvgesamtnote->benotungsdatum = $jetzt; - $lvgesamtnote->updateamum = $jetzt; - $lvgesamtnote->updatevon = getAuthUID(); - $new = false; -// if ($lvgesamtnote->freigabedatum) -// $response = "update_f"; -// else -// $response = "update"; + $lvgesamtnote = getData($result)[0]; + + $id = $this->LvgesamtnoteModel->update( + [$lvgesamtnote->student_uid, $lvgesamtnote->studiensemester_kurzbz, $lvgesamtnote->lehrveranstaltung_id], + array( + 'note' => $note, + 'punkte' => $punkte, + 'benotungsdatum' => $jetzt, + 'updateamum' => $jetzt, + 'updatevon' => getAuthUID() + ) + ); + + if($id) { + $res = $this->LvgesamtnoteModel->load($id->retval); + if(hasData($res)) $lvgesamtnote = getData($res)[0]; + } + } - $lvgesamtnote->save($new); - + $this->addMeta('$pruefungenChanged', $pruefungenChanged); + $this->addMeta('$lvgesamtnote', $lvgesamtnote); $savedPruefung = $pruefungenChanged['savedPruefung'] ?? null; $extraPruefung = $pruefungenChanged['extraPruefung'] ?? null; // TODO: test - $this->terminateWithSuccess(array($savedPruefung, $lvgesamtnote, $extraPruefung)); + $savedPruefungData = count($savedPruefung) > 0 ? $savedPruefung[0] : null; + $extraPruefungData = count($extraPruefung) > 0 ? $extraPruefung[0] : null; + + $this->terminateWithSuccess(array($savedPruefungData, $lvgesamtnote, $extraPruefungData)); } private function savePruefungstermin($typ, $student_uid, $lva_id, $stsem, $lehreinheit_id, $note, $punkte, $datum) @@ -361,141 +403,165 @@ class Noten extends FHCAPI_Controller $pruefungenChanged = []; + $this->load->model('education/Lvgesamtnote_model', 'LvgesamtnoteModel'); + + if($typ == "Termin2") { + + // Wenn eine Nachprüfung angelegt wird, wird zuerst eine Pruefung mit 1. Termin angelegt welche für die ursprüngliche Note + // vor den Prüfungsantritten zählt + + $result1 = $this->LePruefungModel->getPruefungenByUidTypLvStudiensemester($student_uid, "Termin1", $lva_id, $stsem); + + // if there is a termin 1 entry already do nothing + if(!isError($result1) && hasData($result1)) { - $pr = new Pruefung(); + } else if(!isError($result1) && !hasData($result1)) { + // new entry termin1 - // Wenn eine Pruefung angelegt wird, wird zuerst eine Pruefung mit 1. Termin angelegt - // und dort die Zeugnisnote gespeichert - if($pr->getPruefungen($student_uid, "Termin1", $lva_id, $stsem)) - { - if ($pr->result) + $resultLV = $this->LvgesamtnoteModel->getLvGesamtNoten($lva_id, $student_uid, $stsem); + + $this->addMeta('$resultLV', $resultLV); + + // update Termin1 note + if (hasData($resultLV)) { - // TODO: is this filler if branch really necessary? - $termin1 = 1; + $lvgesamtnote = getData($resultLV)[0]; + $pr_note = $lvgesamtnote->note; + $pr_punkte = $lvgesamtnote->punkte; + $benotungsdatum = $lvgesamtnote->benotungsdatum; } - else + else if(!hasData($resultLV))// set Termin1 note to "noch nicht eingetragen" { - $lvnote = new lvgesamtnote(); - // update Termin1 note - if ($lvnote->load($lva_id, $student_uid, $stsem)) - { - $pr_note = $lvnote->note; - $pr_punkte = $lvnote->punkte; - $benotungsdatum = $lvnote->benotungsdatum; - } - else // set Termin1 note to "noch nicht eingetragen" - { - $pr_note = 9; - $pr_punkte = ''; - $benotungsdatum = $jetzt; - } - - $pr_1 = new Pruefung(); - $pr_1->lehreinheit_id = $lehreinheit_id; - $pr_1->student_uid = $student_uid; - $pr_1->mitarbeiter_uid = getAuthUID(); - $pr_1->note = $pr_note; - $pr_1->punkte = $pr_punkte; - $pr_1->pruefungstyp_kurzbz = "Termin1"; - $pr_1->datum = $benotungsdatum; - $pr_1->anmerkung = ""; - $pr_1->insertamum = $jetzt; - $pr_1->insertvon = getAuthUID(); - $pr_1->updateamum = null; - $pr_1->updatevon = null; - $pr_1->ext_id = null; - $pr_1->new = true; - $pr_1->save(); - $pruefungenChanged['extraPruefung'] = $pr_1; //"neu T1"; + $pr_note = 9; + $pr_punkte = null; + $benotungsdatum = $jetzt; } - $prTermin2 = new Pruefung(); - $pr_2 = new Pruefung(); + $this->addMeta('$pr_punkte', $pr_punkte); + + $id = $this->LePruefungModel->insert( + array( + 'lehreinheit_id' => $lehreinheit_id, + 'student_uid' => $student_uid, + 'mitarbeiter_uid' => getAuthUID(), + 'note' => $pr_note, + 'punkte' => $pr_punkte, + 'pruefungstyp_kurzbz' => "Termin1", + 'datum' => $benotungsdatum, + 'anmerkung' => "", + 'insertamum' => $jetzt, + 'insertvon' => getAuthUID(), + 'updateamum' => null, + 'updatevon' => null, + 'ext_id' => null + ) + ); + if($id) { + $this->addMeta('idTermin1', $id); + $res = $this->LePruefungModel->load($id->retval); + if(hasData($res)) $pruefungenChanged['extraPruefung'] = getData($res); + } + } + + + // Die Pruefung wird als Termin2 eingetragen + $result2 = $this->LePruefungModel->getPruefungenByUidTypLvStudiensemester($student_uid, "Termin2", $lva_id, $stsem); + // if there is a termin 2 entry already update it + if(!isError($result2) && hasData($result2)) { + // update + $termin2 = getData($result2)[0]; + $id = $this->LePruefungModel->update( + $termin2->pruefung_id, + array( + 'updateamum' => $jetzt, + 'updatevon' => getAuthUID(), + 'note' => $note, + 'punkte' => $punkte, + 'datum' => $datum, + 'anmerkung' => "" + ) + ); + if($id) { + $res = $this->LePruefungModel->load($id->retval); + if(hasData($res)) $pruefungenChanged['savedPruefung'] = getData($res); + } - // Die Pruefung wird als Termin2 eingetragen - if ($prTermin2->getPruefungen($student_uid, 'Termin2', $lva_id, $stsem)) - { - if ($prTermin2->result) - { - $pr_2->load($prTermin2->result[0]->pruefung_id); - $pr_2->new = null; - $pr_2->updateamum = $jetzt; - $pr_2->updatevon = getAuthUID(); - $old_note = $pr_2->note; - $pr_2->note = $note; - $pr_2->punkte = $punkte; - $pr_2->datum = $datum; - $pr_2->anmerkung = ""; - $pruefungenChanged['savedPruefung'] = $pr_2; -// $savedPruefung = $pr_2;//"update T2"; - } - else - { - $pr_2->lehreinheit_id = $lehreinheit_id; - $pr_2->student_uid = $student_uid; - $pr_2->mitarbeiter_uid = getAuthUID(); - $pr_2->note = $note; - $pr_2->punkte = $punkte; - $pr_2->pruefungstyp_kurzbz = $typ; - $pr_2->datum = $datum; - $pr_2->anmerkung = ""; - $pr_2->insertamum = $jetzt; - $pr_2->insertvon = getAuthUID(); - $pr_2->updateamum = null; - $pr_2->updatevon = null; - $pr_2->ext_id = null; - $pr_2->new = true; - $old_note = -1; - $pruefungenChanged['savedPruefung'] = $pr_2; -// $savedPruefung = $pr_2;//"new T2"; - } - $pr_2->save(); + } else if(!isError($result2) && !hasData($result2)) { + // new entry termin 2 + + $id = $this->LePruefungModel->insert( + array( + 'lehreinheit_id' => $lehreinheit_id, + 'student_uid' => $student_uid, + 'mitarbeiter_uid' => getAuthUID(), + 'note' => $note, + 'punkte' => null,//$punkte, + 'pruefungstyp_kurzbz' => $typ, + 'datum' => $datum, + 'anmerkung' => "", + 'insertamum' => $jetzt, + 'insertvon' => getAuthUID(), + 'updateamum' => null, + 'updatevon' => null, + 'ext_id' => null + ) + ); + if($id) { + $res = $this->LePruefungModel->load($id->retval); + if(hasData($res)) $pruefungenChanged['savedPruefung'] = getData($res); } } } else if($typ == "Termin3") { - $prTermin3 = new Pruefung(); - $pr_3 = new Pruefung(); + $result3 = $this->LePruefungModel->getPruefungenByUidTypLvStudiensemester($student_uid, "Termin3", $lva_id, $stsem); - if ($prTermin3->getPruefungen($student_uid, 'Termin3', $lva_id, $stsem)) - { - if ($prTermin3->result) - { - $pr_3->load($prTermin3->result[0]->pruefung_id); - $pr_3->new = null; - $pr_3->updateamum = $jetzt; - $pr_3->updatevon = getAuthUID(); - $old_note = $pr_3->note; - $pr_3->note = $note; - $pr_3->punkte = $punkte; - $pr_3->datum = $datum; - $pr_3->anmerkung = ""; - $pruefungenChanged['savedPruefung'] = $pr_3; -// $savedPruefung = $pr_3; //"update T3"; + if(!isError($result3) && hasData($result3)) { + // update + $termin3 = getData($result3)[0]; + + $id = $this->LePruefungModel->update( + $termin3->pruefung_id, + array( + 'updateamum' => $jetzt, + 'updatevon' => getAuthUID(), + 'note' => $note, + 'punkte' => $punkte, + 'datum' => $datum, + 'anmerkung' => "" + ) + ); + if($id) { + $res = $this->LePruefungModel->load($id->retval); + if(hasData($res)) $pruefungenChanged['savedPruefung'] = getData($res); } - else - { - $pr_3->lehreinheit_id = $lehreinheit_id; - $pr_3->student_uid = $student_uid; - $pr_3->mitarbeiter_uid = getAuthUID(); - $pr_3->note = $note; - $pr_3->punkte = $punkte; - $pr_3->pruefungstyp_kurzbz = $typ; - $pr_3->datum = $datum; - $pr_3->anmerkung = ""; - $pr_3->insertamum = $jetzt; - $pr_3->insertvon = getAuthUID(); - $pr_3->updateamum = null; - $pr_3->updatevon = null; - $pr_3->ext_id = null; - $pr_3->new = true; - $old_note = -1; - $pruefungenChanged['savedPruefung'] = $pr_3; -// $savedPruefung = $pr_3; //"new T3"; + + } else if(!isError($result3) && !hasData($result3)) { + // insert new termin3 + + $id = $this->LePruefungModel->insert( + array( + 'lehreinheit_id' => $lehreinheit_id, + 'student_uid' => $student_uid, + 'mitarbeiter_uid' => getAuthUID(), + 'note' => $note, + 'punkte' => null,//$punkte, + 'pruefungstyp_kurzbz' => $typ, + 'datum' => $datum, + 'anmerkung' => "", + 'insertamum' => $jetzt, + 'insertvon' => getAuthUID(), + 'updateamum' => null, + 'updatevon' => null, + 'ext_id' => null + ) + ); + if($id) { + $res = $this->LePruefungModel->load($id->retval); + if(hasData($res)) $pruefungenChanged['savedPruefung'] = getData($res); } - $pr_3->save(); + } } else { // TODO: proper error phrase that explains better why we terminated with error @@ -517,48 +583,53 @@ class Noten extends FHCAPI_Controller $student_uid = $result->student_uid; $sem_kurzbz = $result->sem_kurzbz; $note = $result->note; - - $lvgesamtnote = new lvgesamtnote(); - if (!$lvgesamtnote->load($lv_id, $student_uid, $sem_kurzbz)) - { - $lvgesamtnote->student_uid = $student_uid; - $lvgesamtnote->lehrveranstaltung_id = $lv_id; - $lvgesamtnote->studiensemester_kurzbz = $sem_kurzbz; - $lvgesamtnote->note = trim($note); - $lvgesamtnote->mitarbeiter_uid = getAuthUID(); - $lvgesamtnote->benotungsdatum = date("Y-m-d H:i:s"); - $lvgesamtnote->freigabedatum = null; - $lvgesamtnote->freigabevon_uid = null; - $lvgesamtnote->bemerkung = null; - $lvgesamtnote->updateamum = null; - $lvgesamtnote->updatevon = null; - $lvgesamtnote->insertamum = date("Y-m-d H:i:s"); - $lvgesamtnote->insertvon = getAuthUID(); - $lvgesamtnote->punkte =// TODO: deprecated? - $new = true; - $response = "neu"; - } - else - { - $lvgesamtnote->note = trim($note); - $lvgesamtnote->punkte = null; // TODO: deprecated? - $lvgesamtnote->benotungsdatum = date("Y-m-d H:i:s"); - $lvgesamtnote->updateamum = date("Y-m-d H:i:s"); - $lvgesamtnote->updatevon = getAuthUID(); - $new = false; - if ($lvgesamtnote->freigabedatum) - $response = "update_f"; - else - $response = "update"; - } - if (!$lvgesamtnote->save($new)) - $ret = $lvgesamtnote->errormsg; - else - $ret = $response; - $lvgesamtnote->load($lv_id, $student_uid, $sem_kurzbz); + $result = $this->LvgesamtnoteModel->getLvGesamtNoten($lv_id, $student_uid, $sem_kurzbz); + $this->addMeta('getLvGesamtNoten', $result); + if(!isError($result) && hasData($result)) { + $lvgesamtnote = getData($result)[0]; + + $id = $this->LvgesamtnoteModel->update( + [$lvgesamtnote->student_uid, $lvgesamtnote->studiensemester_kurzbz, $lvgesamtnote->lehrveranstaltung_id], + array( + 'note' => $note, + 'punkte' => null, + 'benotungsdatum' => date("Y-m-d H:i:s"), + 'updateamum' => date("Y-m-d H:i:s"), + 'updatevon' => getAuthUID() + ) + ); + + if($id) { + $res = $this->LvgesamtnoteModel->load($id->retval); + if(hasData($res)) $lvgesamtnote = getData($res)[0]; + } + } else if(!isError($result) && !hasData($result)) { + $id = $this->LvgesamtnoteModel->insert( + array( + 'student_uid' => $student_uid, + 'lehrveranstaltung_id' => $lv_id, + 'studiensemester_kurzbz' => $sem_kurzbz, + 'note' => $note, + 'punkte' => null, + 'mitarbeiter_uid' => getAuthUID(), + 'benotungsdatum' => date("Y-m-d H:i:s"), + 'freigabedatum' => null, + 'freigabevon_uid' => null, + 'bemerkung' => null, + 'updateamum' => null, + 'updatevon' => null, + 'insertamum' => date("Y-m-d H:i:s"), + 'insertvon' => getAuthUID() + ) + ); + if($id) { + $res = $this->LvgesamtnoteModel->load($id->retval); + if(hasData($res)) $lvgesamtnote = getData($res)[0]; + } + } - $this->terminateWithSuccess(array($ret, $lvgesamtnote)); + $this->terminateWithSuccess(array($lvgesamtnote)); } public function saveNotenvorschlagBulk() { @@ -578,53 +649,56 @@ class Noten extends FHCAPI_Controller foreach($noten as $note) { - $lvgesamtnote = new lvgesamtnote(); - if (!$lvgesamtnote->load($lv_id, $note->uid, $sem_kurzbz)) - { - $lvgesamtnote->student_uid = $note->uid; - $lvgesamtnote->lehrveranstaltung_id = $lv_id; - $lvgesamtnote->studiensemester_kurzbz = $sem_kurzbz; - $lvgesamtnote->note = trim($note->note); - $lvgesamtnote->mitarbeiter_uid = getAuthUID(); - $lvgesamtnote->benotungsdatum = date("Y-m-d H:i:s"); - $lvgesamtnote->freigabedatum = null; - $lvgesamtnote->freigabevon_uid = null; - $lvgesamtnote->bemerkung = null; - $lvgesamtnote->updateamum = null; - $lvgesamtnote->updatevon = null; - $lvgesamtnote->insertamum = date("Y-m-d H:i:s"); - $lvgesamtnote->insertvon = getAuthUID(); - $lvgesamtnote->punkte =// TODO: deprecated? - $new = true; - $response = "neu"; - } - else - { - $lvgesamtnote->note = trim($note->note); - $lvgesamtnote->punkte = null; // TODO: deprecated? - $lvgesamtnote->benotungsdatum = date("Y-m-d H:i:s"); - $lvgesamtnote->updateamum = date("Y-m-d H:i:s"); - $lvgesamtnote->updatevon = getAuthUID(); - $new = false; - if ($lvgesamtnote->freigabedatum) - $response = "update_f"; - else - $response = "update"; - } - if (!$lvgesamtnote->save($new)) - $responseMsgs[] = $lvgesamtnote->errormsg; - else - $responseMsgs[] = $response; - - - $lvgesamtnote->load($lv_id, $note->uid, $sem_kurzbz); + $result = $this->LvgesamtnoteModel->getLvGesamtNoten($lv_id, $note->uid, $sem_kurzbz); + $this->addMeta('getLvGesamtNoten', $result); + if(!isError($result) && hasData($result)) { + $lvgesamtnote = getData($result)[0]; + + $id = $this->LvgesamtnoteModel->update( + [$lvgesamtnote->student_uid, $lvgesamtnote->studiensemester_kurzbz, $lvgesamtnote->lehrveranstaltung_id], + array( + 'note' => trim($note->note), + 'punkte' => null, + 'benotungsdatum' => date("Y-m-d H:i:s"), + 'updateamum' => date("Y-m-d H:i:s"), + 'updatevon' => getAuthUID() + ) + ); + + if($id) { + $res = $this->LvgesamtnoteModel->load($id->retval); + if(hasData($res)) $lvgesamtnote = getData($res)[0]; + } + } else if(!isError($result) && !hasData($result)) { + $id = $this->LvgesamtnoteModel->insert( + array( + 'student_uid' => $note->uid, + 'lehrveranstaltung_id' => $lv_id, + 'studiensemester_kurzbz' => $sem_kurzbz, + 'note' => trim($note->note), + 'punkte' => null, + 'mitarbeiter_uid' => getAuthUID(), + 'benotungsdatum' => date("Y-m-d H:i:s"), + 'freigabedatum' => null, + 'freigabevon_uid' => null, + 'bemerkung' => null, + 'updateamum' => null, + 'updatevon' => null, + 'insertamum' => date("Y-m-d H:i:s"), + 'insertvon' => getAuthUID() + ) + ); + if($id) { + $res = $this->LvgesamtnoteModel->load($id->retval); + if(hasData($res)) $lvgesamtnote = getData($res)[0]; + } + } $retLvNoten[] = $lvgesamtnote; } - $this->terminateWithSuccess(array($retLvNoten, $responseMsgs)); - + $this->terminateWithSuccess($retLvNoten); } public function createPruefungen() { diff --git a/application/models/crm/Prestudent_model.php b/application/models/crm/Prestudent_model.php index ff56c3268..04ee23b9a 100644 --- a/application/models/crm/Prestudent_model.php +++ b/application/models/crm/Prestudent_model.php @@ -782,4 +782,8 @@ class Prestudent_model extends DB_Model return $this->execQuery($query, array($person_id)); } + + public function getMobilityPrestudent(){ + + } } diff --git a/application/models/education/LePruefung_model.php b/application/models/education/LePruefung_model.php index 6e51f1975..f2da314bc 100644 --- a/application/models/education/LePruefung_model.php +++ b/application/models/education/LePruefung_model.php @@ -52,4 +52,53 @@ class LePruefung_model extends DB_Model 'student_uid' => $student_uid ]); } + + public function getPruefungenByLvStudiensemester($lv_id, $sem_kurzbz) { + $qry = "SELECT 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 + 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 tbl_lehrveranstaltung.lehrveranstaltung_id = ? + AND tbl_lehreinheit.studiensemester_kurzbz = ? + ORDER BY datum DESC;"; + + return $this->execReadOnlyQuery($qry, array($lv_id, $sem_kurzbz)); + } + + public function getPruefungenByUidTypLvStudiensemester($uid, $typ = null, $lv_id = null, $sem_kurzbz = null) { + $params = [$uid]; + $qry = "SELECT 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 student_uid= ? + AND 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"; + if ($typ != null) + { + $qry .= " AND tbl_pruefungstyp.pruefungstyp_kurzbz = ?"; + $params[] = $typ; + } + + if ($lv_id != null) + { + $qry .= " AND tbl_lehrveranstaltung.lehrveranstaltung_id = ?"; + $params[] = $lv_id; + } + + if ($sem_kurzbz != null) + { + $qry .= " AND tbl_lehreinheit.studiensemester_kurzbz = ?"; + $params[] = $sem_kurzbz; + } + + + $qry .= " ORDER BY datum DESC"; + + return $this->execReadOnlyQuery($qry, $params); + } } diff --git a/application/models/education/Pruefung_model.php b/application/models/education/Pruefung_model.php index d3cc72d69..2f7ba8cf8 100644 --- a/application/models/education/Pruefung_model.php +++ b/application/models/education/Pruefung_model.php @@ -307,18 +307,4 @@ class Pruefung_model extends DB_Model return $this->loadWhereCommitteeExamsFailed(); } - public function getPruefungenByLvStudiensemester($lv_id, $sem_kurzbz) { - $qry = "SELECT 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 - 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 tbl_lehrveranstaltung.lehrveranstaltung_id = ? - AND tbl_lehreinheit.studiensemester_kurzbz = ? - ORDER BY datum DESC;"; - - return $this->execReadOnlyQuery($qry, array($lv_id, $sem_kurzbz)); - } } diff --git a/public/js/components/Cis/Benotungstool/Benotungstool.js b/public/js/components/Cis/Benotungstool/Benotungstool.js index 0b61cfb2d..38198df5a 100644 --- a/public/js/components/Cis/Benotungstool/Benotungstool.js +++ b/public/js/components/Cis/Benotungstool/Benotungstool.js @@ -248,7 +248,7 @@ export const Benotungstool = { this.$api.call(ApiNoten.saveNotenvorschlagBulk(this.lv_id, this.sem_kurzbz, notenbulk)).then(res => { if(res.meta.status === 'success') { this.$fhcAlert.alertWarning('Noten erfolgreich importiert') // TODO: phrase - const lvNoten = res.data[0] + const lvNoten = res.data lvNoten.forEach(lvn => { @@ -605,8 +605,8 @@ export const Benotungstool = { if (res.meta.status === 'success') { const s = this.studenten.find(s => s.uid === data.uid) this.teilnoten[s.uid].note_lv = data.note_vorschlag - s.freigabedatum = this.parseDate(res.data[1]['freigabedatum']) - s.benotungsdatum = this.parseDate(res.data[1]['benotungsdatum']) + s.freigabedatum = this.parseDate(res.data[0]['freigabedatum']) + s.benotungsdatum = this.parseDate(res.data[0]['benotungsdatum']) s.freigegeben = this.checkFreigabe(s.freigabedatum, s.benotungsdatum, s.uid); @@ -992,10 +992,6 @@ export const Benotungstool = { data.push(entry) } }) - - data.forEach(entry => { - entry.infoString += ' | 👥' + entry.studentcount + ' | 📅' + entry.termincount - }) this.lehreinheiten = [...data] @@ -1068,10 +1064,6 @@ export const Benotungstool = { } }) - data.forEach(entry => { - entry.infoString += ' | 👥' + entry.studentcount + ' | 📅' + entry.termincount - }) - this.lehreinheiten = [...data] }) @@ -1135,10 +1127,6 @@ export const Benotungstool = { } }) - data.forEach(entry => { - entry.infoString += ' | 👥' + entry.studentcount + ' | 📅' + entry.termincount - }) - this.lehreinheiten = [...data] }) @@ -1614,8 +1602,14 @@ export const Benotungstool = {