diff --git a/application/controllers/api/frontend/v1/stv/Status.php b/application/controllers/api/frontend/v1/stv/Status.php index 24986429d..1bda564fa 100644 --- a/application/controllers/api/frontend/v1/stv/Status.php +++ b/application/controllers/api/frontend/v1/stv/Status.php @@ -11,9 +11,9 @@ class Status extends FHCAPI_Controller parent::__construct([ 'getHistoryPrestudent' => ['admin:r', 'assistenz:r'], 'addNewStatus' => ['admin:r', 'assistenz:r', 'student/keine_studstatuspruefung'], - 'getStatusgruende' => 'assistenz:r', // TODO(manu): self::PERM_LOGGED - 'getLastBismeldestichtag' => 'assistenz:r', // TODO(manu): self::PERM_LOGGED - 'isLastStatus' => 'assistenz:r', // TODO(manu): self::PERM_LOGGED + 'getStatusgruende' => self::PERM_LOGGED, + 'getLastBismeldestichtag' => self::PERM_LOGGED, + 'isLastStatus' => self::PERM_LOGGED, 'deleteStatus' => ['admin:r','assistenz:r'], 'loadStatus' => ['admin:r', 'assistenz:r'], 'updateStatus' => ['admin:r', 'assistenz:r'], @@ -98,7 +98,7 @@ class Status extends FHCAPI_Controller //Variablen für Statuscheck $stg = $result->studiengang_kz; $reihungstest_angetreten = $result->reihungstestangetreten; - $name = trim($result->vorname . " ". $result->nachname); + //$name = trim($result->vorname . " ". $result->nachname); $zgv_code = $result->zgv_code; $isStudent = false; @@ -124,6 +124,7 @@ class Status extends FHCAPI_Controller $statusgrund_id = $this->input->post('statusgrund_id'); $rt_stufe = $this->input->post('rt_stufe'); $bestaetigtvon = $uid; + $name = $this->input->post('name'); //GET lastStatus $result = $this->PrestudentstatusModel->getLastStatus($prestudent_id); @@ -140,7 +141,6 @@ class Status extends FHCAPI_Controller $lastStatusData = current(getData($result)); //Different handling depending on newStatus - //Todo(manu) check later with multiactions /* if($status_kurzbz == 'Absolvent' || $status_kurzbz == 'Diplomand') { //$studiensemester = $semester_aktuell; @@ -163,45 +163,36 @@ class Status extends FHCAPI_Controller if (isError($result)) { return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); -/* $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); - return $this->outputJson(getError($result));*/ } if($result->retval == '1') { -/* $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); - return $this->outputJson($result->code);*/ - return $this->terminateWithError($this->p->t('lehre','error_rolleBereitsVorhanden'), self::ERROR_TYPE_GENERAL); - //return $this->terminateWithError("test error_rolleBereitsVorhanden", self::ERROR_TYPE_GENERAL); + return $this->terminateWithError($name . ": " . $this->p->t('lehre','error_rolleBereitsVorhanden'), self::ERROR_TYPE_GENERAL); } //Check Reihungstest - //TODO(manu) erst später für multiactions releveant + //TODO(manu) test if(REIHUNGSTEST_CHECK) { if($status_kurzbz=='Bewerber' && !$reihungstest_angetreten) { -/* $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); - return $this->outputJson($name . ": Um einen Interessenten zum Bewerber zu machen, muss die Person das Reihungstestverfahren abgeschlossen haben");*/ return $this->terminateWithError($this->p->t('lehre','error_keinReihungstestverfahren', $name), self::ERROR_TYPE_GENERAL); } } //Check ZGV - //TODO(manu) erst später für multiactions releveant + //TODO(manu) test if(!defined("ZGV_CHECK") || ZGV_CHECK) { if($status_kurzbz=='Bewerber' && $zgv_code=='') { -/* $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); - return $this->outputJson($name . ": Um einen Interessenten zum Bewerber zu machen, muss die Zugangsvoraussetzung eingetragen sein.");*/ return $this->terminateWithError($this->p->t('lehre','error_ZGVNichtEingetragen', $name), self::ERROR_TYPE_GENERAL); } } //Check ZGV-Master - //TODO(manu) erst später für multiactions releveant + //TODO(manu) test $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); $result = $this->StudiengangModel->load([ 'studiengang_kz'=> $stg @@ -218,8 +209,6 @@ class Status extends FHCAPI_Controller { if($status_kurzbz=='Bewerber' && $zgv_code=='' && $typ=='m') { -/* $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); - return $this->outputJson($name . ": Um einen Interessenten zum Bewerber zu machen, muss die Zugangsvoraussetzung Master eingetragen sein.");*/ return $this->terminateWithError($this->p->t('lehre','error_ZGVMasterNichtEingetragen', $name), self::ERROR_TYPE_GENERAL); } } @@ -246,8 +235,8 @@ class Status extends FHCAPI_Controller } //check if studentrolle already exists - //TODO(manu) eigener Code für Diplomand? - if($status_kurzbz == 'Student' || $status_kurzbz == 'Diplomand') + //TODO(manu) refactor and test + if($status_kurzbz == 'Student' || $status_kurzbz == 'Diplomand' || $lastStatusData->status_kurzbz == 'Student') { $this->load->model('crm/Student_model', 'StudentModel'); $result = $this->StudentModel->checkIfExistingStudentRolle($prestudent_id); @@ -257,8 +246,6 @@ class Status extends FHCAPI_Controller } if($result->retval == "0") { -/* $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); - return $this->outputJson($result->code);*/ return $this->terminateWithError($this->p->t('lehre','error_noStudstatus'), self::ERROR_TYPE_GENERAL); } if($result->retval != "0") @@ -281,8 +268,10 @@ class Status extends FHCAPI_Controller return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); } + //return $this->terminateWithError($name, self::ERROR_TYPE_GENERAL); $result = $this->PrestudentstatusModel->checkIfValidStatusHistory( $prestudent_id, + $name, $status_kurzbz, $studiensemester_kurzbz, $new_status_datum, @@ -363,8 +352,8 @@ class Status extends FHCAPI_Controller $studiengang_kz = $studentData->studiengang_kz; //Handle Abbrecher and Unterbrecher - //TODO (manu) implement later with multiactions - // not active yet: works only for "status ändern" in FAS + //TODO(manu) for addStatus unterbrecher: valdidaton of ausbildungssemester 0 (default = 1) + //right now: just commented out if($status_kurzbz == 'Abbrecher' || $status_kurzbz == 'Unterbrecher') { $ausbildungssemester = 0; @@ -385,43 +374,59 @@ class Status extends FHCAPI_Controller if ($this->db->trans_status() === false || isError($result)) { $this->db->trans_rollback(); -/* $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); - return $this->outputJson($result->code);*/ return $this->terminateWithError($this->p->t('lehre','error_duringInsertUpdateLehrverband'), self::ERROR_TYPE_GENERAL); } //Student updaten (fuer Abbrecher und Unterbrecher) - //not active yet: works only for "status ändern" in FAS - //Todo(Manu) Later for multiactions - + //implemented for multiaction "status ändern" + //TODO(Manu) implement also for newStatus if($status_kurzbz == 'Abbrecher' || $status_kurzbz == 'Unterbrecher') { $result = $this->StudentModel->update( - [ - 'student_uid' => $student_uid - ], - [ - 'studiengang_kz' => $studiengang_kz, - 'semester' => $ausbildungssemester, - 'verband' => $verband, - 'gruppe' => $gruppe, - 'updateamum' => date('c'), - 'updatevon' => $uid - ]); - if ($this->db->trans_status() === false || isError($result)) - { - $this->db->trans_rollback(); - $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); - return $this->outputJson($result->code); - } + [ + 'student_uid' => $student_uid + ], + [ + 'studiengang_kz' => $studiengang_kz, + 'semester' => $ausbildungssemester, + 'verband' => $verband, + 'gruppe' => $gruppe, + 'updateamum' => date('c'), + 'updatevon' => $uid + ]); + if ($this->db->trans_status() === false || isError($result)) + { + $this->db->trans_rollback(); + return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); } + // detailtab: set active to false if abbrecher + if($status_kurzbz == 'Abbrecher') + { + + $this->load->model('person/Benutzer_model', 'BenutzerModel'); + $result = $this->BenutzerModel->update( + [ + 'uid' => $student_uid + ], + [ + 'aktiv' => false, + 'updateaktivam' => date('Y-m-d'), + 'updateaktivvon' => $uid + ]); + if ($this->db->trans_status() === false || isError($result)) + { + $this->db->trans_rollback(); + return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); + } + } + + } } $this->db->trans_commit(); - //return $this->outputJsonSuccess($prestudent_id); $this->terminateWithSuccess($prestudent_id); } @@ -1013,10 +1018,11 @@ class Status extends FHCAPI_Controller $result = $this->PrestudentstatusModel->checkIfValidStatusHistory( $prestudent_id, + '', $status_kurzbz, $studiensemester_kurzbz, $datum, - $ausbildungssemester + $ausbildungssemesteR ); if (isError($result)) { diff --git a/application/controllers/api/frontend/v1/stv/Student.php b/application/controllers/api/frontend/v1/stv/Student.php index 31fc7075c..62a6b3e95 100644 --- a/application/controllers/api/frontend/v1/stv/Student.php +++ b/application/controllers/api/frontend/v1/stv/Student.php @@ -133,6 +133,7 @@ class Student extends FHCAPI_Controller $result = $this->udflib->getCiValidations($this->PersonModel, $this->input->post()); + //TODO(Manu) check with Chris: input number not allowed $fieldValidations = $this->getDataOrTerminateWithError($result); $this->form_validation->set_rules($fieldvalidations); diff --git a/application/models/crm/Prestudent_model.php b/application/models/crm/Prestudent_model.php index e045eaf84..0b198bb7d 100644 --- a/application/models/crm/Prestudent_model.php +++ b/application/models/crm/Prestudent_model.php @@ -739,7 +739,7 @@ class Prestudent_model extends DB_Model ps.status_kurzbz, ps.studiensemester_kurzbz, ps.ausbildungssemester, - CASE WHEN ps.status_kurzbz IN ('Student', 'Diplomand') + CASE WHEN ps.status_kurzbz IN ('Student', 'Diplomand','Abbrecher','Unterbrecher') THEN CONCAT(lv.semester, lv.verband, lv.gruppe) ELSE '' END AS lehrverband, diff --git a/application/models/crm/Prestudentstatus_model.php b/application/models/crm/Prestudentstatus_model.php index cad3f1b91..44e1d9e65 100644 --- a/application/models/crm/Prestudentstatus_model.php +++ b/application/models/crm/Prestudentstatus_model.php @@ -496,8 +496,9 @@ class Prestudentstatus_model extends DB_Model * @param integer $prestudent_id * @return error if not valid, array StatusArr if valid */ - public function checkIfValidStatusHistory($prestudent_id, $status_kurzbz, $new_status_studiensemester_kurzbz, $new_status_datum, $new_status_ausbildungssemester, $old_status_studiensemester_kurzbz = '', $old_status_ausbildungssemester = '') + public function checkIfValidStatusHistory($prestudent_id, $nameStud, $status_kurzbz, $new_status_studiensemester_kurzbz, $new_status_datum, $new_status_ausbildungssemester, $old_status_studiensemester_kurzbz = '', $old_status_ausbildungssemester = '') { + $name = ($nameStud != '') ? $nameStud . ": " : ''; //$isNewStatus = $this->checkIfNewStatus($prestudent_id, $status_kurzbz); $isNewStatus = $old_status_studiensemester_kurzbz == '' && $old_status_ausbildungssemester == ''; @@ -581,7 +582,7 @@ class Prestudentstatus_model extends DB_Model // Abbrecher- oder Absolventenstatus muss Endstatus sein if (isset($next_status) && in_array($curr_status_kurzbz, $endstatusArr)) { - return error("Nach Abbrecher- und Absolventenstatus darf kein anderer Status mehr eingetragen werden"); + return error($name . "Nach Abbrecher- und Absolventenstatus darf kein anderer Status mehr eingetragen werden"); } // wenn Unterbrecher auf Unterbrecher folgt, muss Ausbildungssemester gleich sein @@ -590,7 +591,7 @@ class Prestudentstatus_model extends DB_Model && $curr_status_ausbildungssemester != $next_status->ausbildungssemester ) { - return error("Aufeinanderfolgende Unterbrecher müssen gleiches Ausbildungssemester haben"); + return error($name . "Aufeinanderfolgende Unterbrecher müssen gleiches Ausbildungssemester haben"); } // wenn Abbrecher auf Unterbrecher folgt, muss Ausbildungssemester gleich sein @@ -599,7 +600,7 @@ class Prestudentstatus_model extends DB_Model && $next_status->status_kurzbz == 'Abbrecher' && $curr_status_ausbildungssemester != $next_status->ausbildungssemester ) { - return error("Unterbrecher und folgender Abbrecher müssen gleiches Ausbildungssemester haben"); + return error($name ."Unterbrecher und folgender Abbrecher müssen gleiches Ausbildungssemester haben"); } // keine Studenten nach Diplomand Status @@ -607,7 +608,7 @@ class Prestudentstatus_model extends DB_Model isset($next_status) && $curr_status_kurzbz == 'Diplomand' && $next_status->status_kurzbz == 'Student' ) { - return error("Nach Diplomandenstatus darf kein Studentenstatus mehr eingetragen werden"); + return error($name . "Nach Diplomandenstatus darf kein Studentenstatus mehr eingetragen werden"); } } diff --git a/application/models/education/Studentlehrverband_model.php b/application/models/education/Studentlehrverband_model.php index 38791a812..6e10be689 100644 --- a/application/models/education/Studentlehrverband_model.php +++ b/application/models/education/Studentlehrverband_model.php @@ -53,12 +53,14 @@ class Studentlehrverband_model extends DB_Model $this->load->model('organisation/Lehrverband_model', 'LehrverbandModel'); $result = $this->LehrverbandModel->checkIfLehrverbandExists($studiengang_kz, $ausbildungssemester, $verband, $gruppe); - if (isError($result)) { + if (isError($result)) + { $this->db->trans_rollback(); return error("0", "Error during update Lehrverband"); } if ($result->retval == "0") { + // Übergeordneten Lehrverband check and/or insert $result = $this->LehrverbandModel->checkIfLehrverbandExists($studiengang_kz, $ausbildungssemester, '', ''); if (isError($result)) { @@ -68,6 +70,7 @@ class Studentlehrverband_model extends DB_Model if ($result->retval == "0") { + $this->terminateWithError("in section 0 und weiter.. wo verband auf leer gesetzt wird", self::ERROR_TYPE_GENERAL); $result = $this->LehrverbandModel->insert([ 'studiengang_kz' => $studiengang_kz, 'semester' => $ausbildungssemester, @@ -104,12 +107,14 @@ class Studentlehrverband_model extends DB_Model // Studentlehrverband insert or update $this->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel'); $result = $this->StudentlehrverbandModel->checkIfStudentLehrverbandExists($student_uid, $studiensemester_kurzbz); - if (isError($result)) { + if (isError($result)) + { $this->db->trans_rollback(); return error(getError($result)); } - if ($result->retval == "0") { + if ($result->retval == "0") + { $result = $this->StudentlehrverbandModel->insert([ 'student_uid' => $student_uid, 'studiensemester_kurzbz' => $studiensemester_kurzbz, diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js index 0b9279475..ad402b5ed 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js @@ -137,8 +137,8 @@ export default { this.listZgvsdoktor = result; }) .catch(this.$fhcAlert.handleSystemError); - CoreRESTClient //TODO(manu) FHCAPI - .get('components/stv/Lists/getStgs') + this.$fhcApi + .get('api/frontend/v1/stv/lists/getStgs') .then(result => CoreRESTClient.getData(result.data) || []) .then(result => { this.listStgs = result; diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/MultiStatus.js b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/MultiStatus.js index ac77f75c8..3d0f101cf 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/MultiStatus.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/MultiStatus.js @@ -63,7 +63,8 @@ export default{ const newObj = { prestudent_id : this.modelValue.prestudent_id, studiensemester_kurzbz : this.defaultSemester, - ausbildungssemester : this.modelValue.semester + ausbildungssemester : this.modelValue.semester, + name: `${this.modelValue.vorname} ${this.modelValue.nachname}` }; dataArray.push(newObj); //console.log(dataArray); @@ -75,14 +76,14 @@ export default{ const newObj = { prestudent_id: item.prestudent_id, ausbildungssemester: item.semester, - studiensemester_kurzbz: this.defaultSemester + studiensemester_kurzbz: this.defaultSemester, + name: `${item.vorname} ${item.nachname}` }; dataArray.push(newObj); } return dataArray; } - }, gruende() { return this.listStatusgruende.filter(grund => grund.status_kurzbz == this.statusData.status_kurzbz); @@ -295,6 +296,7 @@ export default{ this.statusData.ausbildungssemester = 1; this.statusData.datum = this.getDefaultDate(); this.statusData.bestaetigtam = this.getDefaultDate(); + this.statusData.name = this.modelValue.vorname + ' ' + this.modelValue.nachname; this.$refs.newStatusModal.show(); }, actionEditStatus(status, stdsem, ausbildungssemester){ @@ -482,9 +484,6 @@ export default{ changeData = this.newArray.find(item => item.prestudent_id === prestudentId); } - console.log("---"); - console.log(changeData); - return this.$fhcApi.post('api/frontend/v1/stv/status/addNewStatus/' + prestudentId, //this.statusData //this.updateData.find(item => item.prestudent_id == prestudentId) @@ -504,6 +503,7 @@ export default{ .then(values => { if (this.modelValue.prestudent_id) { this.reload(); + //TODO(manu) reload Detailtab after Abbrecher to see current status activ, verband and gruppe } else { this.$reloadList(); @@ -511,6 +511,7 @@ export default{ this.hideModal('newStatusModal'); this.resetModal(); }); + }, advanceStatus(statusId){ return this.$fhcApi.post('api/frontend/v1/stv/status/advanceStatus/' + @@ -673,11 +674,10 @@ export default{ - + - - @@ -844,11 +844,10 @@ export default{ - + - - @@ -1110,41 +1109,6 @@ export default{ - -