From 673fd889fe46ef0b002737cf94c60cb48bf20bca Mon Sep 17 00:00:00 2001 From: cgfhtw Date: Wed, 13 Mar 2024 10:39:51 +0100 Subject: [PATCH] Studstatus: get details without whitelist --- application/controllers/jobs/AntragJob.php | 4 +- application/libraries/AntragLib.php | 81 +++++++++++-------- .../models/crm/Prestudentstatus_model.php | 5 +- .../education/Studierendenantrag_model.php | 8 +- 4 files changed, 57 insertions(+), 41 deletions(-) diff --git a/application/controllers/jobs/AntragJob.php b/application/controllers/jobs/AntragJob.php index c334ddcb3..c4e7685b4 100644 --- a/application/controllers/jobs/AntragJob.php +++ b/application/controllers/jobs/AntragJob.php @@ -625,9 +625,9 @@ class AntragJob extends JOB_Controller } $this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel'); - $result = $this->PrestudentstatusModel->loadLastWithStgDetails($prestudent->prestudent_id, $prestudent->studiensemester_kurzbz); + $result = $this->StudierendenantragModel->getStgAndSem($prestudent->studierendenantrag_id); if (hasData($result)) { - $ausbildungssemester = current(getData($result))->semester; + $ausbildungssemester = current(getData($result))->ausbildungssemester; } $dataMail = array( diff --git a/application/libraries/AntragLib.php b/application/libraries/AntragLib.php index 03a45e5e6..4d6182fcc 100644 --- a/application/libraries/AntragLib.php +++ b/application/libraries/AntragLib.php @@ -1583,15 +1583,16 @@ class AntragLib return success($result); } + /** + * Gets details for the latest Antrag of one or more types + * + * @param integer $prestudent_id + * @param array|string $typ + * + * @return \stdClass + */ public function getDetailsForLastAntrag($prestudent_id, $typ = null) { - $result = $this->_ci->PrestudentstatusModel->loadLastWithStgDetails($prestudent_id); - if (isError($result)) - return $result; - if (!hasData($result)) - return error($this->_ci->p->t('studierendenantrag', 'error_no_prestudentstatus', ['prestudent_id' => $prestudent_id])); - $resultDetails = current(getData($result)); - $where = [ 'prestudent_id' => $prestudent_id ]; @@ -1620,18 +1621,16 @@ class AntragLib 'prestudent_id' => $prestudent_id ])); - $resultDetails->status = $resultAntrag->status; - $resultDetails->statustyp = $resultAntrag->statustyp; - $resultDetails->status_insertvon = $resultAntrag->status_insertvon; - $resultDetails->grund = $resultAntrag->grund; - $resultDetails->studierendenantrag_id = $resultAntrag->studierendenantrag_id; - $resultDetails->typ = $resultAntrag->typ; - $resultDetails->datum = $resultAntrag->datum; - $resultDetails->studiensemester_kurzbz = $resultAntrag->studiensemester_kurzbz; - - return success($resultDetails); + return $this->addDetailsToAntrag($resultAntrag); } + /** + * Gets details for a specific Antrag + * + * @param integer $studierendenantrag_id + * + * @return \stdClass + */ public function getDetailsForAntrag($studierendenantrag_id) { $where = [ @@ -1646,27 +1645,41 @@ class AntragLib return error($this->_ci->p->t('studierendenantrag', "error_no_antrag_found", ['id' => $studierendenantrag_id])); $resultAntrag = current(getData($result)); - $result = $this->_ci->PrestudentstatusModel->loadLastWithStgDetails($resultAntrag->prestudent_id, $resultAntrag->studiensemester_kurzbz); + return $this->addDetailsToAntrag($resultAntrag); + } + + /** + * Helper function for getDetailsForAntrag and getDetailsForLastAntrag + * + * @param \stdClass $antrag + * + * @return \stdClass + */ + protected function addDetailsToAntrag($antrag) + { + $result = $this->_ci->PrestudentstatusModel->loadLastWithStgDetails( + $antrag->prestudent_id, + $antrag->studiensemester_kurzbz, + $antrag->insertamum + ); if (isError($result)) return $result; - if (!hasData($result)) { - $result = $this->_ci->PrestudentstatusModel->loadLastWithStgDetails($resultAntrag->prestudent_id); - if (isError($result)) - return $result; - if (!hasData($result)) - return error($this->_ci->p->t('studierendenantrag', 'error_no_prestudentstatus', $resultAntrag)); - } - $resultDetails = current(getData($result)); + if (!hasData($result)) + return error($this->_ci->p->t('studierendenantrag', 'error_no_prestudent_in_sem', $antrag)); - $resultDetails->status = $resultAntrag->status; - $resultDetails->statustyp = $resultAntrag->statustyp; - $resultDetails->grund = $resultAntrag->grund; - $resultDetails->studierendenantrag_id = $resultAntrag->studierendenantrag_id; - $resultDetails->typ = $resultAntrag->typ; - $resultDetails->dms_id = $resultAntrag->dms_id; - $resultDetails->datum_wiedereinstieg = $resultAntrag->datum_wiedereinstieg; + $result = current(getData($result)); - return success($resultDetails); + $result->status = $antrag->status; + $result->statustyp = $antrag->statustyp; + $result->status_insertvon = $antrag->status_insertvon; + $result->grund = $antrag->grund; + $result->studierendenantrag_id = $antrag->studierendenantrag_id; + $result->typ = $antrag->typ; + $result->datum = $antrag->datum; + $result->dms_id = $antrag->dms_id; + $result->datum_wiedereinstieg = $antrag->datum_wiedereinstieg; + + return success($result); } /** diff --git a/application/models/crm/Prestudentstatus_model.php b/application/models/crm/Prestudentstatus_model.php index 08c081153..b3dc45321 100644 --- a/application/models/crm/Prestudentstatus_model.php +++ b/application/models/crm/Prestudentstatus_model.php @@ -267,7 +267,7 @@ class Prestudentstatus_model extends DB_Model return $this->loadWhere($where); } - public function loadLastWithStgDetails($prestudent_id, $studiensemester_kurzbz = null) + public function loadLastWithStgDetails($prestudent_id, $studiensemester_kurzbz = null, $max_date = null) { $this->load->config('studierendenantrag'); @@ -304,7 +304,8 @@ class Prestudentstatus_model extends DB_Model $this->addLimit(1); - $this->db->where_in($this->dbTable . '.status_kurzbz', $this->config->item('antrag_prestudentstatus_whitelist')); + if ($max_date) + $this->db->where($this->dbTable . '.insertamum <', $max_date); $whereArr = [ $this->dbTable . '.prestudent_id' => $prestudent_id, diff --git a/application/models/education/Studierendenantrag_model.php b/application/models/education/Studierendenantrag_model.php index b7cda4274..ce36c1083 100644 --- a/application/models/education/Studierendenantrag_model.php +++ b/application/models/education/Studierendenantrag_model.php @@ -184,7 +184,11 @@ class Studierendenantrag_model extends DB_Model $this->addJoin( 'public.tbl_prestudentstatus s', - $this->dbTable . '.prestudent_id=s.prestudent_id AND ' . $this->dbTable . '.studiensemester_kurzbz=s.studiensemester_kurzbz' + $this->dbTable . '.prestudent_id=s.prestudent_id + AND ' . + $this->dbTable . '.studiensemester_kurzbz=s.studiensemester_kurzbz + AND ' . + $this->dbTable . '.insertamum > s.insertamum' ); $this->addJoin('public.tbl_prestudent p', $this->dbTable . '.prestudent_id=p.prestudent_id'); $this->addJoin('public.tbl_studiengang stg', 'studiengang_kz', 'LEFT'); @@ -196,8 +200,6 @@ class Studierendenantrag_model extends DB_Model $this->addLimit(1); - $this->db->where_in('s.status_kurzbz', $this->config->item('antrag_prestudentstatus_whitelist')); - return $this->loadWhere([ $this->pk => $antrag_id ]);