From 05744f39217423c2200c139cf19b0c1f18f4893a Mon Sep 17 00:00:00 2001 From: cgfhtw Date: Wed, 8 Nov 2023 09:35:23 +0100 Subject: [PATCH 1/7] Bugfix --- application/controllers/jobs/AntragJob.php | 7 ++-- .../controllers/lehre/Studierendenantrag.php | 37 +------------------ application/libraries/AntragLib.php | 30 +++++---------- .../models/crm/Prestudentstatus_model.php | 7 ++-- .../models/education/Pruefung_model.php | 11 ++++-- .../education/Studierendenantrag_model.php | 19 +++++++--- .../models/organisation/Studiengang_model.php | 17 +-------- 7 files changed, 42 insertions(+), 86 deletions(-) diff --git a/application/controllers/jobs/AntragJob.php b/application/controllers/jobs/AntragJob.php index 3022cf549..1840aceef 100644 --- a/application/controllers/jobs/AntragJob.php +++ b/application/controllers/jobs/AntragJob.php @@ -96,7 +96,7 @@ class AntragJob extends JOB_Controller } $stgLeitungen[$leitung->uid]['stgs'][] = $antrag->studiengang_kz; - $result = $this->StudiengangModel->load($antrag->studiengang_kz); + $result = $this->StudierendenantragModel->getStgAndSem($antrag->studierendenantrag_id); if (isError($result)) { $this->logError(getError($result)); @@ -214,12 +214,11 @@ class AntragJob extends JOB_Controller $count = 0; foreach ($antraege as $antrag) { - $this->StudiengangModel->addJoin('public.tbl_prestudent ps','studiengang_kz'); - $res = $this->StudiengangModel->loadWhere(['prestudent_id' => $antrag->prestudent_id]); + $res = $this->StudierendenantragModel->getStgAndSem($antrag->studierendenantrag_id); $stg = ''; $orgform = ''; if (hasData($res)) { - $studiengang = current(getData($res)); + $studiengang = current(getData($res));var_dump($studiengang); $stg = $studiengang->bezeichnung; $orgform = $studiengang->orgform_kurzbz; } diff --git a/application/controllers/lehre/Studierendenantrag.php b/application/controllers/lehre/Studierendenantrag.php index fb0d17abb..d6d6b2c50 100644 --- a/application/controllers/lehre/Studierendenantrag.php +++ b/application/controllers/lehre/Studierendenantrag.php @@ -81,42 +81,9 @@ class Studierendenantrag extends FHC_Controller public function leitung() { - $studiengaenge = $this->permissionlib->getSTG_isEntitledFor('student/antragfreigabe'); - $stgsNeuanlage = $this->permissionlib->getSTG_isEntitledFor('student/studierendenantrag'); + $stgL = $this->permissionlib->getSTG_isEntitledFor('student/antragfreigabe') ?: []; - $stgL = []; - if ($studiengaenge) { - $result = $this->StudiengangModel->loadWithOrgform($studiengaenge); - if (isError($result)) - return show_error(getError($result)); - $antraege = getData($result) ?: []; - - foreach ($antraege as $antrag) { - if (!isset($stgL[$antrag->studiengang_kz])) { - $stgL[$antrag->studiengang_kz] = new stdClass(); - $stgL[$antrag->studiengang_kz]->bezeichnung = $antrag->bezeichnung; - $stgL[$antrag->studiengang_kz]->orgform = $antrag->orgform; - $stgL[$antrag->studiengang_kz]->studiengang_kz = $antrag->studiengang_kz; - } - } - } - - $stgA = []; - if ($stgsNeuanlage) { - $result = $this->StudiengangModel->loadWithOrgform($stgsNeuanlage); - if (isError($result)) - return show_error(getError($result)); - $antraege = getData($result) ?: []; - - foreach ($antraege as $antrag) { - if (!isset($stgA[$antrag->studiengang_kz])) { - $stgA[$antrag->studiengang_kz] = new stdClass(); - $stgA[$antrag->studiengang_kz]->bezeichnung = $antrag->bezeichnung; - $stgA[$antrag->studiengang_kz]->orgform = $antrag->orgform; - $stgA[$antrag->studiengang_kz]->studiengang_kz = $antrag->studiengang_kz; - } - } - } + $stgA = $this->permissionlib->getSTG_isEntitledFor('student/studierendenantrag') ?: []; $this->load->view('lehre/Antrag/Leitung/List', [ 'stgA' => $stgA, diff --git a/application/libraries/AntragLib.php b/application/libraries/AntragLib.php index 6cad6c2bf..dcc38acc7 100644 --- a/application/libraries/AntragLib.php +++ b/application/libraries/AntragLib.php @@ -156,7 +156,6 @@ class AntragLib if (hasData($result)) { $studiengang = current(getData($result)); $stg = $studiengang->bezeichnung; - $orgform = $studiengang->orgform_kurzbz; } if ($antrag->typ == Studierendenantrag_model::TYP_ABMELDUNG) { @@ -166,6 +165,7 @@ class AntragLib else { $prestudent_status = getData($resultPrestudentStatus)[0]; + $orgform = $prestudent_status->orgform_kurzbz; $vorlage ='Sancho_Mail_Antrag_A_Approve'; $subject = $this->_ci->p->t('studierendenantrag', 'mail_subject_A_Approve'); @@ -202,14 +202,14 @@ class AntragLib $data['UID'] = $student->student_uid; } - $data['Orgform'] = $orgform; + $data['Orgform'] = $prestudent_status->orgform; $data['stg'] = $stg; // NOTE(chris): Sancho mail sendSanchoMail($vorlage, $data, $prestudent_status->email, $subject); } } else { // ($antrag->typ == Studierendenantrag_model::TYP_ABMELDUNG_STGL) - $result = $this->_ci->PrestudentstatusModel->getLastStatus($antrag->prestudent_id, '', 'Student'); + $result = $this->_ci->PrestudentstatusModel->getLastStatusWithStgEmail($antrag->prestudent_id, '', 'Student'); if (isError($result)) { $errors[] = getError($result); @@ -221,6 +221,7 @@ class AntragLib continue; } $prestudentstatus = getData($result)[0]; + $orgform = $prestudentstatus->orgform_kurzbz; $result = $this->_ci->PrestudentstatusModel->withGrund('preabbrecher')->update([ 'prestudent_id' => $prestudentstatus->prestudent_id, @@ -349,8 +350,7 @@ class AntragLib $kontakt = current(getData($res)); $email = $kontakt->kontakt; - $this->_ci->StudiengangModel->addJoin('public.tbl_prestudent ps','studiengang_kz'); - $res = $this->_ci->StudiengangModel->loadWhere(['prestudent_id' => $antrag->prestudent_id]); + $res = $this->_ci->StudierendenantragModel->getStgAndSem($antrag->studierendenantrag_id); $stg = ''; $orgform = ''; if (hasData($res)) { @@ -555,7 +555,7 @@ class AntragLib [ 'name' => $mail['ass'], 'stg' => $data['studiengang']->bezeichnung, - 'Orgform' => $data['studiengang']->orgform_kurzbz, + 'Orgform' => $data['prestudent_status']->orgform_kurzbz, 'vorname' => $data['person']->vorname, 'nachname' => $data['person']->nachname, 'UID' => $data['UID'], @@ -579,7 +579,7 @@ class AntragLib [ 'name' => $mail['stu'], 'stg' => $data['studiengang']->bezeichnung, - 'Orgform' => $data['studiengang']->orgform_kurzbz, + 'Orgform' => $data['prestudent_status']->orgform_kurzbz, 'vorname' => $data['person']->vorname, 'nachname' => $data['person']->nachname ], @@ -673,7 +673,7 @@ class AntragLib 'nachname' => $nachname, 'grund' => $grund, 'stg' => $data['studiengang']->bezeichnung, - 'Orgform' => $data['studiengang']->orgform_kurzbz, + 'Orgform' => $data['prestudent_status']->orgform_kurzbz, 'prestudent_id' => $data['prestudent_status']->prestudent_id, 'abmeldungLink' => site_url('lehre/Studierendenantrag/abmeldung/' . $data['prestudent_status']->prestudent_id), 'abmeldungLinkCIS' => CIS_ROOT . 'index.ci.php/lehre/Studierendenantrag/abmeldung/' . $data['prestudent_status']->prestudent_id @@ -719,7 +719,6 @@ class AntragLib else{ $result['studiengang'] = new stdClass(); $result['studiengang']->bezeichnung = ""; - $result['studiengang']->orgform_kurzbz = ""; } $res = $this->_ci->PrestudentstatusModel->getLastStatusWithStgEmail($antrag->prestudent_id); @@ -1540,18 +1539,9 @@ class AntragLib if (!$result) return error($this->_ci->p->t('studierendenantrag', 'error_no_stg_antrag', ['id' => $antrag_id])); - $result = current($result); - $studiengang_kz = $result->studiengang_kz; - $semester = $result->ausbildungssemester; - - $result = $this->_ci->StudiengangModel->load($studiengang_kz); - if (isError($result)) - return $result; - $result = getData($result); - if (!$result) - return error($this->_ci->p->t('studierendenantrag', 'error_no_stg_antrag', ['id' => $antrag_id])); - $stg = current($result); + $studiengang_kz = $stg->studiengang_kz; + $semester = $stg->ausbildungssemester; $result = $this->_ci->StudierendenantragModel->load($antrag_id); if (isError($result)) diff --git a/application/models/crm/Prestudentstatus_model.php b/application/models/crm/Prestudentstatus_model.php index d12ebd68d..08c081153 100644 --- a/application/models/crm/Prestudentstatus_model.php +++ b/application/models/crm/Prestudentstatus_model.php @@ -238,7 +238,7 @@ class Prestudentstatus_model extends DB_Model { $this->addSelect('tbl_prestudentstatus.*, tbl_studienplan.bezeichnung AS studienplan_bezeichnung, - tbl_studienplan.orgform_kurzbz AS orgform, + tbl_orgform.orgform_kurzbz AS orgform, tbl_studienplan.sprache, tbl_orgform.bezeichnung_mehrsprachig AS bezeichnung_orgform, tbl_status.bezeichnung_mehrsprachig, @@ -250,7 +250,7 @@ class Prestudentstatus_model extends DB_Model $this->addJoin('public.tbl_studiengang', 'studiengang_kz', 'LEFT'); $this->addJoin('public.tbl_status', 'tbl_status.status_kurzbz = tbl_prestudentstatus.status_kurzbz'); $this->addJoin('public.tbl_status_grund', 'statusgrund_id', 'LEFT'); - $this->addJoin('bis.tbl_orgform', 'tbl_studienplan.orgform_kurzbz = tbl_orgform.orgform_kurzbz', 'LEFT'); + $this->addJoin('bis.tbl_orgform', 'COALESCE(tbl_studienplan.orgform_kurzbz, ' . $this->dbTable . '.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) = tbl_orgform.orgform_kurzbz', 'LEFT'); $this->db->where('tbl_status.status_kurzbz = tbl_prestudentstatus.status_kurzbz'); $where = array('prestudent_id' => $prestudent_id); @@ -295,7 +295,8 @@ class Prestudentstatus_model extends DB_Model $this->addJoin('public.tbl_studiensemester ss', 'studiensemester_kurzbz'); $this->addJoin('public.tbl_person pers', 'person_id'); $this->addJoin('public.tbl_studiengang g', 'p.studiengang_kz=g.studiengang_kz'); - $this->addJoin('bis.tbl_orgform o', 'g.orgform_kurzbz=o.orgform_kurzbz'); + $this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT'); + $this->addJoin('bis.tbl_orgform o', 'COALESCE(plan.orgform_kurzbz, ' . $this->dbTable . '.orgform_kurzbz, g.orgform_kurzbz)=o.orgform_kurzbz'); $this->addOrder($this->dbTable . '.datum', 'DESC'); $this->addOrder($this->dbTable . '.insertamum', 'DESC'); diff --git a/application/models/education/Pruefung_model.php b/application/models/education/Pruefung_model.php index 83bf9b7f8..644b346ed 100644 --- a/application/models/education/Pruefung_model.php +++ b/application/models/education/Pruefung_model.php @@ -39,6 +39,7 @@ class Pruefung_model extends DB_Model /** + * NOTE(chris): not used * @return string */ protected function loadWhereThreeExamsFailed() @@ -86,8 +87,10 @@ class Pruefung_model extends DB_Model $this->addJoin('public.tbl_person pers', 'person_id'); $this->addJoin('public.tbl_benutzer b', 's.student_uid=b.uid'); $this->addJoin('public.tbl_studiengang g', 'ps.studiengang_kz=g.studiengang_kz'); - $this->addJoin('bis.tbl_orgform o', 'g.orgform_kurzbz=o.orgform_kurzbz'); - $this->db->join('campus.tbl_studierendenantrag a', 'ps.prestudent_id=a.prestudent_id and a.typ = ?', 'LEFT', false); + $this->addJoin('public.tbl_prestudentstatus pss', 'pss.prestudent_id=ps.prestudent_id AND pss.studiensemester_kurzbz=le.studiensemester_kurzbz AND pss.status_kurzbz=get_rolle_prestudent(ps.prestudent_id, le.studiensemester_kurzbz)', 'LEFT'); + $this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT'); + $this->addJoin('bis.tbl_orgform o', 'COALESCE(plan.orgform_kurzbz, pss.orgform_kurzbz, g.orgform_kurzbz)=o.orgform_kurzbz'); + $this->db->join('campus.tbl_studierendenantrag a', 'ps.prestudent_id=a.prestudent_id and a.typ = ?', 'LEFT', false); $this->db->where("n.positiv", false); /* $this->db->where_in("p.pruefungstyp_kurzbz1", ['kommPruef','zusKommPruef']);*/ @@ -164,7 +167,9 @@ class Pruefung_model extends DB_Model $this->addJoin('public.tbl_person pers', 'person_id'); $this->addJoin('public.tbl_benutzer b', 's.student_uid=b.uid'); $this->addJoin('public.tbl_studiengang g', 'ps.studiengang_kz=g.studiengang_kz'); - $this->addJoin('bis.tbl_orgform o', 'g.orgform_kurzbz=o.orgform_kurzbz'); + $this->addJoin('public.tbl_prestudentstatus pss', 'pss.prestudent_id=ps.prestudent_id AND pss.studiensemester_kurzbz=le.studiensemester_kurzbz AND pss.status_kurzbz=get_rolle_prestudent(ps.prestudent_id, le.studiensemester_kurzbz)', 'LEFT'); + $this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT'); + $this->addJoin('bis.tbl_orgform o', 'COALESCE(plan.orgform_kurzbz, pss.orgform_kurzbz, g.orgform_kurzbz)=o.orgform_kurzbz'); $this->addJoin('campus.tbl_studierendenantrag a', 'ps.prestudent_id=a.prestudent_id and a.typ=' . $this->escape(Studierendenantrag_model::TYP_WIEDERHOLUNG), 'LEFT'); $this->db->where_in("get_rolle_prestudent(ps.prestudent_id, null)", $this->config->item('antrag_prestudentstatus_whitelist')); diff --git a/application/models/education/Studierendenantrag_model.php b/application/models/education/Studierendenantrag_model.php index e1b386f2e..91af9c1f4 100644 --- a/application/models/education/Studierendenantrag_model.php +++ b/application/models/education/Studierendenantrag_model.php @@ -37,11 +37,11 @@ class Studierendenantrag_model extends DB_Model $this->addSelect('studienjahr_kurzbz'); $this->addSelect('vorname'); $this->addSelect('nachname'); - $this->addSelect('prestudent_id'); + $this->addSelect('p.prestudent_id'); $this->addSelect('p.studiengang_kz'); $this->addSelect('semester'); $this->addSelect($this->dbTable . '.grund'); - $this->addSelect('datum'); + $this->addSelect($this->dbTable . '.datum'); $this->addSelect('datum_wiedereinstieg'); $this->addSelect($this->dbTable . '.typ'); $this->addSelect('st.studierendenantrag_statustyp_kurzbz as status'); @@ -52,8 +52,10 @@ class Studierendenantrag_model extends DB_Model $this->addJoin('public.tbl_student', 'prestudent_id'); $this->addJoin('public.tbl_person', 'person_id'); $this->addJoin('public.tbl_studiengang stg', 'p.studiengang_kz=stg.studiengang_kz'); - $this->addJoin('public.tbl_studiensemester', 'studiensemester_kurzbz'); - $this->addJoin('bis.tbl_orgform', 'orgform_kurzbz'); + $this->addJoin('public.tbl_studiensemester ss', 'studiensemester_kurzbz'); + $this->addJoin('public.tbl_prestudentstatus ps', 'ps.prestudent_id=p.prestudent_id AND ps.studiensemester_kurzbz=ss.studiensemester_kurzbz AND ps.status_kurzbz=get_rolle_prestudent(p.prestudent_id, ss.studiensemester_kurzbz)'); + $this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT'); + $this->addJoin('bis.tbl_orgform of', 'of.orgform_kurzbz=COALESCE(plan.orgform_kurzbz, ps.orgform_kurzbz, stg.orgform_kurzbz)'); $this->addJoin( 'campus.tbl_studierendenantrag_status as s', 'campus.get_status_id_studierendenantrag('. $this->dbTable .'.studierendenantrag_id) = studierendenantrag_status_id' @@ -120,14 +122,17 @@ class Studierendenantrag_model extends DB_Model public function getStgAndSem($antrag_id) { $this->addSelect('p.studiengang_kz'); + $this->addSelect('stg.bezeichnung'); $this->addSelect('s.ausbildungssemester'); - $this->addSelect('s.orgform_kurzbz'); + $this->addSelect('COALESCE(plan.orgform_kurzbz, s.orgform_kurzbz, stg.orgform_kurzbz) AS orgform_kurzbz'); $this->addJoin( 'public.tbl_prestudentstatus s', $this->dbTable . '.prestudent_id=s.prestudent_id AND ' . $this->dbTable . '.studiensemester_kurzbz=s.studiensemester_kurzbz' ); $this->addJoin('public.tbl_prestudent p', $this->dbTable . '.prestudent_id=p.prestudent_id'); + $this->addJoin('public.tbl_studiengang stg', 'studiengang_kz', 'LEFT'); + $this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT'); $this->addOrder('s.datum', 'DESC'); $this->addOrder('s.insertamum', 'DESC'); @@ -192,7 +197,9 @@ class Studierendenantrag_model extends DB_Model $this->addJoin('public.tbl_prestudent p', 'prestudent_id', 'RIGHT'); $this->addJoin('public.tbl_studiengang stg', 'p.studiengang_kz=stg.studiengang_kz'); - $this->addJoin('bis.tbl_orgform', 'orgform_kurzbz'); + $this->addJoin('public.tbl_prestudentstatus ps', 'ps.prestudent_id=p.prestudent_id AND ps.studiensemester_kurzbz=' . $this->dbTable . '.studiensemester_kurzbz AND ps.status_kurzbz=get_rolle_prestudent(p.prestudent_id, ' . $this->dbTable . '.studiensemester_kurzbz)'); + $this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT'); + $this->addJoin('bis.tbl_orgform of', 'of.orgform_kurzbz=COALESCE(plan.orgform_kurzbz, ps.orgform_kurzbz, stg.orgform_kurzbz)'); $this->addJoin( 'campus.tbl_studierendenantrag_statustyp st', 'campus.get_status_studierendenantrag(studierendenantrag_id)=st.studierendenantrag_statustyp_kurzbz', diff --git a/application/models/organisation/Studiengang_model.php b/application/models/organisation/Studiengang_model.php index ea8e59ebd..d232e14d6 100644 --- a/application/models/organisation/Studiengang_model.php +++ b/application/models/organisation/Studiengang_model.php @@ -525,20 +525,6 @@ class Studiengang_model extends DB_Model return $this->execQuery($query, $params); } - public function loadWithOrgform($studiengang_kzs) - { - $sql = "SELECT index FROM public.tbl_sprache WHERE sprache='" . getUserLanguage() . "' LIMIT 1"; - - $this->addSelect($this->dbTable . '.*'); - $this->addSelect('o.bezeichnung_mehrsprachig[(' . $sql . ')] AS orgform'); - - $this->addJoin('bis.tbl_orgform o', 'orgform_kurzbz'); - - $this->db->where_in($this->dbTable . '.studiengang_kz', $studiengang_kzs); - - return $this->load(); - } - /** * @param array $studiengang_kzs * @param array $not_antrag_typ (optional) If the prestudent has an antrag with one of the specified types it will be excluded from the result @@ -571,7 +557,8 @@ class Studiengang_model extends DB_Model AND ps.ausbildungssemester=get_absem_prestudent(p.prestudent_id, NULL) AND ps.status_kurzbz=get_rolle_prestudent(p.prestudent_id, NULL)' ); - $this->addJoin('bis.tbl_orgform o', $this->dbTable . '.orgform_kurzbz=o.orgform_kurzbz'); + $this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id'); + $this->addJoin('bis.tbl_orgform o', 'COALESCE(plan.orgform_kurzbz, ps.orgform_kurzbz, ' . $this->dbTable . '.orgform_kurzbz)=o.orgform_kurzbz'); $this->addJoin('public.tbl_person pers', 'person_id'); $this->addJoin('public.tbl_student stud', 'p.prestudent_id=stud.prestudent_id', 'LEFT'); From 85f178fcf323d64bd6470a58f99abbab447ca4b8 Mon Sep 17 00:00:00 2001 From: cgfhtw Date: Thu, 9 Nov 2023 13:26:54 +0100 Subject: [PATCH 2/7] remove var_dump --- application/controllers/jobs/AntragJob.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/controllers/jobs/AntragJob.php b/application/controllers/jobs/AntragJob.php index 1840aceef..cbd34a561 100644 --- a/application/controllers/jobs/AntragJob.php +++ b/application/controllers/jobs/AntragJob.php @@ -218,7 +218,7 @@ class AntragJob extends JOB_Controller $stg = ''; $orgform = ''; if (hasData($res)) { - $studiengang = current(getData($res));var_dump($studiengang); + $studiengang = current(getData($res)); $stg = $studiengang->bezeichnung; $orgform = $studiengang->orgform_kurzbz; } From 46855c9547b033573dd37a7709c2111c8fa86244 Mon Sep 17 00:00:00 2001 From: cgfhtw Date: Thu, 9 Nov 2023 13:37:56 +0100 Subject: [PATCH 3/7] =?UTF-8?q?Blacklist=20f=C3=BCr=20Noten?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/config/studierendenantrag.php | 8 ++++++++ application/models/education/Pruefung_model.php | 5 +++++ 2 files changed, 13 insertions(+) diff --git a/application/config/studierendenantrag.php b/application/config/studierendenantrag.php index c5ebc0d80..3f28e5d50 100644 --- a/application/config/studierendenantrag.php +++ b/application/config/studierendenantrag.php @@ -159,3 +159,11 @@ $config['stgkz_blacklist_unterbrechung'] = []; * @var array An array of tbl_studiengang.studiengang_kz's */ $config['stgkz_blacklist_wiederholung'] = []; + +/** + * Blacklisted noten for negative committee exams + * noten with this ids won't be seen as negative + * + * @var array An array of noten ids + */ +$config['note_blacklist_wiederholung'] = []; diff --git a/application/models/education/Pruefung_model.php b/application/models/education/Pruefung_model.php index 644b346ed..ef7cfc967 100644 --- a/application/models/education/Pruefung_model.php +++ b/application/models/education/Pruefung_model.php @@ -125,6 +125,8 @@ class Pruefung_model extends DB_Model */ public function loadWhereCommitteeExamsFailed() { + $this->load->config('studierendenantrag'); + $this->dbTable = 'lehre.tbl_pruefung p'; $this->addSelect('p.datum'); @@ -132,6 +134,9 @@ class Pruefung_model extends DB_Model $this->addJoin('lehre.tbl_note n', 'note'); $this->db->where("n.positiv", false); + $note_blacklist = $this->config->item('note_blacklist_wiederholung'); + if ($note_blacklist) + $this->db->where_not_in("n.note", $note_blacklist); $this->db->where_in("p.pruefungstyp_kurzbz", ['kommPruef','zusKommPruef']); return $this->load(); From 479d1a900fc100122ed093d2199dad6e91a4185b Mon Sep 17 00:00:00 2001 From: cgfhtw Date: Thu, 9 Nov 2023 14:19:36 +0100 Subject: [PATCH 4/7] Orgform PDFs --- rdf/AntragAbmeldung.xml.php | 16 +++++++++------- rdf/AntragAbmeldungStgl.xml.php | 16 +++++++++------- rdf/AntragUnterbrechung.xml.php | 16 +++++++++------- 3 files changed, 27 insertions(+), 21 deletions(-) diff --git a/rdf/AntragAbmeldung.xml.php b/rdf/AntragAbmeldung.xml.php index dc59b57a0..0de936e0a 100644 --- a/rdf/AntragAbmeldung.xml.php +++ b/rdf/AntragAbmeldung.xml.php @@ -14,7 +14,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $id = $_GET['id']; $where = " WHERE studierendenantrag_id = " . $db->db_add_param($id) . " - AND campus.tbl_studierendenantrag.typ = 'Abmeldung' AND campus.get_status_studierendenantrag(campus.tbl_studierendenantrag.studierendenantrag_id) = 'Genehmigt';"; + AND a.typ = 'Abmeldung' AND campus.get_status_studierendenantrag(a.studierendenantrag_id) = 'Genehmigt';"; $not_found_error = 'Studierendenantrag not found'. $id; } elseif(isset($_GET['uid']) && isset($_GET['prestudent_id'])) { $uid = $_GET['uid']; @@ -25,8 +25,8 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $prestudent_id = explode(';', $prestudent_id); $prestudent_id = (array_filter($prestudent_id, 'strlen')); - $where = " WHERE campus.tbl_studierendenantrag.prestudent_id in (" . $db->db_implode4SQL($prestudent_id) . ") - AND campus.tbl_studierendenantrag.typ = 'Abmeldung' AND campus.get_status_studierendenantrag(campus.tbl_studierendenantrag.studierendenantrag_id) = 'Genehmigt';"; + $where = " WHERE a.prestudent_id in (" . $db->db_implode4SQL($prestudent_id) . ") + AND a.typ = 'Abmeldung' AND campus.get_status_studierendenantrag(a.studierendenantrag_id) = 'Genehmigt';"; $not_found_error = 'Studierendenantrag not found for: ' . implode(',', $uid); } else die('wrong parameters'); @@ -36,15 +36,17 @@ else $query = " - SELECT tbl_studiengang.bezeichnung, bezeichnung_mehrsprachig[(SELECT index FROM public.tbl_sprache WHERE sprache=" . $db->db_add_param(getSprache(), FHC_STRING) . ")], studierendenantrag_id, matrikelnr, studienjahr_kurzbz, studiensemester_kurzbz, vorname, nachname, studiengang_kz, public.get_absem_prestudent(prestudent_id, NULL) AS semester, tbl_studierendenantrag.grund + SELECT stg.bezeichnung, bezeichnung_mehrsprachig[(SELECT index FROM public.tbl_sprache WHERE sprache=" . $db->db_add_param(getSprache(), FHC_STRING) . ")], studierendenantrag_id, matrikelnr, studienjahr_kurzbz, a.studiensemester_kurzbz, vorname, nachname, studiengang_kz, public.get_absem_prestudent(a.prestudent_id, NULL) AS semester, a.grund FROM - campus.tbl_studierendenantrag + campus.tbl_studierendenantrag a JOIN public.tbl_student USING (prestudent_id) JOIN public.tbl_benutzer ON tbl_student.student_uid=uid JOIN public.tbl_person USING (person_id) - JOIN public.tbl_studiengang USING (studiengang_kz) + JOIN public.tbl_studiengang stg USING (studiengang_kz) JOIN public.tbl_studiensemester USING (studiensemester_kurzbz) - JOIN bis.tbl_orgform ON (tbl_orgform.orgform_kurzbz = tbl_studiengang.orgform_kurzbz)" . $where; + LEFT JOIN public.tbl_prestudentstatus pss ON (pss.prestudent_id = a.prestudent_id AND pss.studiensemester_kurzbz=a.studiensemester_kurzbz AND pss.status_kurzbz=get_rolle_prestudent(a.prestudent_id, a.studiensemester_kurzbz)) + LEFT JOIN lehre.tbl_studienplan plan USING (studienplan_id) + JOIN bis.tbl_orgform ON (tbl_orgform.orgform_kurzbz = COALESCE(plan.orgform_kurzbz, pss.orgform_kurzbz, stg.orgform_kurzbz))" . $where; if (!$db->db_query($query) || !$db->db_num_rows()) diff --git a/rdf/AntragAbmeldungStgl.xml.php b/rdf/AntragAbmeldungStgl.xml.php index 55d940457..cccd677b0 100644 --- a/rdf/AntragAbmeldungStgl.xml.php +++ b/rdf/AntragAbmeldungStgl.xml.php @@ -14,7 +14,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $id = $_GET['id']; $where = " WHERE studierendenantrag_id = " . $db->db_add_param($id) . " - AND campus.tbl_studierendenantrag.typ = 'AbmeldungStgl' AND campus.get_status_studierendenantrag(campus.tbl_studierendenantrag.studierendenantrag_id) IN ('Genehmigt', 'Beeinsprucht', 'EinspruchAbgelehnt');"; + AND a.typ = 'AbmeldungStgl' AND campus.get_status_studierendenantrag(a.studierendenantrag_id) IN ('Genehmigt', 'Beeinsprucht', 'EinspruchAbgelehnt');"; $not_found_error = 'Studierendenantrag not found'. $id; } elseif(isset($_GET['uid']) && isset($_GET['prestudent_id'])) { $uid = $_GET['uid']; @@ -25,8 +25,8 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $prestudent_id = explode(';', $prestudent_id); $prestudent_id = (array_filter($prestudent_id, 'strlen')); - $where = " WHERE campus.tbl_studierendenantrag.prestudent_id in (" . $db->db_implode4SQL($prestudent_id) . ") - AND campus.tbl_studierendenantrag.typ = 'AbmeldungStgl' AND campus.get_status_studierendenantrag(campus.tbl_studierendenantrag.studierendenantrag_id) IN ('Genehmigt', 'Beeinsprucht', 'EinspruchAbgelehnt');"; + $where = " WHERE a.prestudent_id in (" . $db->db_implode4SQL($prestudent_id) . ") + AND a.typ = 'AbmeldungStgl' AND campus.get_status_studierendenantrag(a.studierendenantrag_id) IN ('Genehmigt', 'Beeinsprucht', 'EinspruchAbgelehnt');"; $not_found_error = 'Studierendenantrag not found for: ' . implode(',', $uid); } else die('wrong parameters'); @@ -36,15 +36,17 @@ else $query = " - SELECT tbl_studiengang.bezeichnung, bezeichnung_mehrsprachig[(SELECT index FROM public.tbl_sprache WHERE sprache=" . $db->db_add_param(getSprache(), FHC_STRING) . ")], studierendenantrag_id, matrikelnr, studienjahr_kurzbz, studiensemester_kurzbz, vorname, nachname, studiengang_kz, public.get_absem_prestudent(prestudent_id, NULL) AS semester, tbl_studierendenantrag.grund + SELECT stg.bezeichnung, bezeichnung_mehrsprachig[(SELECT index FROM public.tbl_sprache WHERE sprache=" . $db->db_add_param(getSprache(), FHC_STRING) . ")], studierendenantrag_id, matrikelnr, studienjahr_kurzbz, a.studiensemester_kurzbz, vorname, nachname, studiengang_kz, public.get_absem_prestudent(a.prestudent_id, NULL) AS semester, a.grund FROM - campus.tbl_studierendenantrag + campus.tbl_studierendenantrag a JOIN public.tbl_student USING (prestudent_id) JOIN public.tbl_benutzer ON tbl_student.student_uid=uid JOIN public.tbl_person USING (person_id) - JOIN public.tbl_studiengang USING (studiengang_kz) + JOIN public.tbl_studiengang stg USING (studiengang_kz) JOIN public.tbl_studiensemester USING (studiensemester_kurzbz) - JOIN bis.tbl_orgform ON (tbl_orgform.orgform_kurzbz = tbl_studiengang.orgform_kurzbz)" . $where; + LEFT JOIN public.tbl_prestudentstatus pss ON (pss.prestudent_id = a.prestudent_id AND pss.studiensemester_kurzbz=a.studiensemester_kurzbz AND pss.status_kurzbz=get_rolle_prestudent(a.prestudent_id, a.studiensemester_kurzbz)) + LEFT JOIN lehre.tbl_studienplan plan USING (studienplan_id) + JOIN bis.tbl_orgform ON (tbl_orgform.orgform_kurzbz = COALESCE(plan.orgform_kurzbz, pss.orgform_kurzbz, stg.orgform_kurzbz))" . $where; if (!$db->db_query($query) || !$db->db_num_rows()) diff --git a/rdf/AntragUnterbrechung.xml.php b/rdf/AntragUnterbrechung.xml.php index 6945f66ef..70a056b8a 100644 --- a/rdf/AntragUnterbrechung.xml.php +++ b/rdf/AntragUnterbrechung.xml.php @@ -15,7 +15,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $id = $_GET['id']; $where = " WHERE studierendenantrag_id = " . $db->db_add_param($id) . " - AND campus.tbl_studierendenantrag.typ = 'Unterbrechung' AND campus.get_status_studierendenantrag(campus.tbl_studierendenantrag.studierendenantrag_id) IN ('Genehmigt', 'EmailVersandt');"; + AND a.typ = 'Unterbrechung' AND campus.get_status_studierendenantrag(a.studierendenantrag_id) IN ('Genehmigt', 'EmailVersandt');"; $not_found_error = 'Studierendenantrag not found'. $id; } elseif(isset($_GET['uid']) && isset($_GET['prestudent_id'])) { $uid = $_GET['uid']; @@ -26,8 +26,8 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $prestudent_id = explode(';', $prestudent_id); $prestudent_id = (array_filter($prestudent_id, 'strlen')); - $where = " WHERE campus.tbl_studierendenantrag.prestudent_id in (" . $db->db_implode4SQL($prestudent_id) . ") - AND campus.tbl_studierendenantrag.typ = 'Unterbrechung' AND campus.get_status_studierendenantrag(campus.tbl_studierendenantrag.studierendenantrag_id) IN ('Genehmigt', 'EmailVersandt');"; + $where = " WHERE a.prestudent_id in (" . $db->db_implode4SQL($prestudent_id) . ") + AND a.typ = 'Unterbrechung' AND campus.get_status_studierendenantrag(a.studierendenantrag_id) IN ('Genehmigt', 'EmailVersandt');"; $not_found_error = 'Studierendenantrag not found for: ' . implode(',', $uid); } else die('wrong parameters'); @@ -37,15 +37,17 @@ else $query = " - SELECT tbl_studiengang.bezeichnung, bezeichnung_mehrsprachig[(SELECT index FROM public.tbl_sprache WHERE sprache=" . $db->db_add_param(getSprache(), FHC_STRING) . ")], studierendenantrag_id, matrikelnr, studienjahr_kurzbz, vorname, nachname, studiengang_kz, public.get_absem_prestudent(prestudent_id, NULL) AS semester, tbl_studierendenantrag.grund, datum_wiedereinstieg, datum + SELECT stg.bezeichnung, bezeichnung_mehrsprachig[(SELECT index FROM public.tbl_sprache WHERE sprache=" . $db->db_add_param(getSprache(), FHC_STRING) . ")], studierendenantrag_id, matrikelnr, studienjahr_kurzbz, a.studiensemester_kurzbz, vorname, nachname, studiengang_kz, public.get_absem_prestudent(a.prestudent_id, NULL) AS semester, a.grund, datum_wiedereinstieg, a.datum FROM - campus.tbl_studierendenantrag + campus.tbl_studierendenantrag a JOIN public.tbl_student USING (prestudent_id) JOIN public.tbl_benutzer ON tbl_student.student_uid=uid JOIN public.tbl_person USING (person_id) - JOIN public.tbl_studiengang USING (studiengang_kz) + JOIN public.tbl_studiengang stg USING (studiengang_kz) JOIN public.tbl_studiensemester USING (studiensemester_kurzbz) - JOIN bis.tbl_orgform ON (tbl_orgform.orgform_kurzbz = tbl_studiengang.orgform_kurzbz)" . $where; + LEFT JOIN public.tbl_prestudentstatus pss ON (pss.prestudent_id = a.prestudent_id AND pss.studiensemester_kurzbz=a.studiensemester_kurzbz AND pss.status_kurzbz=get_rolle_prestudent(a.prestudent_id, a.studiensemester_kurzbz)) + LEFT JOIN lehre.tbl_studienplan plan USING (studienplan_id) + JOIN bis.tbl_orgform ON (tbl_orgform.orgform_kurzbz = COALESCE(plan.orgform_kurzbz, pss.orgform_kurzbz, stg.orgform_kurzbz))" . $where; if (!$db->db_query($query) || !$db->db_num_rows()) From e56ccffe8d62e35f33630c4687a2b9fe71974c33 Mon Sep 17 00:00:00 2001 From: cgfhtw Date: Fri, 10 Nov 2023 14:30:41 +0100 Subject: [PATCH 5/7] Bugfixes: Studstatus --- application/models/education/Studierendenantrag_model.php | 2 +- application/views/lehre/Antrag/Student/List.php | 4 ++-- public/js/components/Studierendenantrag/Leitung.js | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/application/models/education/Studierendenantrag_model.php b/application/models/education/Studierendenantrag_model.php index 91af9c1f4..4931896cd 100644 --- a/application/models/education/Studierendenantrag_model.php +++ b/application/models/education/Studierendenantrag_model.php @@ -197,7 +197,7 @@ class Studierendenantrag_model extends DB_Model $this->addJoin('public.tbl_prestudent p', 'prestudent_id', 'RIGHT'); $this->addJoin('public.tbl_studiengang stg', 'p.studiengang_kz=stg.studiengang_kz'); - $this->addJoin('public.tbl_prestudentstatus ps', 'ps.prestudent_id=p.prestudent_id AND ps.studiensemester_kurzbz=' . $this->dbTable . '.studiensemester_kurzbz AND ps.status_kurzbz=get_rolle_prestudent(p.prestudent_id, ' . $this->dbTable . '.studiensemester_kurzbz)'); + $this->addJoin('public.tbl_prestudentstatus ps', 'ps.prestudent_id=p.prestudent_id AND ps.studiensemester_kurzbz=' . $this->dbTable . '.studiensemester_kurzbz AND ps.status_kurzbz=get_rolle_prestudent(p.prestudent_id, ' . $this->dbTable . '.studiensemester_kurzbz)', 'LEFT'); $this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT'); $this->addJoin('bis.tbl_orgform of', 'of.orgform_kurzbz=COALESCE(plan.orgform_kurzbz, ps.orgform_kurzbz, stg.orgform_kurzbz)'); $this->addJoin( diff --git a/application/views/lehre/Antrag/Student/List.php b/application/views/lehre/Antrag/Student/List.php index add2e8c7d..0bc4c401a 100644 --- a/application/views/lehre/Antrag/Student/List.php +++ b/application/views/lehre/Antrag/Student/List.php @@ -110,8 +110,8 @@ $this->load->view( typ == Studierendenantrag_model::TYP_WIEDERHOLUNG && $antrag->status == Studierendenantragstatus_model::STATUS_APPROVED) { ?> - p->t('studierendenantrag', 'btn_show_lvs'); ?> - + p->t('studierendenantrag', 'btn_show_lvs'); ?> + p->t('studierendenantrag', 'my_lvs'); ?> diff --git a/public/js/components/Studierendenantrag/Leitung.js b/public/js/components/Studierendenantrag/Leitung.js index da883acbc..611d01b7a 100644 --- a/public/js/components/Studierendenantrag/Leitung.js +++ b/public/js/components/Studierendenantrag/Leitung.js @@ -31,12 +31,12 @@ export default { stgkzL() { if (!this.stgL) return []; - return this.stgL.map(stg => stg.studiengang_kz); + return this.stgL.map(stg => parseInt(stg)); }, stgkzA() { if (!this.stgA) return []; - return this.stgA.map(stg => stg.studiengang_kz); + return this.stgA.map(stg => parseInt(stg)); } }, methods: { From 18f36c9d23b2b962aba236cbd1fe28f8a6a305ea Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Fri, 10 Nov 2023 15:16:40 +0100 Subject: [PATCH 6/7] update tabulator5 to version 5.5.2 to get better behaviour of frozen right column --- composer.json | 6 +++--- composer.lock | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index 089e2a751..7d1627420 100644 --- a/composer.json +++ b/composer.json @@ -230,9 +230,9 @@ "type": "package", "package": { "name": "olifolkerd/tabulator5", - "version": "5.2.1", + "version": "5.5.2", "dist": { - "url": "https://github.com/olifolkerd/tabulator/archive/refs/tags/5.2.1.zip", + "url": "https://github.com/olifolkerd/tabulator/archive/refs/tags/5.5.2.zip", "type": "zip" } } @@ -426,7 +426,7 @@ "npm-asset/primeicons": "5.0.0", "olifolkerd/tabulator4": "4.9.*", - "olifolkerd/tabulator5": "5.2.*", + "olifolkerd/tabulator5": "5.5.*", "phpseclib/phpseclib": "2.0.*", diff --git a/composer.lock b/composer.lock index aac387eb2..5660e87e9 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f6e67e501fdd9ac047cc680abeb3daa9", + "content-hash": "b6e875dbd1ec2554abbf9f7513806469", "packages": [ { "name": "afarkas/html5shiv", @@ -1511,10 +1511,10 @@ }, { "name": "olifolkerd/tabulator5", - "version": "5.2.1", + "version": "5.5.2", "dist": { "type": "zip", - "url": "https://github.com/olifolkerd/tabulator/archive/refs/tags/5.2.1.zip" + "url": "https://github.com/olifolkerd/tabulator/archive/refs/tags/5.5.2.zip" }, "type": "library" }, From 89c546f74ff21c8760bce2bceb9bd90ea891f2e5 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Fri, 10 Nov 2023 15:29:50 +0100 Subject: [PATCH 7/7] fix resize-handle in right column header --- public/css/Tabulator5.css | 3 +++ 1 file changed, 3 insertions(+) diff --git a/public/css/Tabulator5.css b/public/css/Tabulator5.css index c6c4f925e..48124335f 100644 --- a/public/css/Tabulator5.css +++ b/public/css/Tabulator5.css @@ -35,3 +35,6 @@ .tabulator-row.tabulator-selected:hover .tabulator-cell { background-color: #769bcc; } +.tabulator .tabulator-col-resize-handle:last-of-type { + z-index: 999999; +}