diff --git a/application/controllers/lehre/anrechnung/ApproveAnrechnungDetail.php b/application/controllers/lehre/anrechnung/ApproveAnrechnungDetail.php index 3a62ff7d9..1a3b6ce32 100644 --- a/application/controllers/lehre/anrechnung/ApproveAnrechnungDetail.php +++ b/application/controllers/lehre/anrechnung/ApproveAnrechnungDetail.php @@ -22,14 +22,14 @@ class approveAnrechnungDetail extends Auth_Controller // Set required permissions parent::__construct( array( - 'index' => 'lehre/anrechnung_genehmigen:r', - 'download' => 'lehre/anrechnung_genehmigen:r', - 'approve' => 'lehre/anrechnung_genehmigen:rw', - 'reject' => 'lehre/anrechnung_genehmigen:rw', - 'requestRecommendation' => 'lehre/anrechnung_genehmigen:rw', - 'withdraw' => 'lehre/anrechnung_genehmigen:rw', - 'withdrawRequestRecommendation' => 'lehre/anrechnung_genehmigen:rw', - 'saveEmpfehlungsNotiz' => 'lehre/anrechnung_genehmigen:rw' + 'index' => self::BERECHTIGUNG_ANRECHNUNG_GENEHMIGEN .':r', + 'download' => self::BERECHTIGUNG_ANRECHNUNG_GENEHMIGEN .':r', + 'approve' => self::BERECHTIGUNG_ANRECHNUNG_GENEHMIGEN .':rw', + 'reject' => self::BERECHTIGUNG_ANRECHNUNG_GENEHMIGEN .':rw', + 'requestRecommendation' => self::BERECHTIGUNG_ANRECHNUNG_GENEHMIGEN .':rw', + 'withdraw' => self::BERECHTIGUNG_ANRECHNUNG_GENEHMIGEN .':rw', + 'withdrawRequestRecommendation' => self::BERECHTIGUNG_ANRECHNUNG_GENEHMIGEN .':rw', + 'saveEmpfehlungsNotiz' => self::BERECHTIGUNG_ANRECHNUNG_GENEHMIGEN .':rw' ) ); @@ -140,6 +140,9 @@ class approveAnrechnungDetail extends Auth_Controller // Approve Anrechnung foreach ($data as $item) { + if (!$this->_checkBerechtigung($item['anrechnung_id'])) + continue; + if ($this->anrechnunglib->approveAnrechnung($item['anrechnung_id'])) { $json[]= array( @@ -185,6 +188,9 @@ class approveAnrechnungDetail extends Auth_Controller // Reject Anrechnung foreach ($data as $item) { + if (!$this->_checkBerechtigung($item['anrechnung_id'])) + continue; + if ($this->anrechnunglib->rejectAnrechnung($item['anrechnung_id'], $item['begruendung'])) { $json[]= array( @@ -220,6 +226,9 @@ class approveAnrechnungDetail extends Auth_Controller return $this->outputJsonError('Fehler beim Übertragen der Daten.'); } + if (!$this->_checkBerechtigung($anrechnung_id)) + $this->terminateWithJsonError($this->p->t('ui', 'fehlerBeimSpeichern')); + $retval = array(); // Check if Anrechnungs-LV has lector @@ -285,6 +294,9 @@ class approveAnrechnungDetail extends Auth_Controller $this->terminateWithJsonError($this->p->t('ui', 'errorFelderFehlen')); } + if (!$this->_checkBerechtigung($anrechnung_id)) + $this->terminateWithJsonError($this->p->t('ui', 'fehlerBeimSpeichern')); + // Delete last status approved / rejected. // If last status is 'approved', Genehmigung is resetted. $result = $this->AnrechnungModel->withdrawApprovement($anrechnung_id); @@ -313,6 +325,9 @@ class approveAnrechnungDetail extends Auth_Controller show_error('Wrong parameter.'); } + if (!$this->_checkBerechtigung($anrechnung_id)) + $this->terminateWithJsonError($this->p->t('ui', 'fehlerBeimSpeichern')); + // Get boolean empfehlung of given Anrechnung if (!$result = getData($this->AnrechnungModel->load($anrechnung_id))[0]) { @@ -362,6 +377,9 @@ class approveAnrechnungDetail extends Auth_Controller $this->terminateWithJsonError($this->p->t('ui', 'systemFehler')); } + if (!$this->_checkBerechtigung($anrechnung_id)) + $this->terminateWithJsonError($this->p->t('ui', 'fehlerBeimSpeichern')); + // Save Empfehlungstext $result = self::_saveEmpfehlungsNotiz($anrechnung_id, $empfehlungstext, $notiz_id); @@ -601,4 +619,17 @@ class approveAnrechnungDetail extends Auth_Controller $this->_uid ); } + + private function _checkBerechtigung($anrechnung_id) + { + $this->AnrechnungModel->addJoin('tbl_prestudent', 'prestudent_id'); + $result = $this->AnrechnungModel->loadWhere(array('anrechnung_id' => $anrechnung_id)); + + if (isError($result) || !hasData($result)) + show_error('Failed retrieving anrechnung'); + + $antragData = getData($result)[0]; + + return $this->permissionlib->isBerechtigt(self::BERECHTIGUNG_ANRECHNUNG_GENEHMIGEN, 'suid', $antragData->studiengang_kz); + } } diff --git a/application/controllers/lehre/anrechnung/ApproveAnrechnungUebersicht.php b/application/controllers/lehre/anrechnung/ApproveAnrechnungUebersicht.php index b5a44b8f6..158a4cb96 100644 --- a/application/controllers/lehre/anrechnung/ApproveAnrechnungUebersicht.php +++ b/application/controllers/lehre/anrechnung/ApproveAnrechnungUebersicht.php @@ -20,11 +20,11 @@ class approveAnrechnungUebersicht extends Auth_Controller // Set required permissions parent::__construct( array( - 'index' => 'lehre/anrechnung_genehmigen:r', - 'download' => 'lehre/anrechnung_genehmigen:r', - 'approve' => 'lehre/anrechnung_genehmigen:rw', - 'reject' => 'lehre/anrechnung_genehmigen:rw', - 'requestRecommendation' => 'lehre/anrechnung_genehmigen:rw' + 'index' => self::BERECHTIGUNG_ANRECHNUNG_GENEHMIGEN . ':r', + 'download' => self::BERECHTIGUNG_ANRECHNUNG_GENEHMIGEN . ':r', + 'approve' => self::BERECHTIGUNG_ANRECHNUNG_GENEHMIGEN . ':rw', + 'reject' => self::BERECHTIGUNG_ANRECHNUNG_GENEHMIGEN . ':rw', + 'requestRecommendation' => self::BERECHTIGUNG_ANRECHNUNG_GENEHMIGEN . ':rw' ) ); @@ -135,6 +135,9 @@ class approveAnrechnungUebersicht extends Auth_Controller // Approve Anrechnung foreach ($data as $item) { + if (!$this->_checkBerechtigung($item['anrechnung_id'])) + continue; + // Get Prestudent $this->AnrechnungModel->addSelect('prestudent_id'); $result = $this->AnrechnungModel->load($item['anrechnung_id']); @@ -174,6 +177,9 @@ class approveAnrechnungUebersicht extends Auth_Controller // Reject Anrechnung foreach ($data as $item) { + if (!$this->_checkBerechtigung($item['anrechnung_id'])) + continue; + if ($this->anrechnunglib->rejectAnrechnung($item['anrechnung_id'], $item['begruendung'])) { $json[]= array( @@ -212,6 +218,9 @@ class approveAnrechnungUebersicht extends Auth_Controller foreach ($data as $item) { + if (!$this->_checkBerechtigung($item['anrechnung_id'])) + continue; + // Check if Anrechnungs-LV has lector if (!$this->anrechnunglib->LVhasLector($item['anrechnung_id'])) { @@ -483,4 +492,17 @@ class approveAnrechnungUebersicht extends Auth_Controller return $oeLeitung_arr; } + + private function _checkBerechtigung($anrechnung_id) + { + $this->AnrechnungModel->addJoin('tbl_prestudent', 'prestudent_id'); + $result = $this->AnrechnungModel->loadWhere(array('anrechnung_id' => $anrechnung_id)); + + if (isError($result) || !hasData($result)) + show_error('Failed retrieving anrechnung'); + + $antragData = getData($result)[0]; + + return $this->permissionlib->isBerechtigt(self::BERECHTIGUNG_ANRECHNUNG_GENEHMIGEN, 'suid', $antragData->studiengang_kz); + } } diff --git a/application/controllers/lehre/anrechnung/CreateAnrechnung.php b/application/controllers/lehre/anrechnung/CreateAnrechnung.php index bc594371d..fb8fba587 100644 --- a/application/controllers/lehre/anrechnung/CreateAnrechnung.php +++ b/application/controllers/lehre/anrechnung/CreateAnrechnung.php @@ -13,9 +13,9 @@ class CreateAnrechnung extends Auth_Controller // Set required permissions parent::__construct( array( - 'index' => 'lehre/anrechnung_anlegen:r', - 'getLVsByStudent' => 'lehre/anrechnung_anlegen:r', - 'create' => 'lehre/anrechnung_anlegen:rw' + 'index' => self::BERECHTIGUNG_ANRECHNUNG_ANLEGEN . ':r', + 'getLVsByStudent' => self::BERECHTIGUNG_ANRECHNUNG_ANLEGEN . ':r', + 'create' => self::BERECHTIGUNG_ANRECHNUNG_ANLEGEN . ':rw' ) ); @@ -24,6 +24,7 @@ class CreateAnrechnung extends Auth_Controller $this->load->model('education/Anrechnungstatus_model', 'AnrechnungstatusModel'); $this->load->model('content/DmsVersion_model', 'DmsVersionModel'); $this->load->model('crm/Student_model', 'StudentModel'); + $this->load->model('crm/Prestudent_model', 'PrestudentModel'); $this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel'); // Load libraries @@ -67,13 +68,22 @@ class CreateAnrechnung extends Auth_Controller $result = $this->StudiensemesterModel->getNearest(); $studiensemester_kurzbz = getData($result)[0]->studiensemester_kurzbz; } - + + $studiengang_kz_arr = array(); // Get Studiengaenge the user is entitled for - if (!$studiengang_kz_arr = $this->permissionlib->getSTG_isEntitledFor(self::BERECHTIGUNG_ANRECHNUNG_ANLEGEN)) + if ($studiengaenge = $this->permissionlib->getSTG_isEntitledFor(self::BERECHTIGUNG_ANRECHNUNG_ANLEGEN, 'suid')) { - show_error('Failed retrieving Studiengaenge'); + foreach($studiengaenge as $studiengang) + { + $berechtigt = $this->permissionlib->isBerechtigt(self::BERECHTIGUNG_ANRECHNUNG_ANLEGEN, 'suid', $studiengang); + + if ($berechtigt) + $studiengang_kz_arr[]= $studiengang; + } } - + else + show_error('Failed retrieving Studiengaenge'); + // Get Anrechnungsbegruendungen $this->load->model('education/Anrechnungbegruendung_model', 'AnrechnungbegruendungModel'); $begruendung_arr = getData($this->AnrechnungbegruendungModel->load()); @@ -124,7 +134,17 @@ class CreateAnrechnung extends Auth_Controller $lehrveranstaltung_id = $this->input->post('lehrveranstaltung_id'); $begruendung_id = $this->input->post('begruendung_id'); $herkunftKenntnisse = $this->input->post('herkunftKenntnisse'); - + + $prestudent = $this->PrestudentModel->load(array('prestudent_id' => $prestudent_id)); + + if (!hasData($prestudent) || isError($prestudent)) + $this->terminateWithJsonError($this->p->t('ui', 'keineBerechtigung')); + + $studiengang = getData($prestudent)[0]->studiengang_kz; + + if (!$this->permissionlib->isBerechtigt(self::BERECHTIGUNG_ANRECHNUNG_ANLEGEN, 'suid', $studiengang)) + $this->terminateWithJsonError($this->p->t('ui', 'keineBerechtigung')); + // Validate upload file if (empty($_FILES['uploadfile']['name'])) { diff --git a/application/controllers/lehre/anrechnung/ReviewAnrechnungDetail.php b/application/controllers/lehre/anrechnung/ReviewAnrechnungDetail.php index d141a0635..e794eca60 100644 --- a/application/controllers/lehre/anrechnung/ReviewAnrechnungDetail.php +++ b/application/controllers/lehre/anrechnung/ReviewAnrechnungDetail.php @@ -21,10 +21,10 @@ class reviewAnrechnungDetail extends Auth_Controller // Set required permissions parent::__construct( array( - 'index' => 'lehre/anrechnung_empfehlen:rw', - 'download' => 'lehre/anrechnung_empfehlen:rw', - 'recommend' => 'lehre/anrechnung_empfehlen:rw', - 'dontRecommend' => 'lehre/anrechnung_empfehlen:rw' + 'index' => self::BERECHTIGUNG_ANRECHNUNG_EMPFEHLEN . ':rw', + 'download' => self::BERECHTIGUNG_ANRECHNUNG_EMPFEHLEN . ':rw', + 'recommend' => self::BERECHTIGUNG_ANRECHNUNG_EMPFEHLEN . ':rw', + 'dontRecommend' => self::BERECHTIGUNG_ANRECHNUNG_EMPFEHLEN . ':rw' ) ); @@ -127,17 +127,23 @@ class reviewAnrechnungDetail extends Auth_Controller foreach ($data as $item) { - // Approve Anrechnung - if($this->anrechnunglib->recommendAnrechnung($item['anrechnung_id'])) + $empfehlungData = $this->anrechnunglib->getEmpfehlungData($item['anrechnung_id']); + $isEmpfehlungsberechtigt = $this->anrechnunglib->isEmpfehlungsberechtigt($item['anrechnung_id']); + + if (is_null($empfehlungData) && $isEmpfehlungsberechtigt) { - $json[]= array( - 'anrechnung_id' => $item['anrechnung_id'], - 'empfehlung_anrechnung' => 'true', - 'status_kurzbz' => self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL, - 'status_bezeichnung' => $this->anrechnunglib->getStatusbezeichnung(self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL), - 'empfehlung_am' => (new DateTime())->format('d.m.Y'), - 'empfehlung_von' => $person->vorname. ' '. $person->nachname - ); + // Approve Anrechnung + if($this->anrechnunglib->recommendAnrechnung($item['anrechnung_id'])) + { + $json[]= array( + 'anrechnung_id' => $item['anrechnung_id'], + 'empfehlung_anrechnung' => 'true', + 'status_kurzbz' => self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL, + 'status_bezeichnung' => $this->anrechnunglib->getStatusbezeichnung(self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL), + 'empfehlung_am' => (new DateTime())->format('d.m.Y'), + 'empfehlung_von' => $person->vorname. ' '. $person->nachname + ); + } } } @@ -184,18 +190,25 @@ class reviewAnrechnungDetail extends Auth_Controller foreach ($data as $item) { - // Approve Anrechnung - if($this->anrechnunglib->dontRecommendAnrechnung($item['anrechnung_id'], $item['begruendung'])) + $empfehlungData = $this->anrechnunglib->getEmpfehlungData($item['anrechnung_id']); + $isEmpfehlungsberechtigt = $this->anrechnunglib->isEmpfehlungsberechtigt($item['anrechnung_id']); + + if (is_null($empfehlungData) && $isEmpfehlungsberechtigt) { - $json[]= array( - 'anrechnung_id' => $item['anrechnung_id'], - 'empfehlung_anrechnung' => 'false', - 'status_kurzbz' => self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL, - 'status_bezeichnung' => $this->anrechnunglib->getStatusbezeichnung(self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL), - 'empfehlung_am' => (new DateTime())->format('d.m.Y'), - 'empfehlung_von' => $person->vorname. ' '. $person->nachname - ); + // Approve Anrechnung + if($this->anrechnunglib->dontRecommendAnrechnung($item['anrechnung_id'], $item['begruendung'])) + { + $json[]= array( + 'anrechnung_id' => $item['anrechnung_id'], + 'empfehlung_anrechnung' => 'false', + 'status_kurzbz' => self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL, + 'status_bezeichnung' => $this->anrechnunglib->getStatusbezeichnung(self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL), + 'empfehlung_am' => (new DateTime())->format('d.m.Y'), + 'empfehlung_von' => $person->vorname. ' '. $person->nachname + ); + } } + } // Output json to ajax @@ -256,7 +269,7 @@ class reviewAnrechnungDetail extends Auth_Controller /** * Check if user is entitled to read dms doc - * @param $dms_id + * @param $anrechnung_id */ private function _checkIfEntitledToReadAnrechnung($anrechnung_id) { diff --git a/application/controllers/lehre/anrechnung/ReviewAnrechnungUebersicht.php b/application/controllers/lehre/anrechnung/ReviewAnrechnungUebersicht.php index 6d4107936..2b45e3c5c 100644 --- a/application/controllers/lehre/anrechnung/ReviewAnrechnungUebersicht.php +++ b/application/controllers/lehre/anrechnung/ReviewAnrechnungUebersicht.php @@ -19,10 +19,10 @@ class reviewAnrechnungUebersicht extends Auth_Controller // Set required permissions parent::__construct( array( - 'index' => 'lehre/anrechnung_empfehlen:rw', - 'download' => 'lehre/anrechnung_empfehlen:rw', - 'recommend' => 'lehre/anrechnung_empfehlen:rw', - 'dontRecommend' => 'lehre/anrechnung_empfehlen:rw' + 'index' => self::BERECHTIGUNG_ANRECHNUNG_EMPFEHLEN . ':rw', + 'download' => self::BERECHTIGUNG_ANRECHNUNG_EMPFEHLEN . ':rw', + 'recommend' => self::BERECHTIGUNG_ANRECHNUNG_EMPFEHLEN . ':rw', + 'dontRecommend' => self::BERECHTIGUNG_ANRECHNUNG_EMPFEHLEN . ':rw' ) ); @@ -96,15 +96,21 @@ class reviewAnrechnungUebersicht extends Auth_Controller foreach ($data as $item) { - // Approve Anrechnung - if($this->anrechnunglib->recommendAnrechnung($item['anrechnung_id'])) + $empfehlungData = $this->anrechnunglib->getEmpfehlungData($item['anrechnung_id']); + $isEmpfehlungsberechtigt = $this->anrechnunglib->isEmpfehlungsberechtigt($item['anrechnung_id']); + + if (is_null($empfehlungData) && $isEmpfehlungsberechtigt) { - $json[]= array( - 'anrechnung_id' => $item['anrechnung_id'], - 'empfehlung_anrechnung' => 'true', - 'status_kurzbz' => self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL, - 'status_bezeichnung' => $this->anrechnunglib->getStatusbezeichnung(self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL) - ); + // Approve Anrechnung + if($this->anrechnunglib->recommendAnrechnung($item['anrechnung_id'])) + { + $json[]= array( + 'anrechnung_id' => $item['anrechnung_id'], + 'empfehlung_anrechnung' => 'true', + 'status_kurzbz' => self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL, + 'status_bezeichnung' => $this->anrechnunglib->getStatusbezeichnung(self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL) + ); + } } } @@ -145,15 +151,21 @@ class reviewAnrechnungUebersicht extends Auth_Controller foreach ($data as $item) { - // Approve Anrechnung - if($this->anrechnunglib->dontRecommendAnrechnung($item['anrechnung_id'], $item['begruendung'])) + $empfehlungData = $this->anrechnunglib->getEmpfehlungData($item['anrechnung_id']); + $isEmpfehlungsberechtigt = $this->anrechnunglib->isEmpfehlungsberechtigt($item['anrechnung_id']); + + if (is_null($empfehlungData) && $isEmpfehlungsberechtigt) { - $json[]= array( - 'anrechnung_id' => $item['anrechnung_id'], - 'empfehlung_anrechnung' => 'false', - 'status_kurzbz' => self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL, - 'status_bezeichnung' => $this->anrechnunglib->getStatusbezeichnung(self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL) - ); + // Approve Anrechnung + if($this->anrechnunglib->dontRecommendAnrechnung($item['anrechnung_id'], $item['begruendung'])) + { + $json[]= array( + 'anrechnung_id' => $item['anrechnung_id'], + 'empfehlung_anrechnung' => 'false', + 'status_kurzbz' => self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL, + 'status_bezeichnung' => $this->anrechnunglib->getStatusbezeichnung(self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL) + ); + } } } diff --git a/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php b/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php index acfcbd907..dccc31187 100644 --- a/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php +++ b/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php @@ -16,7 +16,7 @@ $query = ' anrechnung.begruendung_id, anrechnung.dms_id, CASE - WHEN stg.typ || stg.kurzbz IN (' . $ORGANISATIONSEINHEITEN_SCHREIBBERECHTIGT . ') THEN TRUE + WHEN stg.oe_kurzbz IN (' . $ORGANISATIONSEINHEITEN_SCHREIBBERECHTIGT . ') THEN TRUE ELSE FALSE END "schreibberechtigt", anrechnung.studiensemester_kurzbz, diff --git a/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js b/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js index e89d1a9ee..0970e7f0a 100644 --- a/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js +++ b/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js @@ -187,11 +187,12 @@ var format_ectsSumBisherUndNeu = function (cell, formatterParams, onRendered) { // Formats row selectable/unselectable function func_selectableCheck(row) { let status_kurzbz = row.getData().status_kurzbz; + let schreibberechtigt = row.getData().schreibberechtigt; return ( - status_kurzbz != ANRECHNUNGSTATUS_APPROVED && + (status_kurzbz != ANRECHNUNGSTATUS_APPROVED && status_kurzbz != ANRECHNUNGSTATUS_REJECTED && - status_kurzbz != ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR + status_kurzbz != ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR && schreibberechtigt == "true") ); } @@ -280,7 +281,7 @@ function tableWidgetHook_selectAllButton(tableWidgetDiv) { .tabulator("getRows", true) .filter( (row) => - row.getData().status_kurzbz == ANRECHNUNGSTATUS_PROGRESSED_BY_STGL + row.getData().status_kurzbz == ANRECHNUNGSTATUS_PROGRESSED_BY_STGL && row.getData().schreibberechtigt == "true" ); tableWidgetDiv diff --git a/public/js/lehre/anrechnung/reviewAnrechnungUebersicht.js b/public/js/lehre/anrechnung/reviewAnrechnungUebersicht.js index be3443574..034e25e91 100644 --- a/public/js/lehre/anrechnung/reviewAnrechnungUebersicht.js +++ b/public/js/lehre/anrechnung/reviewAnrechnungUebersicht.js @@ -95,7 +95,7 @@ function func_selectableCheck(row) { let status_kurzbz = row.getData().status_kurzbz; let empfehlungsberechtigt = row.getData().empfehlungsberechtigt; - return status_kurzbz == ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR || empfehlungsberechtigt == "false"; + return status_kurzbz == ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR && empfehlungsberechtigt == "true"; } @@ -158,7 +158,7 @@ function tableWidgetHook_selectAllButton(tableWidgetDiv) { .tabulator("getRows", true) .filter( (row) => - row.getData().status_kurzbz == ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR + row.getData().status_kurzbz == ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR && row.getData().empfehlungsberechtigt == "true" ); tableWidgetDiv