diff --git a/application/controllers/api/frontend/v1/stv/Status.php b/application/controllers/api/frontend/v1/stv/Status.php index 9df1a8ec4..63c149a82 100644 --- a/application/controllers/api/frontend/v1/stv/Status.php +++ b/application/controllers/api/frontend/v1/stv/Status.php @@ -280,6 +280,10 @@ class Status extends FHCAPI_Controller $this->form_validation->set_rules('ausbildungssemester', $this->p->t('lehre', 'ausbildungssemester'), 'integer', [ 'integer' => $this->p->t('ui', 'error_fieldNotInteger') ]); + + $this->form_validation->set_rules('statusgrund_id', $this->p->t('international', 'grund'), 'integer', [ + 'integer' => $this->p->t('ui', 'error_fieldNotInteger') + ]); $this->form_validation->set_rules('_default', '', [ ['meldestichtag_not_exceeded', function () use ($datum, $isBerechtigtNoStudstatusCheck) { @@ -455,28 +459,22 @@ class Status extends FHCAPI_Controller ); break; case Prestudentstatus_model::STATUS_UNTERBRECHER: - $ausbildungssemester = $lastStatusData->ausbildungssemester; - $studiensemester_kurzbz = $lastStatusData->studiensemester_kurzbz; - - $this->load->library('PrestudentLib'); - $result = $this->prestudentlib->setUnterbrecher($prestudent_id, $studiensemester_kurzbz, null, null, $ausbildungssemester); - if (isError($result)) - { - return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); - } - else - $this->terminateWithSuccess($prestudent_id); + $result = $this->prestudentlib->setUnterbrecher( + $prestudent_id, + $studiensemester_kurzbz, + null, + null, + $ausbildungssemester, + $statusgrund_id + ); break; case Prestudentstatus_model::STATUS_STUDENT: - $this->load->library('PrestudentLib'); - $result = $this->prestudentlib->setStudent($prestudent_id, $studiensemester_kurzbz, $ausbildungssemester, $statusgrund_id); - - if (isError($result)) - { - return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); - } - else - $this->terminateWithSuccess($prestudent_id); + $result = $this->prestudentlib->setStudent( + $prestudent_id, + $studiensemester_kurzbz, + $ausbildungssemester, + $statusgrund_id + ); break; case Prestudentstatus_model::STATUS_DIPLOMAND: $this->load->library('PrestudentLib'); diff --git a/application/libraries/PrestudentLib.php b/application/libraries/PrestudentLib.php index e8ee7902f..fcbf46419 100644 --- a/application/libraries/PrestudentLib.php +++ b/application/libraries/PrestudentLib.php @@ -77,7 +77,7 @@ class PrestudentLib if(!$bestaetigtam) $bestaetigtam = date('c'); - //Status und Statusgrund updaten + // Status und Statusgrund updaten $result = $this->_ci->PrestudentstatusModel->insert([ 'prestudent_id' => $prestudent_id, 'status_kurzbz' => Prestudentstatus_model::STATUS_ABBRECHER, @@ -96,7 +96,7 @@ class PrestudentLib if (isError($result)) return $result; - //refactored with processStudentlehrverband + // refactored with processStudentlehrverband $result = $this->_ci->StudentlehrverbandModel->processStudentlehrverband( $student->student_uid, $student->studiengang_kz, @@ -111,7 +111,7 @@ class PrestudentLib return $result; - //noch nicht eingetragene Zeugnisnoten auf 9 setzen + // noch nicht eingetragene Zeugnisnoten auf 9 setzen $result = $this->_ci->ZeugnisnoteModel->getZeugnisnoten($student->student_uid, $prestudent_status->studiensemester_kurzbz); if (isError($result)) return $result; @@ -143,9 +143,9 @@ class PrestudentLib } - //Update Aktionen + // Update Aktionen - //StudentModel updaten + // StudentModel updaten $this->_ci->StudentModel->update([ 'student_uid' => $student->student_uid ], [ @@ -156,7 +156,7 @@ class PrestudentLib 'updateamum' => date('c') ]); - //Benutzer inaktiv setzen + // Benutzer inaktiv setzen $this->_ci->BenutzerModel->update([ 'uid' => $student->student_uid ], [ @@ -170,17 +170,28 @@ class PrestudentLib return success(); } - public function setUnterbrecher($prestudent_id, $studiensemester_kurzbz, $studierendenantrag_id = null, $insertvon = null, $ausbildungssemester = null) - { + public function setUnterbrecher( + $prestudent_id, + $studiensemester_kurzbz, + $studierendenantrag_id = null, + $insertvon = null, + $ausbildungssemester = null, + $statusgrund_id = null + ) { $ausbildungssemester_plus = 0; + if (!$insertvon) $insertvon = getAuthUID(); + $result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id, $studiensemester_kurzbz); + if (isError($result)) return $result; + $result = getData($result); - if (!$result) { + + if (!$result) { // NOTE(chris): no status in target stdsem //NOTE(manu): only valid if nextSemester focus max $result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id); @@ -188,7 +199,7 @@ class PrestudentLib return $result; $result = getData($result); - //check if ausbildungssemester is last + // 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)) @@ -213,17 +224,22 @@ class PrestudentLib } $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); - if($studierendenantrag_id) + + if ($studierendenantrag_id) { $resultAntrag = $this->_ci->StudierendenantragModel->load($studierendenantrag_id); if (isError($resultAntrag)) @@ -238,12 +254,12 @@ class PrestudentLib else $anmerkung = ''; - if($ausbildungssemester) + if ($ausbildungssemester) $semester = $ausbildungssemester; else $semester = $prestudent_status->ausbildungssemester + $ausbildungssemester_plus; - //Status updaten + // Status updaten $result = $this->_ci->PrestudentstatusModel->insert([ 'prestudent_id' => $prestudent_id, 'status_kurzbz' => Prestudentstatus_model::STATUS_UNTERBRECHER, @@ -256,13 +272,14 @@ class PrestudentLib 'studienplan_id'=> $prestudent_status->studienplan_id, 'bestaetigtvon' => $insertvon, 'bestaetigtam' => date('c'), - 'anmerkung'=> $anmerkung + 'anmerkung'=> $anmerkung, + 'statusgrund_id' => $statusgrund_id ]); if (isError($result)) return $result; - //refactored with processStudentlehrverband + // refactored with processStudentlehrverband $result = $this->_ci->StudentlehrverbandModel->processStudentlehrverband( $student->student_uid, $student->studiengang_kz, @@ -276,7 +293,7 @@ class PrestudentLib if (isError($result)) return $result; - //noch nicht eingetragene Zeugnisnoten auf 9 setzen + // noch nicht eingetragene Zeugnisnoten auf 9 setzen $result = $this->_ci->ZeugnisnoteModel->getZeugnisnoten($student->student_uid, $studiensemester_kurzbz); if (isError($result)) return $result; @@ -308,9 +325,9 @@ class PrestudentLib } - //Update Aktionen + // Update Aktionen - //StudentModel updaten + // StudentModel updaten $this->_ci->StudentModel->update([ 'student_uid' => $student->student_uid ], [ @@ -326,106 +343,112 @@ class PrestudentLib public function setStudent($prestudent_id, $studiensemester_kurzbz, $ausbildungssemester, $statusgrund_id) { + $authUID = getAuthUID(); + $now = date('c'); + + $result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id); + if (isError($result)) return $result; - $resultStatus = getData($result); + if (!hasData($result)) + return error($this->_ci->p->t('studierendenantrag', 'error_no_prestudentstatus', [ + 'prestudent_id' => $prestudent_id + ])); - //if not Wiederholer - if($statusgrund_id != 16) - { - //check if ausbildungssemester is last - $this->_ci->StudiengangModel->addJoin('public.tbl_prestudent p', 'studiengang_kz'); - $resultStg = $this->_ci->StudiengangModel->loadWhere(['p.prestudent_id' => $prestudent_id]); - if(isError($resultStg)) - return $resultStg; - if(!hasData($resultStg)) - return error($this->_ci->p->t('studierendenantrag', 'error_no_stg_for_prestudent', [ - 'prestudent_id' => $prestudent_id - ])); + $prestudent_status = current(getData($result)); - $studiengang = current(getData($resultStg)); - - $prestudent_status = ($resultStatus[0] ?: null ); - if(!$prestudent_status) - { - return error($this->_ci->p->t('studierendenantrag', 'error_no_prestudent_in_sem', [ - 'prestudent_id' => $prestudent_id, - 'studiensemester_kurzbz' => $studiensemester_kurzbz - ])); - } - } - $result = $this->_ci->StudentModel->loadWhere(['prestudent_id' => $prestudent_id]); if (isError($result)) return $result; - $result = getData($result); - if (!$result) + if (!hasData($result)) return error($this->_ci->p->t('studierendenantrag', 'error_no_student_for_prestudent', ['prestudent_id' => $prestudent_id])); - // $student = current($result); + $student = current(getData($result)); - //Status updaten + + $this->_ci->load->library('VariableLib', ['uid' => $authUID]); + $semester_aktuell = $this->variablelib->getVar('semester_aktuell'); + + + // Update Aktionen + + // Status updaten $result = $this->_ci->PrestudentstatusModel->insert([ 'prestudent_id' => $prestudent_id, 'status_kurzbz' => Prestudentstatus_model::STATUS_STUDENT, 'studiensemester_kurzbz' => $studiensemester_kurzbz, 'statusgrund_id' => $statusgrund_id, 'ausbildungssemester' => $ausbildungssemester, - 'datum' => date('c'), - 'insertvon' => getAuthUID(), - 'insertamum' => date('c'), + 'datum' => $now, + 'insertvon' => $authUID, + 'insertamum' => $now, 'orgform_kurzbz'=> $prestudent_status->orgform_kurzbz, 'studienplan_id'=> $prestudent_status->studienplan_id, - 'bestaetigtvon' => getAuthUID(), - 'bestaetigtam' => date('c') + 'bestaetigtvon' => $authUID, + 'bestaetigtam' => $now ]); if (isError($result)) return $result; - $result = $this->_ci->StudentModel->checkIfUid($prestudent_id); - if (isError($result)) { - return $result; - } - //$student_uid = $result->retval; - $student_uid = getData($result); - //load student - $result = $this->_ci->StudentModel->loadWhere( - array( - 'student_uid' => $student_uid - ) - ); - if (isError($result)) - { - return $result; - } - - $studentData = current(getData($result) ? : []); - //TODO(Manu) check why in FAS == 0; correct there?? - //$verband = $studentData->verband == '' ? '' : $studentData->verband; - //$gruppe = $studentData->gruppe == '' ? '' : $studentData->gruppe; - $studiengang_kz = $studentData->studiengang_kz; - - //process studentlehrverband - $this->_ci->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel'); - $result = $this->_ci->StudentlehrverbandModel->processStudentlehrverband( - $student_uid, - $studiengang_kz, - $ausbildungssemester, - "", //TODO(Manu) checkFAS: 0 - "",//TODO(Manu) checkFAS: 0 - $studiensemester_kurzbz - ); + // Student updaten + $result = $this->_ci->StudentModel->update([ + 'student_uid' => $student->student_uid + ], [ + 'studiensemester_kurzbz' => $semester_aktuell, + 'semester' => $ausbildungssemester, + 'verband' => '', + 'gruppe' => '', + 'updatevon' => $authUID, + 'updateamum' => $now + ]); if (isError($result)) - { return $result; + + + // Studentlehrverband updaten + $result = $this->_ci->StudentlehrverbandModel->update([ + 'student_uid' => $student->student_uid, + 'studiensemester_kurzbz' => $semester_aktuell + ], [ + 'semester' => $ausbildungssemester, + 'verband' => '', + 'gruppe' => '', + 'updatevon' => $authUID, + 'updateamum' => $now + ]); + + if (isError($result)) + return $result; + + + // Benutzer updaten + $result = $this->_ci->BenutzerModel->load([$student->student_uid]); + + if (isError($result)) + return $result; + if (!hasData($result)) + return error($this->_ci->p->t('person', 'error_noBenutzer')); + + $benutzer = current(getData($result)); + $updateData = [ + 'aktiv' => true, + 'updateamum' => $now, + 'updatevon' => $authUID + ]; + if (!$benutzer->aktiv) { + $updateData['updateaktivam'] = $now; + $updateData['updateaktivvon'] = $authUID; } + + $this->_ci->BenutzerModel->update([$student->student_uid], $updateData); + return success(); } diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Status/Modal.js b/public/js/components/Stv/Studentenverwaltung/Details/Status/Modal.js index 2b3f2f580..0b0736ea1 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Status/Modal.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Status/Modal.js @@ -371,7 +371,7 @@ export default{ type="select" v-model="formData.statusgrund_id" name="statusgrund_id" - :label="$p.t('studierendenantrag/antrag_grund')" + :label="$p.t('international/grund')" >