diff --git a/application/libraries/issues/PlausicheckLib.php b/application/libraries/issues/PlausicheckLib.php index df6a7c6f8..6545c70bf 100644 --- a/application/libraries/issues/PlausicheckLib.php +++ b/application/libraries/issues/PlausicheckLib.php @@ -558,7 +558,7 @@ class PlausicheckLib * @param int prestudent_id if check is to be executed only for one prestudent * @return success with prestudents or error */ - public function getAktiverStudentOhneStatus($studiensemester_kurzbz, $studiengang_kz = null, $prestudent_id = null) + public function getAktiverStudentOhneStatus($studiengang_kz = null, $prestudent_id = null) { $params = array(); $results = array(); @@ -574,9 +574,17 @@ class PlausicheckLib WHERE benutzer.aktiv=TRUE AND stg.melderelevant - AND prestudent.bismelden"; + AND prestudent.bismelden + AND NOT EXISTS ( + SELECT 1 + FROM public.tbl_prestudentstatus + JOIN public.tbl_studiensemester sem USING (studiensemester_kurzbz) + WHERE prestudent_id = prestudent.prestudent_id + AND sem.ende::date > NOW() - interval '4 months' + )"; // TODO - why use getLastStatus function - maybe use not exists for two semester instead - faster?? + // generell - kein Status in Zukunft - sollte nicht mehr aktiv sein, aber: auch 4 Monate Puffer, wenn im Sommer noch nicht vorgerückt z.B. if (isset($studiengang_kz)) { @@ -590,39 +598,7 @@ class PlausicheckLib $params[] = $prestudent_id; } - $qryRes = $this->_db->execReadOnlyQuery($qry, $params); - - if (isError($qryRes)) return $qryRes; - - if (hasData($qryRes)) - { - $students = getData($qryRes); - - $nextStudiensemesterRes = $this->_ci->StudiensemesterModel->getNextFrom($studiensemester_kurzbz); - - if (isError($nextStudiensemesterRes)) return $nextStudiensemesterRes; - - if (hasData($nextStudiensemesterRes)) - { - $nextStudiensemester = getData($nextStudiensemesterRes)[0]->studiensemester_kurzbz; - - foreach ($students as $student) - { - $lastStatusCurrSemRes = $this->_ci->PrestudentstatusModel->getLastStatus($student->prestudent_id, $studiensemester_kurzbz); - - if (isError($lastStatusCurrSemRes)) return $lastStatusCurrSemRes; - - $lastStatusNextSemRes = $this->_ci->PrestudentstatusModel->getLastStatus($student->prestudent_id, $nextStudiensemester); - - if (isError($lastStatusNextSemRes)) return $lastStatusNextSemRes; - - if (!hasData($lastStatusCurrSemRes) && !hasData($lastStatusNextSemRes)) - $results[] = $student; - } - } - } - - return success($results); + return $this->_db->execReadOnlyQuery($qry, $params); } /** diff --git a/application/libraries/issues/PlausicheckProducerLib.php b/application/libraries/issues/PlausicheckProducerLib.php index 580ce3a61..372642c92 100644 --- a/application/libraries/issues/PlausicheckProducerLib.php +++ b/application/libraries/issues/PlausicheckProducerLib.php @@ -49,7 +49,6 @@ class PlausicheckProducerLib // get current Studiensemester $studiensemesterRes = $this->_ci->StudiensemesterModel->getAkt(); if (hasData($studiensemesterRes)) $this->_currentStudiensemester = getData($studiensemesterRes)[0]->studiensemester_kurzbz; - } public function producePlausicheck($fehler_kurzbz, $studiensemester_kurzbz = null, $studiengang_kz = null) diff --git a/application/libraries/issues/plausichecks/AktiverStudentOhneStatus.php b/application/libraries/issues/plausichecks/AktiverStudentOhneStatus.php index f772fbdd0..2dfd9f866 100644 --- a/application/libraries/issues/plausichecks/AktiverStudentOhneStatus.php +++ b/application/libraries/issues/plausichecks/AktiverStudentOhneStatus.php @@ -14,11 +14,10 @@ class AktiverStudentOhneStatus extends PlausiChecker $results = array(); // pass parameters needed for plausicheck - $studiensemester_kurzbz = isset($params['studiensemester_kurzbz']) ? $params['studiensemester_kurzbz'] : null; $studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null; // get all students failing the plausicheck - $prestudentRes = $this->_ci->plausichecklib->getAktiverStudentOhneStatus($studiensemester_kurzbz, $studiengang_kz); + $prestudentRes = $this->_ci->plausichecklib->getAktiverStudentOhneStatus($studiengang_kz); if (isError($prestudentRes)) return $prestudentRes; @@ -32,8 +31,8 @@ class AktiverStudentOhneStatus extends PlausiChecker $results[] = array( 'person_id' => $prestudent->person_id, 'oe_kurzbz' => $prestudent->prestudent_stg_oe_kurzbz, - 'fehlertext_params' => array('studiensemester_kurzbz' => $studiensemester_kurzbz, 'prestudent_id' => $prestudent->prestudent_id), - 'resolution_params' => array('prestudent_id' => $prestudent->prestudent_id, 'studiensemester_kurzbz' => $studiensemester_kurzbz) + 'fehlertext_params' => array('prestudent_id' => $prestudent->prestudent_id), + 'resolution_params' => array('prestudent_id' => $prestudent->prestudent_id) ); } } diff --git a/system/fehlerupdate.php b/system/fehlerupdate.php index a68eb8c60..a577aa146 100644 --- a/system/fehlerupdate.php +++ b/system/fehlerupdate.php @@ -209,7 +209,7 @@ $fehlerArr = array( 'fehlercode' => 'CORE_STUDENTSTATUS_0007', 'fehler_kurzbz' => 'AktiverStudentOhneStatus', 'fehlercode_extern' => null, - 'fehlertext' => 'Aktive/r StudentIn ohne Status %s (prestudent_id %s, Studiensemester %s)', + 'fehlertext' => 'Aktive/r StudentIn ohne Status (prestudent_id %s)', 'fehlertyp_kurzbz' => 'error', 'app' => 'core' ),