removed legacy classes (except mobility) and moved crud functionality to LePruefungModel, LVgesamtnoteModel & LehrveranstaltungModel;

This commit is contained in:
Johann Hoffmann
2025-08-07 14:54:41 +02:00
parent bbe55a75ea
commit 367204a1ee
5 changed files with 413 additions and 306 deletions
+349 -275
View File
@@ -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() {
@@ -782,4 +782,8 @@ class Prestudent_model extends DB_Model
return $this->execQuery($query, array($person_id));
}
public function getMobilityPrestudent(){
}
}
@@ -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);
}
}
@@ -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));
}
}
@@ -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 = {
<div class="col-lg-auto">
<Dropdown @change="leChanged" :style="{'width': '100%'}" :optionLabel="getOptionLabelLe"
v-model="selectedLehreinheit" :options="lehreinheiten" showClear appendTo="self">
<template #optionsgroup="slotProps">
<div> {{ option.infoString }} </div>
<template #option="slotProps">
<div>
{{ slotProps.option.infoString }}
<i class="fa-solid fa-user"></i>
{{ slotProps.option.studentcount }}
<i class="fa-solid fa-calendar-days"></i>
{{ slotProps.option.termincount }}
</div>
</template>
</Dropdown>
</div>