diff --git a/application/controllers/components/stv/Status.php b/application/controllers/components/stv/Status.php index ec46d7d16..80bc69e17 100644 --- a/application/controllers/components/stv/Status.php +++ b/application/controllers/components/stv/Status.php @@ -44,17 +44,24 @@ class Status extends FHC_Controller $this->outputJson($result); } + public function getLastBismeldestichtag() + { + $this->load->model('codex/Bismeldestichtag_model', 'BismeldestichtagModel'); + + $result = $this->BismeldestichtagModel->getLastReachedMeldestichtag(); + if (isError($result)) { + $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); + } + $this->outputJson($result); + } + public function addNewStatus($prestudent_id) { -/* $this->load->library('form_validation'); + $granted_Ass = $this->permissionlib->getSTG_isEntitledFor('assistenz') ? $this->permissionlib->getSTG_isEntitledFor('assistenz') : []; + $granted_Adm = $this->permissionlib->getSTG_isEntitledFor('admin') ? $this->permissionlib->getSTG_isEntitledFor('admin') : []; + $granted = array_merge($granted_Ass, $granted_Adm); - - if ($this->form_validation->run() == false) - { - return $this->outputJsonError($this->form_validation->error_array()); - }*/ - - //check rights + //get Studiengang von prestudent_id $this->load->model('crm/Prestudent_model', 'PrestudentModel'); $this->PrestudentModel->addJoin('public.tbl_person p', 'ON (p.person_id = public.tbl_prestudent.person_id)'); $result = $this->PrestudentModel->load([ @@ -73,11 +80,6 @@ class Status extends FHC_Controller $name = trim($result->vorname . " ". $result->nachname); $zgv_code = $result->zgv_code; - //TODO(Manu) check: Annahme, dass hier immer suid bei Berechtigung STG vergeben wird! - $granted_Ass = $this->permissionlib->getSTG_isEntitledFor('assistenz') ? $this->permissionlib->getSTG_isEntitledFor('assistenz') : []; - $granted_Adm = $this->permissionlib->getSTG_isEntitledFor('admin') ? $this->permissionlib->getSTG_isEntitledFor('admin') : []; - $granted = array_merge($granted_Ass, $granted_Adm); - $isStudent = false; if(!in_array($stg, $granted)){ @@ -125,10 +127,10 @@ class Status extends FHC_Controller } //Todo(manu) check if this check makes sense? -/* if($status_kurzbz != 'Student') - { - $ausbildungssemester = $lastStatusData->ausbildungssemester; - }*/ + /* if($status_kurzbz != 'Student') + { + $ausbildungssemester = $lastStatusData->ausbildungssemester; + }*/ //check if Rolle already exists $result = $this->PrestudentstatusModel->checkIfExistingPrestudentRolle($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester); @@ -226,7 +228,6 @@ class Status extends FHC_Controller } } - //TODO(Manu) check permission... $hasPermissionToSkipStatusCheck = $this->permissionlib->isBerechtigt('student/keine_studdatuspruefung'); /* var_dump($hasPermissionToSkipStatusCheck); @@ -263,13 +264,9 @@ class Status extends FHC_Controller $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); return $this->outputJson(getError($result->code)); } -/* if($result->retval == "0") - { - $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); - return $this->outputJson($result->code); - }*/ } + // Start DB transaction $this->db->trans_start(false); @@ -279,9 +276,8 @@ class Status extends FHC_Controller 'status_kurzbz' => $status_kurzbz, 'bewerbung_abgeschicktamum' => $bewerbung_abgeschicktamum, 'studiensemester_kurzbz' => $studiensemester_kurzbz, - 'studienplan_id' => $studienplan_id, + 'studienplan_id' => $lastStatusData->studienplan_id, 'ausbildungssemester' => $ausbildungssemester, - 'anmerkung' => $anmerkung, 'statusgrund_id' => $statusgrund_id, 'insertvon' => $uid, 'insertamum' => date('c'), @@ -304,7 +300,6 @@ class Status extends FHC_Controller if($isStudent) { - //Studentlehrverband anlegen $this->load->model('crm/Student_model', 'StudentModel'); $result = $this->StudentModel->checkIfUid($prestudent_id); if (isError($result)) { @@ -313,38 +308,67 @@ class Status extends FHC_Controller } $student_uid = $result->retval; - //check if Lehrverband exists + //load student + $result = $this->StudentModel->loadWhere( + array( + 'student_uid' => $student_uid + ) + ); + if (isError($result)) { + $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); + $this->outputJson($result); + } + if (!hasData($result)) { + $this->outputJson($result); + } + $studentData = current(getData($result)); + $verband = $studentData->verband == '' ? '' : $studentData->verband; + $gruppe = $studentData->gruppe == '' ? '' : $studentData->gruppe; + + //check if Studentlehrverband exists $this->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel'); - $result = $this->StudentlehrverbandModel->checkIfLehrverbandExists($student_uid, $studiensemester_kurzbz); + $result = $this->StudentlehrverbandModel->checkIfStudentLehrverbandExists($student_uid, $studiensemester_kurzbz); if (isError($result)) { $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); return $this->outputJson(getError($result)); } - if ($result->retval == "0") { - //load Data Lehrverband - $result = $this->StudentlehrverbandModel->load( - [ - 'student_uid' => $student_uid, - 'studiensemester_kurzbz' => $studiensemester_kurzbz - ]); - if (isError($result)) { - $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); - - return $this->outputJson("Error in insert Studentlehrverband"); - } - $lvbData = current(getData($result)); - + if ($result->retval == "0") + { $result = $this->StudentlehrverbandModel->insert( [ 'student_uid' => $student_uid, 'studiensemester_kurzbz' => $studiensemester_kurzbz, 'semester' => $ausbildungssemester, - 'verband' => $lvbData->verband, - 'gruppe' => $lvbData->gruppe, + 'verband' => $verband, + 'gruppe' => $gruppe, 'insertamum' => date('c'), 'insertvon' => $uid, - 'studiengang_kz' => $lvbData->studiengang_kz + 'studiengang_kz' => $studentData->studiengang_kz ]); + + if (isError($result)) { + $this->db->trans_rollback(); + $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); + + return $this->outputJson("Error in insert Studentlehrverband"); + } + } + else + { + $result = $this->StudentlehrverbandModel->update( + [ + 'student_uid' => $student_uid, + 'studiensemester_kurzbz' => $studiensemester_kurzbz + ], + [ + 'semester' => $ausbildungssemester, + 'verband' => $verband, + 'gruppe' => $gruppe, + 'updateamum' => date('c'), + 'updatevon' => $uid, + 'studiengang_kz' => $studentData->studiengang_kz + ]); + if (isError($result)) { $this->db->trans_rollback(); $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); @@ -354,10 +378,12 @@ class Status extends FHC_Controller } } $this->db->trans_commit(); - return $this->outputJsonSuccess(true); + return $this->outputJsonSuccess(true); } + + public function loadStatus() { $_POST = json_decode(utf8_encode($this->input->raw_input_stream), true); @@ -405,28 +431,28 @@ class Status extends FHC_Controller //TODO(Manu) check permissions: warum sind beim Löschen andere Berechtigungen? //ich darf keine Stati anlegen, aber löschen, wenn mehr als einer übrig??? -/* $granted_Ass = $this->permissionlib->getSTG_isEntitledFor('assistenz'); - $granted_Adm = $this->permissionlib->getSTG_isEntitledFor('admin'); - $granted = array_merge($granted_Ass, $granted_Adm); + /* $granted_Ass = $this->permissionlib->getSTG_isEntitledFor('assistenz'); + $granted_Adm = $this->permissionlib->getSTG_isEntitledFor('admin'); + $granted = array_merge($granted_Ass, $granted_Adm); - $this->load->model('crm/Prestudent_model', 'PrestudentModel'); - $result = $this->PrestudentModel->load([ - 'prestudent_id'=> $prestudent_id, - ]); - if(isError($result)) - { - $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); - return $this->outputJson(getError($result)); - } - $result = current(getData($result)); - $stg = $result->studiengang_kz; + $this->load->model('crm/Prestudent_model', 'PrestudentModel'); + $result = $this->PrestudentModel->load([ + 'prestudent_id'=> $prestudent_id, + ]); + if(isError($result)) + { + $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); + return $this->outputJson(getError($result)); + } + $result = current(getData($result)); + $stg = $result->studiengang_kz; - if(!in_array($stg, $granted)) - { - $result = "Sie haben keine Schreibrechte fuer diesen Studiengang!"; - $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); - return $this->outputJson($result); - }*/ + if(!in_array($stg, $granted)) + { + $result = "Sie haben keine Schreibrechte fuer diesen Studiengang!"; + $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); + return $this->outputJson($result); + }*/ $isBerechtigtAdmin = $this->permissionlib->isBerechtigt('admin', null, 'suid'); $isBerechtigtNoStudstatusCheck = $this->permissionlib->isBerechtigt('student/keine_studstatuspruefung', null, 'suid'); @@ -564,11 +590,13 @@ class Status extends FHC_Controller public function updateStatus($key_prestudent_id, $key_status_kurzbz, $key_studiensemester_kurzbz, $key_ausbildungssemester) { - //TODO(Manu) check: Annahme, dass hier immer suid bei Berechtigung STG vergeben wird! + $hasPermissionToSkipStatusCheck = $this->permissionlib->isBerechtigt('student/keine_studdatuspruefung'); $granted_Ass = $this->permissionlib->getSTG_isEntitledFor('assistenz') ? $this->permissionlib->getSTG_isEntitledFor('assistenz') : []; $granted_Adm = $this->permissionlib->getSTG_isEntitledFor('admin') ? $this->permissionlib->getSTG_isEntitledFor('admin') : []; $granted = array_merge($granted_Ass, $granted_Adm); + $isStudent = false; + //get Studiengang von prestudent_id $this->load->model('crm/Prestudent_model', 'PrestudentModel'); $result = $this->PrestudentModel->load([ @@ -588,6 +616,9 @@ class Status extends FHC_Controller $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); return $this->outputJson($result); } + + + //var_dump($key_prestudent_id, $key_status_kurzbz, $key_studiensemester_kurzbz, $key_ausbildungssemester); /* $this->load->library('form_validation'); @@ -615,57 +646,134 @@ class Status extends FHC_Controller $rt_stufe = $this->input->post('rt_stufe'); $bestaetigtvon = $uid; - // Start DB transaction - //$this->db->trans_start(false); + //check if Bismeldestichtag erreicht + if(!$hasPermissionToSkipStatusCheck) + { + $this->load->model('codex/Bismeldestichtag_model', 'BismeldestichtagModel'); + $result = $this->BismeldestichtagModel->checkIfMeldestichtagErreicht($datum, $studiensemester_kurzbz); + if (isError($result)) { + $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(getError($result->code)); + //Fehlermeldung überschrieben, passender + return $this->outputJson("Meldestichtag erreicht - Bearbeiten nicht mehr möglich"); + } + } //check if Rolle already exists if(($key_studiensemester_kurzbz != $studiensemester_kurzbz) || ($key_ausbildungssemester != $ausbildungssemester)) + { + $result = $this->PrestudentstatusModel->checkIfExistingPrestudentRolle($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester); + if (isError($result)) { - $result = $this->PrestudentstatusModel->checkIfExistingPrestudentRolle($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester); - if (isError($result)) - { - $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); - } + $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); + } + } + + //check if studentrolle already exists + if($status_kurzbz == 'Student') + { + $this->load->model('crm/Student_model', 'StudentModel'); + $result = $this->StudentModel->checkIfExistingStudentRolle($prestudent_id); + if (isError($result)) + { + $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); + return $this->outputJson(getError($result)); + } + if($result->retval == "0") + { + $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); + return $this->outputJson($result->code); + } + if($result->retval != "0") + { + $isStudent = true; + } + } - //TODO(Manu) check permissions - $hasPermissionToSkipStatusCheck = $this->permissionlib->isBerechtigt('student/keine_studdatuspruefung'); - /* var_dump($hasPermissionToSkipStatusCheck); - $basis = $this->permissionlib->isBerechtigt('basis/prestudent'); - var_dump($basis);*/ if(!$hasPermissionToSkipStatusCheck) { //Block STATUSCHECKS - //bei update wohl nicht? -/* $new_status_datum = isset($datum) ? $datum : date('Y-m-d'); - $result = $this->PrestudentstatusModel->checkDatumNewStatus($new_status_datum); + + //$new_status_datum = isset($datum) ? $datum : date('Y-m-d'); + + $result = $this->PrestudentstatusModel->checkIfValidStatusHistory($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $datum, $ausbildungssemester); if (isError($result)) { $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); return $this->outputJson(getError($result)); - }*/ - - $new_status_datum = isset($datum) ? $datum : date('Y-m-d'); - - $result = $this->PrestudentstatusModel->checkIfValidStatusHistory($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $new_status_datum, $ausbildungssemester); - if (isError($result)) - { - $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); - return $this->outputJson(getError($result)); - //return $this->outputJson("DEBUG: in Funktion checkIfValidStatusHistory"); } - $statusArr = $result; //wenn return result ok - } + + // Start DB transaction + $this->db->trans_start(false); + + if($isStudent) + { + //Studentlehrverband anlegen + $this->load->model('crm/Student_model', 'StudentModel'); + $result = $this->StudentModel->checkIfUid($prestudent_id); + if (isError($result)) { + $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); + return $this->outputJson(getError($result)); + } + $student_uid = $result->retval; + + //check if Lehrverband exists + $this->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel'); + $result = $this->StudentlehrverbandModel->checkIfLehrverbandExists($student_uid, $studiensemester_kurzbz); + if (isError($result)) { + $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); + return $this->outputJson(getError($result)); + } + if ($result->retval == "0") { + //load Data Studentlehrverband + $result = $this->StudentlehrverbandModel->load( + [ + 'student_uid' => $student_uid, + 'studiensemester_kurzbz' => $studiensemester_kurzbz + ]); + if (isError($result)) { + $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); + + return $this->outputJson("Error in insert Studentlehrverband"); + } + $lvbData = current(getData($result)); + + $result = $this->StudentlehrverbandModel->insert( + [ + 'student_uid' => $student_uid, + 'studiensemester_kurzbz' => $studiensemester_kurzbz, + 'semester' => $ausbildungssemester, + 'verband' => $lvbData->verband, + 'gruppe' => $lvbData->gruppe, + 'insertamum' => date('c'), + 'insertvon' => $uid, + 'studiengang_kz' => $lvbData->studiengang_kz + ]); + + if (isError($result)) + { + $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); + + return $this->outputJson("Error in insert Studentlehrverband"); + } + } + } + + //update status $result = $this->PrestudentstatusModel->update( [ 'prestudent_id' => $key_prestudent_id, @@ -690,20 +798,24 @@ class Status extends FHC_Controller 'rt_stufe' => $rt_stufe ] ); - if (isError($result)) + + // Transaction complete! + $this->db->trans_complete(); + + 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(getError($result)); } - if (!hasData($result)) { - return error('No Statusdata vorhanden'); - } + + + $this->db->trans_commit(); return $this->outputJsonSuccess(true); } public function advanceStatus($key_prestudent_id, $key_status_kurzbz, $key_studiensemester_kurzbz, $key_ausbildungssemester) { - //TODO(Manu) check: Annahme, dass hier immer suid bei Berechtigung STG vergeben wird! $granted_Ass = $this->permissionlib->getSTG_isEntitledFor('assistenz') ? $this->permissionlib->getSTG_isEntitledFor('assistenz') : []; $granted_Adm = $this->permissionlib->getSTG_isEntitledFor('admin') ? $this->permissionlib->getSTG_isEntitledFor('admin') : []; $granted = array_merge($granted_Ass, $granted_Adm); @@ -827,6 +939,7 @@ class Status extends FHC_Controller return $this->outputJson(getError($result)); } + //TodoManu -> check if student, was wenn kein Studentstatus //Studentlehrverband anlegen $this->load->model('crm/Student_model', 'StudentModel'); $result = $this->StudentModel->checkIfUid($key_prestudent_id); @@ -837,9 +950,9 @@ class Status extends FHC_Controller } $student_uid = $result->retval; - //check if Lehrverband exists + //check if Studentehrverband exists $this->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel'); - $result = $this->StudentlehrverbandModel->checkIfLehrverbandExists($student_uid, $studiensem_next); + $result = $this->StudentlehrverbandModel->checkIfStudentlehrverbandExists($student_uid, $studiensem_next); if (isError($result)) { $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); @@ -847,7 +960,7 @@ class Status extends FHC_Controller } if ($result->retval == "0") { - //load Data Lehrverband + //load Data Studentlehrverband $result = $this->StudentlehrverbandModel->load( [ 'student_uid' => $student_uid, @@ -860,6 +973,7 @@ class Status extends FHC_Controller return $this->outputJson("Error in insert Studentlehrverband"); } $lvbData = current(getData($result)); + var_dump($lvbData); $result = $this->StudentlehrverbandModel->insert( [ @@ -881,6 +995,7 @@ class Status extends FHC_Controller } } $this->db->trans_commit(); + return $this->outputJsonSuccess(true); } @@ -961,7 +1076,9 @@ class Status extends FHC_Controller ], [ 'bestaetigtam' => date('c'), - 'bestaetigtvon' => $uid + 'bestaetigtvon' => $uid, + 'updateamum='=> date('c'), + 'updatevon=' => $uid ] ); if (isError($result)) diff --git a/application/models/codex/Bismeldestichtag_model.php b/application/models/codex/Bismeldestichtag_model.php index e0491de01..329a4248c 100644 --- a/application/models/codex/Bismeldestichtag_model.php +++ b/application/models/codex/Bismeldestichtag_model.php @@ -1,7 +1,6 @@ load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); + $result = $this->StudiensemesterModel->loadWhere( + array( + 'studiensemester_kurzbz' => $studiensemester_kurzbz + ) + ); + if(isError($result)) + { + $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); + return $this->outputJson(getError($result)); + } + $result = current(getData($result)); + + $studiensemester_ende = $result->ende; + } + // letztes erreichtes Bismeldedatum holen $result = $this->getLastReachedMeldestichtag(); if (isError($result)) @@ -68,7 +87,6 @@ class Bismeldestichtag_model extends DB_Model } $stichtag = current(getData($result)); $stichtag = $stichtag->meldestichtag; - var_dump($status_datum . " < " . $stichtag . "?"); // Prüfen, ob Studentstatusdatum oder Studiensemester vor dem Stichtagsdatum liegen if (isset($statusDatum)) @@ -77,6 +95,11 @@ class Bismeldestichtag_model extends DB_Model $erreicht = $statusDatum < $stichtag; } + if (isset($studiensemester_ende)) + { + $erreicht = $erreicht || $studiensemester_ende < $stichtag; + } + if($erreicht) return success("1", "Studentstatus mit Datum oder Semesterende vor erreichtem Meldestichtag können nicht hinzugefügt werden"); diff --git a/application/models/education/Studentlehrverband_model.php b/application/models/education/Studentlehrverband_model.php index e27b14b00..632dd302b 100644 --- a/application/models/education/Studentlehrverband_model.php +++ b/application/models/education/Studentlehrverband_model.php @@ -14,14 +14,12 @@ class Studentlehrverband_model extends DB_Model } /** - * Check if Rolle already exists - * @param integer $prestudent_id - * @param string $status_kurzbz + * Check if Studentlehrverband already exists + * @param string $student_id * @param string $studiensemester_kurzbz - * @param integer $ausbildungssemester * @return 1: if Rolle exists, 0: if it doesn't */ - public function checkIfLehrverbandExists($student_uid, $studiensemester_kurzbz) + public function checkIfStudentlehrverbandExists($student_uid, $studiensemester_kurzbz) { $qry = "SELECT * @@ -40,11 +38,11 @@ class Studentlehrverband_model extends DB_Model } elseif (!hasData($result)) { - return success("0", "Kein Lehrverband vorhanden!"); + return success("0", "Kein Studentlehrverband vorhanden!"); } else { - return success("1","Lehrverband vorhanden!"); + return success("1","Studentlehrverband vorhanden!"); } } } diff --git a/application/models/organisation/Lehrverband_model.php b/application/models/organisation/Lehrverband_model.php index 953e4b7b2..43c0ac917 100644 --- a/application/models/organisation/Lehrverband_model.php +++ b/application/models/organisation/Lehrverband_model.php @@ -11,4 +11,37 @@ class Lehrverband_model extends DB_Model $this->dbTable = 'public.tbl_lehrverband'; $this->pk = array('gruppe', 'verband', 'semester', 'studiengang_kz'); } + + /** + * Check if Lehrverband already exists + * @param string $student_id + * @param string $studiensemester_kurzbz + * @return 1: if Rolle exists, 0: if it doesn't + */ + public function checkIfLehrverbandExists($student_uid, $studiensemester_kurzbz) + { + $qry = "SELECT + * + FROM + public.tbl_studentlehrverband + WHERE + student_uid = ? + AND + studiensemester_kurzbz = ?"; + + $result = $this->execQuery($qry, array($student_uid, $studiensemester_kurzbz)); + + if (isError($result)) + { + return error($result); + } + elseif (!hasData($result)) + { + return success("0", "Kein Lehrverband vorhanden!"); + } + else + { + return success("1","Lehrverband vorhanden!"); + } + } } diff --git a/public/css/Studentenverwaltung.css b/public/css/Studentenverwaltung.css index 3f12660ff..f77988451 100644 --- a/public/css/Studentenverwaltung.css +++ b/public/css/Studentenverwaltung.css @@ -40,6 +40,13 @@ html { width: 0%; } +.tabulator-row.disabled.tabulator-row-odd .tabulator-cell { + color: var(--gray-400); +} +.tabulator-row.disabled.tabulator-row-even .tabulator-cell { + color: var(--gray-500); +} + @media (min-width: 768px) { #sidebarMenu { visibility: visible!important; diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/Status.js b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/Status.js index 450ca6283..c55c8a39d 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/Status.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/Status.js @@ -71,11 +71,20 @@ export default{ title: 'Aktionen', field: 'actions', minWidth: 150, // Ensures Action-buttons will be always fully displayed formatter: (cell, formatterParams, onRendered) => { + + + //let disableButton = false; + //const rowData = this.row.getData(); + + let container = document.createElement('div'); container.className = "d-flex gap-2"; let button = document.createElement('button'); - button.className = 'btn btn-outline-secondary btn-action'; + if (this.dataMeldestichtag && this.dataMeldestichtag > cell.getData().datum) + button.className = 'btn btn-outline-secondary btn-action disabled'; + else + button.className = 'btn btn-outline-secondary btn-action'; button.innerHTML = ''; button.title = 'Status vorrücken'; button.addEventListener('click', () => @@ -84,7 +93,10 @@ export default{ container.append(button); button = document.createElement('button'); - button.className = 'btn btn-outline-secondary btn-action'; + if (this.dataMeldestichtag && this.dataMeldestichtag > cell.getData().datum) + button.className = 'btn btn-outline-secondary btn-action disabled'; + else + button.className = 'btn btn-outline-secondary btn-action'; button.innerHTML = ''; button.title = 'Status bestätigen'; button.addEventListener('click', () => @@ -93,7 +105,10 @@ export default{ container.append(button); button = document.createElement('button'); - button.className = 'btn btn-outline-secondary btn-action'; + if (this.dataMeldestichtag && this.dataMeldestichtag > cell.getData().datum) + button.className = 'btn btn-outline-secondary btn-action disabled'; + else + button.className = 'btn btn-outline-secondary btn-action'; button.innerHTML = ''; button.title = 'Status bearbeiten'; button.addEventListener('click', (event) => @@ -102,7 +117,10 @@ export default{ container.append(button); button = document.createElement('button'); - button.className = 'btn btn-outline-secondary btn-action'; + if (this.dataMeldestichtag && this.dataMeldestichtag > cell.getData().datum) + button.className = 'btn btn-outline-secondary btn-action disabled'; + else + button.className = 'btn btn-outline-secondary btn-action'; button.innerHTML = ''; button.title = 'Status löschen'; button.addEventListener('click', () => @@ -115,6 +133,14 @@ export default{ frozen: true }, ], + rowFormatter: (row) => { + const rowData = row.getData(); + if (this.dataMeldestichtag && this.dataMeldestichtag > rowData.datum) + { + row.getElement().classList.add('disabled'); + + } + }, layout: 'fitDataFill', layoutColumnsOnNewData: false, height: 'auto', @@ -128,17 +154,15 @@ export default{ aufnahmestufen: {'': '-- keine Auswahl --', 1: 1, 2: 2, 3: 3}, listStatusgruende: [], statusId: {}, - gruendeLength: {} + gruendeLength: {}, + dataMeldestichtag: null, + stichtag: {} } }, computed: { gruende() { return this.listStatusgruende.filter(grund => grund.status_kurzbz == this.statusData.status_kurzbz); }, -/* gruendeLength() { - //return Object.keys(this.gruende).length; - return 33; - }*/ }, watch: { data: { @@ -185,16 +209,6 @@ export default{ if(this.statusData) this.$refs.deleteStatusModal.show(); }); - -/* this.loadStatus({ - 'prestudent_id': this.prestudent_id, - 'status_kurzbz': status, - 'studiensemester_kurzbz': stdsem, - 'ausbildungssemester': ausbildungssemester - }).then(() => { - if(this.statusData) - this.$refs.deleteStatusModal.show(); - });*/ }, actionAdvanceStatus(status, stdsem, ausbildungssemester){ console.log("Action: Status vorrücken: (" + status + ": " + stdsem + "/" + ausbildungssemester + ")") @@ -227,7 +241,7 @@ export default{ addNewStatus(){ CoreRESTClient.post('components/stv/Status/addNewStatus/' + this.prestudent_id, this.statusData - ).then(response => { + ).then(response => { if (!response.data.error) { this.$fhcAlert.alertSuccess('Speichern erfolgreich'); this.hideModal('newStatusModal'); @@ -318,7 +332,7 @@ export default{ const errorData = result.data.retval; this.$fhcAlert.alertError('Kein Status mit Id ' + status_id + ' gefunden'); } -/* return result;*/ + /* return result;*/ }).catch(error => { if (error.response) { //console.log(error.response); @@ -412,16 +426,25 @@ export default{ this.listStatusgruende = result; }) .catch(this.$fhcAlert.handleSystemError); + CoreRESTClient + .get('components/stv/Status/getLastBismeldestichtag/') + .then(result => CoreRESTClient.getData(result.data) || []) + .then(result => { + this.dataMeldestichtag = result[0].meldestichtag; + }) + .catch(this.$fhcAlert.handleSystemError); }, template: `
TestData
- {{statusData}} -