From 04c5ccc89127ce7320dc2538f3ca2dccebc3ca03 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Fri, 14 Jun 2024 14:34:15 +0200 Subject: [PATCH] use setAbbrecher, set UnterbrecherFas --- .../api/frontend/v1/stv/Status.php | 59 +++-- application/libraries/PrestudentLib.php | 204 ++++++++++++++++++ .../Details/Prestudent/MultiStatus.js | 3 +- system/phrasesupdate.php | 20 ++ 4 files changed, 271 insertions(+), 15 deletions(-) diff --git a/application/controllers/api/frontend/v1/stv/Status.php b/application/controllers/api/frontend/v1/stv/Status.php index f85780141..83096630c 100644 --- a/application/controllers/api/frontend/v1/stv/Status.php +++ b/application/controllers/api/frontend/v1/stv/Status.php @@ -141,11 +141,6 @@ class Status extends FHCAPI_Controller $lastStatusData = current(getData($result)); //Different handling depending on newStatus - if($status_kurzbz == 'Abbrecher' || $status_kurzbz == 'Unterbrecher') - { - $ausbildungssemester = $lastStatusData->ausbildungssemester; - $studiensemester_kurzbz = $lastStatusData->studiensemester_kurzbz; - } if($status_kurzbz == 'Absolvent' || $status_kurzbz == 'Diplomand') { $ausbildungssemester = $lastStatusData->ausbildungssemester; @@ -175,7 +170,6 @@ class Status extends FHCAPI_Controller //Check Reihungstest - //TODO(manu) test if(REIHUNGSTEST_CHECK) { if($status_kurzbz=='Bewerber' && !$reihungstest_angetreten) @@ -185,18 +179,15 @@ class Status extends FHCAPI_Controller } //Check ZGV - //TODO(manu) test if(!defined("ZGV_CHECK") || ZGV_CHECK) { if($status_kurzbz=='Bewerber' && $zgv_code=='') { return $this->terminateWithError($this->p->t('lehre','error_ZGVNichtEingetragen', ['name' => $name]), self::ERROR_TYPE_GENERAL); - } } //Check ZGV-Master - //TODO(manu) test $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); $result = $this->StudiengangModel->load([ 'studiengang_kz'=> $stg @@ -291,6 +282,45 @@ class Status extends FHCAPI_Controller } } + //different handling of StudStati + if($status_kurzbz == 'Abbrecher') + { + $studiensemester_kurzbz = $lastStatusData->studiensemester_kurzbz; + + $this->load->model('crm/Statusgrund_model', 'StatusgrundModel'); + $result = $this->StatusgrundModel->load($statusgrund_id); + if (isError($result)) + { + return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); + } + $result = current(getData($result)); + $statusgrund_kurzbz = $result->statusgrund_kurzbz; + + $this->load->library('PrestudentLib'); + $result = $this->prestudentlib->setAbbrecher($prestudent_id, $studiensemester_kurzbz, null, $statusgrund_kurzbz, $datum, $bestaetigtam, $bestaetigtvon); + if (isError($result)) + { + return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); + } + else + $this->terminateWithSuccess($prestudent_id); + } + + //TODO(Manu) setUnterbrecher FasLogic! + if($status_kurzbz == 'Unterbrecher') + { + $ausbildungssemester = $lastStatusData->ausbildungssemester; + $studiensemester_kurzbz = $lastStatusData->studiensemester_kurzbz; + + $this->load->library('PrestudentLib'); + $result = $this->prestudentlib->setUnterbrecherFas($prestudent_id, $studiensemester_kurzbz, $ausbildungssemester, $datum, $bestaetigtam, $bestaetigtvon); + if (isError($result)) + { + return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); + } + else + $this->terminateWithSuccess($prestudent_id); + } // Start DB transaction $this->db->trans_begin(); // Beginnen der Transaktion @@ -345,13 +375,14 @@ class Status extends FHCAPI_Controller $gruppe = $studentData->gruppe == '' ? '' : $studentData->gruppe; $studiengang_kz = $studentData->studiengang_kz; + //TODO(Manu) DEPRECATED //Handle Abbrecher and Unterbrecher - if($status_kurzbz == 'Abbrecher' || $status_kurzbz == 'Unterbrecher') +/* if($status_kurzbz == 'Abbrecher' || $status_kurzbz == 'Unterbrecher') { $ausbildungssemester = 0; $gruppe = ''; $verband = $status_kurzbz == 'Abbrecher' ? 'A' : 'B'; - } + }*/ //process studentlehrverband $this->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel'); @@ -371,9 +402,9 @@ class Status extends FHCAPI_Controller //update(fuer Abbrecher und Unterbrecher) //implemented for multiaction "status ändern" - //TODO(Manu) implement also for newStatus? - if($status_kurzbz == 'Abbrecher' || $status_kurzbz == 'Unterbrecher') + //TODO(Manu) DEPRECATED +/* if($status_kurzbz == 'Abbrecher' || $status_kurzbz == 'Unterbrecher') { $result = $this->StudentModel->update( [ @@ -414,7 +445,7 @@ class Status extends FHCAPI_Controller } } - } + }*/ } $this->db->trans_commit(); diff --git a/application/libraries/PrestudentLib.php b/application/libraries/PrestudentLib.php index ae4ad59c6..c73d4c117 100644 --- a/application/libraries/PrestudentLib.php +++ b/application/libraries/PrestudentLib.php @@ -409,4 +409,208 @@ class PrestudentLib return success(); } + + public function setUnterbrecherFas($prestudent_id, $studiensemester_kurzbz, $ausbildungssemester, $datum, $bestaetigtAm, $bestaetigtVon) + { + $insertvon = getAuthUID(); + + $result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id, $studiensemester_kurzbz); + if (isError($result)) + return $result; + $result = getData($result); + if (!$result) { + //NOTE(manu): only valid if nextSemester focus max + + $result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id); + if (isError($result)) + return $result; + $result = getData($result); + + //check if ausbildungssemester is last + $this->_ci->StudiengangModel->addJoin('public.tbl_prestudent p', 'studiengang_kz'); + $res = $this->_ci->StudiengangModel->loadWhere(['p.prestudent_id' => $prestudent_id]); + if(isError($res)) + return $res; + if(!hasData($res)) + return error($this->_ci->p->t('studierendenantrag', 'error_no_stg_for_prestudent', [ + 'prestudent_id' => $prestudent_id + ])); + + $studiengang = current(getData($res)); + $prestudent_status = current($result); + if($prestudent_status->ausbildungssemester + 1 < $studiengang->max_semester) + $ausbildungssemester_plus = 1; + + if(!$result) + { + return error($this->_ci->p->t('studierendenantrag', 'error_no_prestudent_in_sem', [ + 'prestudent_id' => $prestudent_id, + 'studiensemester_kurzbz' => $studiensemester_kurzbz + ])); + } + } + + $prestudent_status = current($result); + $result = $this->_ci->StudentModel->loadWhere(['prestudent_id' => $prestudent_id]); + + if (isError($result)) + return $result; + $result = getData($result); + if (!$result) + return error($this->_ci->p->t('studierendenantrag', 'error_no_student_for_prestudent', ['prestudent_id' => $prestudent_id])); + + $student = current($result); + +/* $resultAntrag = $this->_ci->StudierendenantragModel->load($studierendenantrag_id); + if (isError($resultAntrag)) + return $resultAntrag; + $resultAntrag = getData($resultAntrag); + if (!$resultAntrag) + return error($this->_ci->p->t('studierendenantrag', 'error_no_antrag_found', ['id' => $studierendenantrag_id])); + + $antrag = current($resultAntrag);*/ + + //Status updaten + $result = $this->_ci->PrestudentstatusModel->insert([ + 'prestudent_id' => $prestudent_id, + 'status_kurzbz' => Prestudentstatus_model::STATUS_UNTERBRECHER, + 'studiensemester_kurzbz' => $studiensemester_kurzbz, + 'ausbildungssemester' => $ausbildungssemester, + 'datum' => date('c'), + 'insertvon' => $insertvon, + 'insertamum' => date('c'), + 'orgform_kurzbz'=> $prestudent_status->orgform_kurzbz, + 'studienplan_id'=> $prestudent_status->studienplan_id, + 'bestaetigtvon' => $insertvon, + 'bestaetigtam' => date('c'), +/* 'anmerkung'=> 'Wiedereinstieg ' . $antrag->datum_wiedereinstieg*/ + ]); + + if (isError($result)) + return $result; + + //Verband anlegen + $result = $this->_ci->LehrverbandModel->load([ + 'studiengang_kz' => $student->studiengang_kz, + 'semester' => 0, + 'verband' => 'B', + 'gruppe' => '' + ]); + + if (isError($result)) + return $result; + $result = getData($result); + if (!$result) + { + $result = $this->_ci->LehrverbandModel->load([ + 'studiengang_kz' => $student->studiengang_kz, + 'semester' => 0, + 'verband' => '', + 'gruppe' => '' + ]); + if (isError($result)) + return $result; + $result = getData($result); + + if(!$result) + { + $this->_ci->LehrverbandModel->insert([ + 'studiengang_kz' => $student->studiengang_kz, + 'semester' => 0, + 'verband' => '', + 'gruppe' => '', + 'bezeichnung' => 'Ab-Unterbrecher', + 'aktiv' => true, + ]); + } + + $this->_ci->LehrverbandModel->insert([ + 'studiengang_kz' => $student->studiengang_kz, + 'semester' => 0, + 'verband' => 'B', + 'gruppe' => '', + 'bezeichnung' => 'Unterbrecher', + 'aktiv' => true + ]); + } + + //noch nicht eingetragene Zeugnisnoten auf 9 setzen + $result = $this->_ci->ZeugnisnoteModel->getZeugnisnoten($student->student_uid, $studiensemester_kurzbz); + if (isError($result)) + return $result; + $result = getData($result) ?: []; + + foreach ($result as $lv) + { + if (!$lv->note) + { + $result = $this->_ci->ZeugnisnoteModel->insert([ + 'note' => 9, + 'studiensemester_kurzbz' => $lv->studiensemester_kurzbz, + 'student_uid' => $lv->uid, + 'lehrveranstaltung_id' => $lv->lehrveranstaltung_id + ]); + if (isError($result)) { + $result = $this->_ci->ZeugnisnoteModel->update([ + 'studiensemester_kurzbz' => $lv->studiensemester_kurzbz, + 'student_uid' => $lv->uid, + 'lehrveranstaltung_id' => $lv->lehrveranstaltung_id + ], [ + 'note' => 9 + ]); + + if (isError($result)) + return $result; + } + } + } + + + //Update Aktionen + + //StudentModel updaten + $this->_ci->StudentModel->update([ + 'student_uid' => $student->student_uid + ], [ + 'verband' => 'B', + 'gruppe' => '', + 'semester' => 0, + 'updatevon' => $insertvon, + 'updateamum' => date('c') + ]); + + //Studentlehrverband setzen + $result = $this->_ci->StudentlehrverbandModel->loadWhere([ + 'studiensemester_kurzbz' => $studiensemester_kurzbz, + 'student_uid' => $student->student_uid + ]); + if (hasData($result)) { + $this->_ci->StudentlehrverbandModel->update([ + 'studiensemester_kurzbz' => $studiensemester_kurzbz, + 'student_uid' => $student->student_uid + ], [ + 'studiengang_kz' => $student->studiengang_kz, + 'semester' => 0, + 'verband' => 'B', + 'gruppe' => '', + 'updateamum' => date('c'), + 'updatevon' => $insertvon + ]); + } else { + $this->_ci->StudentlehrverbandModel->insert([ + 'student_uid' => $student->student_uid, + 'studiensemester_kurzbz' => $studiensemester_kurzbz, + 'studiengang_kz' => $student->studiengang_kz, + 'semester' => 0, + 'verband' => 'B', + 'gruppe' => '', + 'insertamum' => date('c'), + 'insertvon' => $insertvon + ]); + } + + return success(); + } + + } diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/MultiStatus.js b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/MultiStatus.js index 43da6bd2d..1fe619160 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/MultiStatus.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/MultiStatus.js @@ -126,6 +126,7 @@ export default{ {title: "BestätigtAm", field: "format_bestaetigtam"}, {title: "AbgeschicktAm", field: "format_bewerbung_abgeschicktamum", visible:false}, {title: "Statusgrund", field: "statusgrund_kurzbz"}, + {title: "Bezeichnung", field: "bezeichnung_mehrsprachig[0]"}, {title: "Organisationsform", field: "orgform_kurzbz", visible: false}, {title: "PrestudentInId", field: "prestudent_id", visible: false}, {title: "StudienplanId", field: "studienplan_id", visible: false}, @@ -1185,7 +1186,7 @@ export default{