diff --git a/application/controllers/system/issues/IssuesKonfiguration.php b/application/controllers/system/issues/IssuesKonfiguration.php
index f6b3ff556..a19a2a93b 100644
--- a/application/controllers/system/issues/IssuesKonfiguration.php
+++ b/application/controllers/system/issues/IssuesKonfiguration.php
@@ -18,7 +18,8 @@ class IssuesKonfiguration extends Auth_Controller
'getApps' => 'admin:r',
'getFehlerKonfigurationByApp' => 'admin:r',
'saveFehlerKonfiguration' => 'admin:rw',
- 'deleteKonfiguration' => 'admin:rw'
+ 'deleteKonfiguration' => 'admin:rw',
+ 'deleteKonfigurationsWerte' => 'admin:rw'
)
);
@@ -204,6 +205,73 @@ class IssuesKonfiguration extends Auth_Controller
$this->outputJson($result);
}
+ /**
+ * Deletes values of a Konfiguration.
+ */
+ public function deleteKonfigurationsWerte()
+ {
+ $konfigurationstyp_kurzbz = $this->input->post('konfigurationstyp_kurzbz');
+ $fehlercode = $this->input->post('fehlercode');
+ $konfigurationsWert = $this->input->post('konfigurationsWert');
+
+ // check if Konfigurationstyp correctly passed
+ if (isEmptyString($konfigurationstyp_kurzbz)) $this->terminateWithJsonError($this->p->t('fehlermonitoring', 'ungueltigerKonfigurationstyp'));
+
+ // check if fehlercode correctly passed
+ if (isEmptyString($fehlercode)) $this->terminateWithJsonError($this->p->t('fehlermonitoring', 'fehlercodeFehlt'));
+
+ // separate by semicolon if multiple values passed
+ $konfigurationsWert = explode(';', $konfigurationsWert);
+
+ // check if konfiguration already set for the fehlercode
+ $this->FehlerkonfigurationModel->addSelect('konfiguration');
+ $fehlerkonfigurationRes = $this->FehlerkonfigurationModel->loadWhere(
+ array(
+ 'konfigurationstyp_kurzbz' => $konfigurationstyp_kurzbz,
+ 'fehlercode' => $fehlercode
+ )
+ );
+
+ if (!hasData($fehlerkonfigurationRes)) $this->terminateWithJsonError($this->p->t('fehlermonitoring', 'fehlerFehlerKonfigurationLaden'));
+
+ // if konfiguration exists, update values
+ if (hasData($fehlerkonfigurationRes))
+ {
+ $fehlerkonfiguration = getData($fehlerkonfigurationRes);
+
+ $existingKonf = json_decode($fehlerkonfiguration[0]->konfiguration);
+
+ if (!$existingKonf) $this->terminateWithJsonError($this->p->t('fehlermonitoring', 'fehlerJsonDekodierung'));
+
+ if (!is_array($existingKonf)) $existingKonf = array($existingKonf);
+
+ $newKonfArr = array_values(array_diff($existingKonf, $konfigurationsWert));
+
+ // if no konfiguration values left, delete whole entry
+ if (isEmptyArray($newKonfArr))
+ {
+ $this->outputJson(
+ $this->FehlerkonfigurationModel->delete(
+ array('konfigurationstyp_kurzbz' => $konfigurationstyp_kurzbz, 'fehlercode' => $fehlercode)
+ )
+ );
+ }
+ else
+ {
+ $newKonf = json_encode($newKonfArr);
+ if (!$newKonf) $this->terminateWithJsonError("error when encoding JSON");
+
+ // if there are still values, delete only part of the konfiguration
+ $this->outputJson(
+ $this->FehlerkonfigurationModel->update(
+ array('konfigurationstyp_kurzbz' => $konfigurationstyp_kurzbz, 'fehlercode' => $fehlercode),
+ array('konfiguration' => $newKonf, 'updateamum' => 'NOW()', 'updatevon' => $this->_uid)
+ )
+ );
+ }
+ }
+ }
+
/**
* Deletes a Konfiguration.
*/
diff --git a/application/libraries/issues/PlausicheckLib.php b/application/libraries/issues/PlausicheckLib.php
deleted file mode 100644
index 9c768da02..000000000
--- a/application/libraries/issues/PlausicheckLib.php
+++ /dev/null
@@ -1,1627 +0,0 @@
-_ci =& get_instance(); // get ci instance
-
- // load models
- $this->_ci->load->model('crm/Prestudent_model', 'PrestudentModel');
- $this->_ci->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
- $this->_ci->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
-
- // get database for queries
- $this->_db = new DB_Model();
- }
-
- //------------------------------------------------------------------------------------------------------------------
- // Studiengang checks
-
- /**
- * Studiengang should be the same for prestudent and student.
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getStgPrestudentUngleichStgStudent($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
- {
- $params = array();
-
- $qry = "
- SELECT
- pre.person_id, pre.prestudent_id, stg.oe_kurzbz prestudent_stg_oe_kurzbz, student_stg.oe_kurzbz student_stg_oe_kurzbz
- FROM
- public.tbl_prestudent pre
- JOIN public.tbl_student stud USING(prestudent_id)
- JOIN public.tbl_person pers USING(person_id)
- JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
- JOIN public.tbl_studiengang student_stg ON stud.studiengang_kz = student_stg.studiengang_kz
- WHERE
- stud.studiengang_kz != pre.studiengang_kz";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND pre.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Orgform of a Studiengang in Studienplan should be the same as orgform of student.
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getOrgformStgUngleichOrgformPrestudent(
- $studiensemester_kurzbz,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array($studiensemester_kurzbz);
-
- $qry = "
- SELECT
- prestudent.person_id, prestudent.prestudent_id, status.studiensemester_kurzbz,
- studiengang.orgform_kurzbz AS stg_orgform, status.orgform_kurzbz AS student_orgform,
- prestudent.studiengang_kz AS student_studiengang, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_studiengang studiengang
- JOIN public.tbl_student student USING(studiengang_kz)
- JOIN public.tbl_prestudent prestudent USING(prestudent_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_benutzer benutzer on(benutzer.uid = student.student_uid)
- JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
- LEFT JOIN lehre.tbl_studienplan stpl USING (studienplan_id)
- WHERE
- benutzer.aktiv = true
- AND status.status_kurzbz IN ('Student', 'Unterbrecher', 'Abbrecher', 'Diplomand', 'Absolvent')
- AND studiengang.studiengang_kz < 10000
- AND status.studiensemester_kurzbz = ?
- AND NOT (status.orgform_kurzbz IS NULL AND studiengang.mischform = FALSE)
- AND NOT EXISTS(
- SELECT 1
- FROM
- lehre.tbl_studienplan
- JOIN
- lehre.tbl_studienordnung USING(studienordnung_id)
- WHERE
- tbl_studienplan.studienplan_id = stpl.studienplan_id
- AND tbl_studienordnung.studiengang_kz = prestudent.studiengang_kz
- AND tbl_studienplan.orgform_kurzbz = status.orgform_kurzbz)";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND studiengang.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND prestudent.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- $qry .= "
- ORDER BY student_uid";
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Students in "mixed" Studiengang should have Orgform.
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getPrestudentMischformOhneOrgform(
- $studiensemester_kurzbz,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array($studiensemester_kurzbz);
-
- $qry = "
- SELECT
- pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
- FROM
- public.tbl_prestudent pre
- JOIN public.tbl_person USING(person_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_studiengang stg USING(studiengang_kz)
- WHERE
- status.status_kurzbz IN ('Bewerber', 'Student')
- AND stg.mischform
- AND (status.orgform_kurzbz='' OR status.orgform_kurzbz IS NULL)
- AND status.studiensemester_kurzbz=?";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND pre.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Studiengang should be the same for prestudent and studienplan.
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param studienordnung_id int if check is to be executed only for a certain studienordnung_id
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getStgPrestudentUngleichStgStudienplan(
- $studiengang_kz = null,
- $prestudent_id = null,
- $studienordnung_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array();
-
- $qry = "
- SELECT
- DISTINCT ON (ps.prestudent_id) ps.person_id, ps.prestudent_id, stordnung.studienordnung_id,
- stplan.bezeichnung AS studienplan, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_prestudent ps
- JOIN public.tbl_prestudentstatus USING(prestudent_id)
- JOIN lehre.tbl_studienplan stplan USING(studienplan_id)
- JOIN lehre.tbl_studienordnung stordnung USING(studienordnung_id)
- JOIN public.tbl_person USING(person_id)
- JOIN public.tbl_studiengang stg ON ps.studiengang_kz = stg.studiengang_kz
- WHERE
- ps.studiengang_kz<>stordnung.studiengang_kz
- AND stg.melderelevant";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND ps.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($studienordnung_id))
- {
- $qry .= " AND stordnung.studienordnung_id = ?";
- $params[] = $studienordnung_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- //------------------------------------------------------------------------------------------------------------------
- // Studentstatus checks
-
- /**
- * Abbrecher cannot be active.
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getAbbrecherAktiv($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
- {
- $params = array();
-
- $qry = "
- SELECT
- pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_prestudentstatus pre_status
- JOIN public.tbl_prestudent pre USING(prestudent_id)
- JOIN public.tbl_student student USING(prestudent_id)
- JOIN public.tbl_benutzer benutzer on(benutzer.uid=student.student_uid)
- JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
- WHERE
- pre_status.status_kurzbz ='Abbrecher'
- AND benutzer.aktiv=true";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND pre.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * There shouldn't be any status after Abbrecher status.
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getStudentstatusNachAbbrecher($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
- {
- $params = array();
-
- $qry = "
- SELECT
- prestudent.person_id, prestudent.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_student student
- JOIN public.tbl_prestudent prestudent USING(prestudent_id)
- JOIN public.tbl_prestudentstatus prestatus USING(prestudent_id)
- JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
- WHERE
- prestatus.status_kurzbz = 'Abbrecher'
- AND get_rolle_prestudent(prestudent.prestudent_id, prestatus.studiensemester_kurzbz) <> 'Abbrecher'";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND prestudent.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Ausbildungssemester of prestudent (lehrverband) must be the same as Ausbildungssemester of prestudentstatus.
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getAusbildungssemPrestudentUngleichAusbildungssemStatus(
- $studiensemester_kurzbz,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array($studiensemester_kurzbz, $studiensemester_kurzbz, $studiensemester_kurzbz);
-
- $qry = "
- SELECT
- DISTINCT(student.student_uid), student.student_uid, prestudent.person_id, prestudent.prestudent_id,
- status.ausbildungssemester AS status_ausbildungssemester, lv.semester AS student_ausbildungssemester, status.studiensemester_kurzbz,
- stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_student student
- JOIN public.tbl_studentlehrverband lv USING(student_uid)
- JOIN public.tbl_prestudent prestudent USING(prestudent_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
- WHERE
- status.studiensemester_kurzbz = ?
- AND lv.studiensemester_kurzbz = ?
- AND status.status_kurzbz NOT IN ('Interessent','Bewerber','Aufgenommener','Wartender','Abgewiesener','Unterbrecher')
- AND get_rolle_prestudent (prestudent_id, ?)='Student'
- AND status.ausbildungssemester != lv.semester";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND prestudent.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Students with active status should have an active Benutzer.
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getInaktiverStudentAktiverStatus(
- $studiensemester_kurzbz,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $aktStudiensemesterRes = $this->_ci->StudiensemesterModel->getAkt();
-
- if (isError($aktStudiensemesterRes)) return $aktStudiensemesterRes;
-
- $studiensemester_kurzbz = hasData($aktStudiensemesterRes) ? getData($aktStudiensemesterRes)[0]->studiensemester_kurzbz : '';
-
- $params = array($studiensemester_kurzbz);
-
- $qry = "
- SELECT
- DISTINCT(student.student_uid), prestudent.person_id, prestudent.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_benutzer benutzer
- JOIN public.tbl_student student on(benutzer.uid = student.student_uid)
- JOIN public.tbl_prestudent prestudent USING(prestudent_id)
- JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
- WHERE
- benutzer.aktiv=false
- AND EXISTS (SELECT 1 FROM public.tbl_prestudentstatus WHERE prestudent_id = prestudent.prestudent_id AND studiensemester_kurzbz = ?)
- AND get_rolle_prestudent(prestudent_id, NULL) IN ('Student', 'Diplomand', 'Unterbrecher', 'Praktikant')
- AND stg.melderelevant
- AND prestudent.bismelden";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND prestudent.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Students of a semester shouldn't start studies before the date of Bismeldung.
- * e.g. If student studies in WS2022 datum of status shouldn't be before 15.4.2020
- * e.g. If student studies in SS2022 datum of status shouldn't be before 15.11.2022
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getInskriptionVorLetzerBismeldung(
- $studiensemester_kurzbz,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- // get Bismeldedatum
- $datumBis = $this->_getBisdateFromSemester($studiensemester_kurzbz);
-
- $params = array($datumBis, $studiensemester_kurzbz, $datumBis);
-
- // get active students
- $qry = "
- SELECT
- DISTINCT ON (student.student_uid) ? AS datum_bismeldung,
- prestudent.person_id, prestudent.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
- FROM
- public.tbl_benutzer benutzer
- JOIN public.tbl_student student on(benutzer.uid = student.student_uid)
- JOIN public.tbl_prestudent prestudent USING(prestudent_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
- WHERE
- benutzer.aktiv=true
- AND status.studiensemester_kurzbz = ?
- /* inscription date before date of first student status */
- AND (
- SELECT datum
- FROM public.tbl_prestudentstatus
- WHERE prestudent_id = prestudent.prestudent_id
- AND studiensemester_kurzbz = status.studiensemester_kurzbz
- AND status_kurzbz = 'Student'
- ORDER BY datum, insertamum, ext_id
- LIMIT 1
- ) < ?
- AND stg.melderelevant
- AND prestudent.bismelden";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND prestudent.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Status Dates and status studysemester dates should be in correct order.
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if check is to be executed only for certain Studiengaenge
- * @return success with prestudents or error
- */
- public function getDatumStudiensemesterFalscheReihenfolge($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
- {
- $params = array();
-
- // all active students with Status student in current semester
- $qry = "
- SELECT DISTINCT ON (prestudent_id) *
- FROM (
- SELECT
- prestudent.person_id, prestudent.prestudent_id,
- stg.studiengang_kz, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz,
- ROW_NUMBER () OVER (
- PARTITION BY prestudent.prestudent_id
- ORDER BY sem.start DESC, status.datum DESC, status.insertamum DESC, status.ext_id DESC
- ) AS reihenfolge_semester,
- ROW_NUMBER () OVER (
- PARTITION BY prestudent.prestudent_id
- ORDER BY status.datum DESC, status.insertamum DESC, status.ext_id DESC
- ) AS reihenfolge_datum
- FROM
- public.tbl_student student
- JOIN public.tbl_benutzer benutzer on(student.student_uid = benutzer.uid)
- JOIN public.tbl_prestudent prestudent USING(prestudent_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_studiensemester sem USING(studiensemester_kurzbz)
- JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
- WHERE
- benutzer.aktiv=true
- AND status.status_kurzbz='Student'
- ) reihenfolge
- WHERE reihenfolge_semester <> reihenfolge_datum";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Students with active Benutzer should have a status in the current semester.
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getAktiverStudentOhneStatus($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
- {
- $params = array();
-
- $qry = "
- SELECT
- DISTINCT (student_uid), prestudent.person_id, prestudent.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_student student
- JOIN public.tbl_benutzer benutzer on (benutzer.uid = student.student_uid)
- JOIN public.tbl_prestudent prestudent USING(prestudent_id)
- JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
- WHERE
- benutzer.aktiv=TRUE
- AND stg.melderelevant
- 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
- /* buffer of four months, as status are often entered later */
- AND sem.ende::date > NOW() - interval '4 months'
- )";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND prestudent.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Studienplan should be valid in current Ausbildungssemester of prestudent.
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getStudienplanUngueltig(
- $studiensemester_kurzbz,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array($studiensemester_kurzbz);
-
- $qry = "
- SELECT
- DISTINCT pre.person_id, pre.prestudent_id,
- tbl_studienplan.bezeichnung AS studienplan,
- status.status_kurzbz,
- status.studiensemester_kurzbz,
- status.ausbildungssemester,
- stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_prestudent pre
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_person USING(person_id)
- JOIN lehre.tbl_studienplan USING(studienplan_id)
- JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
- WHERE
- status_kurzbz in('Student', 'Interessent','Bewerber','Aufgenommener')
- AND NOT EXISTS (
- SELECT
- 1
- FROM
- lehre.tbl_studienplan_semester
- WHERE
- studienplan_id=status.studienplan_id
- AND tbl_studienplan_semester.semester = status.ausbildungssemester
- AND tbl_studienplan_semester.studiensemester_kurzbz = status.studiensemester_kurzbz
- )
- AND status.studiensemester_kurzbz=?
- AND pre.bismelden
- AND stg.melderelevant";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND tbl_prestudent.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Students with finished studies should have exactly one final exam.
- * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getFalscheAnzahlAbschlusspruefungen(
- $studiensemester_kurzbz = null,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array();
-
- $qry = "
- SELECT * FROM (
- SELECT
- DISTINCT ON(pre.prestudent_id) pre.person_id, pre.prestudent_id, student_uid, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz,
- (
- SELECT COUNT(*)
- FROM lehre.tbl_abschlusspruefung
- WHERE student_uid = stud.student_uid
- AND abschlussbeurteilung_kurzbz != 'nicht'
- AND abschlussbeurteilung_kurzbz IS NOT NULL
- ) AS anzahl_abschlusspruefungen
- FROM
- public.tbl_prestudent pre
- JOIN public.tbl_student stud USING(prestudent_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
- WHERE
- status_kurzbz = 'Absolvent'
- AND pre.bismelden
- AND stg.melderelevant
- AND NOT EXISTS ( /* exclude gs */
- SELECT 1
- FROM bis.tbl_mobilitaet
- WHERE prestudent_id = pre.prestudent_id
- AND studiensemester_kurzbz = status.studiensemester_kurzbz
- )";
-
- if (isset($studiensemester_kurzbz))
- {
- $qry .= " AND status.studiensemester_kurzbz = ?";
- $params[] = $studiensemester_kurzbz;
- }
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND pre.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- $qry .= ") studenten
- WHERE anzahl_abschlusspruefungen != 1";
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Date of final exam shouldn't be missing for Absolvent.
- * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param abschlusspruefung_id int if check is to be executed for a certain Abschlussprüfung
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getDatumAbschlusspruefungFehlt(
- $studiensemester_kurzbz = null,
- $studiengang_kz = null,
- $abschlusspruefung_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $results = array();
-
- $pruefungenRes = $this->_getInvalidAbschlusspruefungen(
- $studiensemester_kurzbz,
- $studiengang_kz,
- $abschlusspruefung_id,
- $exkludierte_studiengang_kz
- );
-
- if (isError($pruefungenRes)) return $pruefungenRes;
-
- if (hasData($pruefungenRes))
- {
- $pruefungen = getData($pruefungenRes);
-
- foreach ($pruefungen as $pruefung)
- {
- if (isEmptyString($pruefung->datum)) $results[] = $pruefung;
- }
- }
-
- return success($results);
- }
-
- /**
- * Date of sponsion shouldn't be missing for Absolvent.
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param abschlusspruefung_id int if check is to be executed only for a certain Abschlussprüfung
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getDatumSponsionFehlt(
- $studiensemester_kurzbz = null,
- $studiengang_kz = null,
- $abschlusspruefung_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $results = array();
-
- $pruefungenRes = $this->_getInvalidAbschlusspruefungen(
- $studiensemester_kurzbz,
- $studiengang_kz,
- $abschlusspruefung_id,
- $exkludierte_studiengang_kz
- );
-
- if (isError($pruefungenRes)) return $pruefungenRes;
-
- if (hasData($pruefungenRes))
- {
- $pruefungen = getData($pruefungenRes);
-
- foreach ($pruefungen as $pruefung)
- {
- if (isEmptyString($pruefung->sponsion)) $results[] = $pruefung;
- }
- }
-
- return success($results);
- }
-
- /**
- * Bewerber should have participated in Reihungstest.
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getBewerberNichtZumRtAngetreten(
- $studiensemester_kurzbz,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $previousStudiensemesterRes = $this->_ci->StudiensemesterModel->getPreviousFrom($studiensemester_kurzbz);
-
- if (isError($previousStudiensemesterRes)) return $previousStudiensemesterRes;
-
- $params = array($studiensemester_kurzbz);
-
- $qry = "
- SELECT
- prestudent.person_id, prestudent.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
- FROM
- public.tbl_prestudent prestudent
- JOIN public.tbl_prestudentstatus status ON(prestudent.prestudent_id=status.prestudent_id)
- JOIN public.tbl_person USING(person_id)
- LEFT JOIN bis.tbl_orgform USING(orgform_kurzbz)
- JOIN public.tbl_studiengang stg USING(studiengang_kz)
- WHERE
- status_kurzbz='Bewerber'
- AND reihungstestangetreten=false
- AND stg.melderelevant
- AND prestudent.bismelden";
-
- if (hasData($previousStudiensemesterRes))
- {
- $previousStudiensemester = getData($previousStudiensemesterRes)[0]->studiensemester_kurzbz;
- $qry .= " AND (studiensemester_kurzbz=? OR studiensemester_kurzbz=?)";
- $params[] = $previousStudiensemester;
- }
- else
- {
- $qry .= " AND studiensemester_kurzbz=?";
- }
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND prestudent.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Current Ausbildungssemester shouldn't be 0.
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getAktSemesterNull($studiensemester_kurzbz, $studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
- {
- $params = array($studiensemester_kurzbz);
-
- $qry = "
- SELECT
- DISTINCT pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, prestat.studiensemester_kurzbz
- FROM
- public.tbl_prestudent pre
- JOIN public.tbl_prestudentstatus prestat USING(prestudent_id)
- JOIN public.tbl_studiengang stg USING(studiengang_kz)
- WHERE
- prestat.status_kurzbz != 'Incoming'
- AND prestat.studiensemester_kurzbz = ?
- AND ausbildungssemester = 0
- AND stg.melderelevant
- AND pre.bismelden";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND pre.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Prestudent should have a final status.
- * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getAbschlussstatusFehlt(
- $studiensemester_kurzbz = null,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array();
-
- $qry = "
- SELECT
- DISTINCT ON (pre.prestudent_id)
- pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
- FROM
- public.tbl_prestudent pre
- JOIN public.tbl_person USING(person_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_studiengang stg USING(studiengang_kz)
- WHERE
- NOT EXISTS( /*student does not study anymore*/
- SELECT
- 1
- FROM
- public.tbl_prestudentstatus ps
- JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
- WHERE
- prestudent_id=pre.prestudent_id
- /* 4 months: There might be Diplomanden, in summer months end status is often not entered yet */
- AND tbl_studiensemester.ende>now() - interval '4 months'
- )
- /* check only valid begininng with 2018 */
- AND '2018-01-01'<(SELECT max(datum) FROM public.tbl_prestudentstatus WHERE prestudent_id=pre.prestudent_id)
- AND NOT EXISTS( /* no end status */
- SELECT 1
- FROM public.tbl_prestudentstatus ps
- WHERE
- prestudent_id=pre.prestudent_id
- AND status_kurzbz IN('Abbrecher','Abgewiesener','Absolvent','Incoming')
- )
- AND stg.melderelevant
- AND pre.bismelden";
-
- if (isset($studiensemester_kurzbz))
- {
- $prevStudiensemesterRes = $this->_ci->StudiensemesterModel->getPreviousFrom($studiensemester_kurzbz);
-
- if (isError($prevStudiensemesterRes)) return $prevStudiensemesterRes;
-
- if (hasData($prevStudiensemesterRes))
- {
- // if Studiensemester given, check only if has status in current or previous semester
- $prevStudiensemester = getData($prevStudiensemesterRes)[0]->studiensemester_kurzbz;
- $qry .= " AND EXISTS (
- SELECT 1
- FROM public.tbl_prestudentstatus ps
- WHERE studiensemester_kurzbz IN (?, ?)
- AND ps.prestudent_id = pre.prestudent_id
- )";
- $params[] = $prevStudiensemester;
- $params[] = $studiensemester_kurzbz;
- }
- }
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND pre.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Student with active status should have been charged, i.e. have a Kontobuchung with a negative or zero value.
- * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getAktiverStudentstatusOhneKontobuchung(
- $studiensemester_kurzbz,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array($studiensemester_kurzbz);
-
- $qry = "
- SELECT
- DISTINCT ON (pre.prestudent_id)
- pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
- FROM
- public.tbl_prestudent pre
- JOIN public.tbl_person pers USING(person_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_studiengang stg USING(studiengang_kz)
- WHERE
- status.studiensemester_kurzbz = ?
- AND status.status_kurzbz IN ('Student', 'Incoming')
- AND NOT EXISTS (
- SELECT 1
- FROM
- public.tbl_konto
- WHERE
- person_id = pers.person_id
- AND studiensemester_kurzbz = status.studiensemester_kurzbz
- AND buchungsnr_verweis IS NULL
- AND betrag <= 0
- )
- AND stg.melderelevant
- AND pre.bismelden";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND pre.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- //------------------------------------------------------------------------------------------------------------------
- // Person checks
-
- /**
- * Birthdate is too long ago.
- * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param person_id int if check is to be executed only for one person
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getGbDatumWeitZurueck(
- $studiensemester_kurzbz = null,
- $studiengang_kz = null,
- $person_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array();
-
- $qry = "
- SELECT
- pers.person_id
- FROM
- public.tbl_person pers
- WHERE
- pers.gebdatum < '1920-01-01'
- AND EXISTS (
- SELECT 1
- FROM public.tbl_prestudent
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_studiengang stg USING(studiengang_kz)
- WHERE person_id = pers.person_id";
-
- if (isset($studiensemester_kurzbz))
- {
- $qry .= " AND status.studiensemester_kurzbz = ?";
- $params[] = $studiensemester_kurzbz;
- }
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- $qry .= ")";
-
- if (isset($person_id))
- {
- $qry .= " AND pers.person_id = ?";
- $params[] = $person_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Nation is not Austria, but address has austrian Gemeinde.
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param person_id int if check is to be executed only for one person
- * @return success with prestudents or error
- */
- public function getNationNichtOesterreichAberGemeinde($studiengang_kz = null, $person_id = null, $exkludierte_studiengang_kz = null)
- {
- $params = array();
-
- $qry = "SELECT DISTINCT tbl_person.person_id, adr.gemeinde, adr.adresse_id
- FROM
- public.tbl_adresse adr
- JOIN public.tbl_prestudent USING(person_id)
- JOIN public.tbl_person USING(person_id)
- JOIN public.tbl_student USING(prestudent_id)
- JOIN public.tbl_benutzer ON(uid=student_uid)
- JOIN public.tbl_studiengang stg ON tbl_prestudent.studiengang_kz = stg.studiengang_kz
- WHERE
- adr.nation!='A'
- AND tbl_benutzer.aktiv
- AND gemeinde NOT IN ('Münster')
- AND EXISTS(SELECT 1 FROM bis.tbl_gemeinde WHERE name = adr.gemeinde)";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($person_id))
- {
- $qry .= " AND tbl_person.person_id = ?";
- $params[] = $person_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Students should have exactly one home address.
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param person_id int if check is to be executed only for one person
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getFalscheAnzahlHeimatadressen(
- $studiensemester_kurzbz = null,
- $studiengang_kz = null,
- $person_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array();
-
- $qry = "
- SELECT
- DISTINCT person_id
- FROM
- (
- SELECT person_id, COUNT(adresse_id) AS anzahl_adressen
- FROM public.tbl_adresse addr
- WHERE heimatadresse IS TRUE
- GROUP BY person_id
- ) adressen
- JOIN public.tbl_person USING(person_id)
- JOIN public.tbl_prestudent pre USING(person_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_student USING(prestudent_id)
- JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
- WHERE
- anzahl_adressen != 1
- AND stg.melderelevant
- AND pre.bismelden";
-
- if (isset($studiensemester_kurzbz))
- {
- $qry .= " AND status.studiensemester_kurzbz = ?";
- $params[] = $studiensemester_kurzbz;
- }
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($person_id))
- {
- $qry .= " AND person_id = ?";
- $params[] = $person_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Students should have exactly one delivery address.
- * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param person_id int if check is to be executed only for one person
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getFalscheAnzahlZustelladressen(
- $studiensemester_kurzbz = null,
- $studiengang_kz = null,
- $person_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array();
-
- $qry = "
- SELECT
- DISTINCT person_id
- FROM
- (
- SELECT person_id, COUNT(adresse_id) AS anzahl_adressen
- FROM public.tbl_adresse addr
- WHERE zustelladresse IS TRUE
- GROUP BY person_id
- ) adressen
- JOIN public.tbl_person USING(person_id)
- JOIN public.tbl_prestudent pre USING(person_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_student USING(prestudent_id)
- JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
- WHERE
- anzahl_adressen != 1
- AND stg.melderelevant
- AND pre.bismelden";
-
- if (isset($studiensemester_kurzbz))
- {
- $qry .= " AND status.studiensemester_kurzbz = ?";
- $params[] = $studiensemester_kurzbz;
- }
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($person_id))
- {
- $qry .= " AND person_id = ?";
- $params[] = $person_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- //------------------------------------------------------------------------------------------------------------------
- // I/O checks
-
- /**
- * Incoming shouldn't have austrian home address.
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param person_id int if check is to be executed only for one person
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getIncomingHeimatNationOesterreich(
- $studiensemester_kurzbz,
- $studiengang_kz = null,
- $person_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array($studiensemester_kurzbz);
-
- $qry = "
- SELECT
- DISTINCT pers.person_id, status.studiensemester_kurzbz
- FROM
- public.tbl_prestudent pre
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_person pers USING(person_id)
- JOIN public.tbl_adresse addr USING(person_id)
- JOIN public.tbl_studiengang stg USING(studiengang_kz)
- WHERE
- status.status_kurzbz = 'Incoming'
- AND addr.nation = 'A'
- AND addr.heimatadresse
- AND status.studiensemester_kurzbz = ?
- AND stg.melderelevant
- AND pre.bismelden";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($person_id))
- {
- $qry .= " AND pers.person_id = ?";
- $params[] = $person_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Incoming should have IN/OUT data.
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return success with prestudents or error
- */
- public function getIncomingOhneIoDatensatz($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
- {
- $params = array();
-
- $qry = "
- SELECT
- DISTINCT ON(student_uid, nachname, vorname)
- tbl_person.person_id,
- tbl_prestudent.prestudent_id,
- stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_student
- JOIN public.tbl_benutzer ON(student_uid=uid)
- JOIN public.tbl_person USING(person_id)
- JOIN public.tbl_prestudent USING(prestudent_id)
- JOIN public.tbl_prestudentstatus ON(tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id)
- JOIN public.tbl_studiengang stg ON(stg.studiengang_kz=tbl_student.studiengang_kz)
- WHERE
- bismelden=TRUE
- AND status_kurzbz='Incoming' AND NOT EXISTS (SELECT 1 FROM bis.tbl_bisio WHERE student_uid=tbl_student.student_uid)
- AND stg.melderelevant";
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND tbl_prestudent.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Incoming or gemeinsame Studien students should not receive funding (not be förderrelevant).
- * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param prestudent_id int if check is to be executed only for one prestudent
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- * @return object success or error
- */
- public function getIncomingOrGsFoerderrelevant(
- $studiensemester_kurzbz = null,
- $studiengang_kz = null,
- $prestudent_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array();
-
- $qry = "
- SELECT
- DISTINCT ON(prestudent_id)
- pers.person_id,
- ps.prestudent_id,
- stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_student stud
- JOIN public.tbl_benutzer ON(student_uid=uid)
- JOIN public.tbl_person pers USING(person_id)
- JOIN public.tbl_prestudent ps USING(prestudent_id)
- JOIN public.tbl_prestudentstatus status USING(prestudent_id)
- JOIN public.tbl_studiengang stg ON(stg.studiengang_kz=stud.studiengang_kz)
- WHERE
- (
- status.status_kurzbz = 'Incoming'
- OR EXISTS (
- SELECT 1
- FROM
- bis.tbl_mobilitaet
- JOIN public.tbl_prestudent USING(prestudent_id)
- WHERE
- prestudent_id = ps.prestudent_id
- AND gsstudientyp_kurzbz = 'Extern'
- )
- )
- AND (ps.foerderrelevant <> FALSE OR ps.foerderrelevant IS NULL)
- AND bismelden=TRUE
- AND stg.melderelevant";
-
- if (isset($studiensemester_kurzbz))
- {
- $qry .= " AND status.studiensemester_kurzbz = ?";
- $params[] = $studiensemester_kurzbz;
- }
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($prestudent_id))
- {
- $qry .= " AND ps.prestudent_id = ?";
- $params[] = $prestudent_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- //------------------------------------------------------------------------------------------------------------------
- // Private methods
-
- /**
- * Get final exams in a semester which are invalid (e.g. missing data)
- * @param studiensemester_kurzbz string if check is to be executed for certain Studiengang
- * @param studiengang_kz int if check is to be executed for certain Studiengang
- * @param abschlusspruefung_id int if check is to be executed for certain Abschlussprüfung
- * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
- */
- private function _getInvalidAbschlusspruefungen(
- $studiensemester_kurzbz = null,
- $studiengang_kz = null,
- $abschlusspruefung_id = null,
- $exkludierte_studiengang_kz = null
- ) {
- $params = array();
-
- $qry = "
- SELECT
- pre.person_id, pre.prestudent_id,
- pruefung.sponsion, pruefung.datum, pruefung.abschlusspruefung_id,
- stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
- FROM
- public.tbl_prestudent pre
- JOIN public.tbl_student stud USING(prestudent_id)
- JOIN public.tbl_prestudentstatus prestatus USING(prestudent_id)
- JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
- JOIN lehre.tbl_abschlusspruefung pruefung ON stud.student_uid = pruefung.student_uid
- WHERE
- status_kurzbz = 'Absolvent'
- AND NOT EXISTS ( /* exclude gs */
- SELECT 1
- FROM bis.tbl_mobilitaet
- WHERE prestudent_id = pre.prestudent_id
- AND studiensemester_kurzbz = prestatus.studiensemester_kurzbz
- )
- AND abschlussbeurteilung_kurzbz!='nicht'
- AND abschlussbeurteilung_kurzbz IS NOT NULL
- AND (pruefung.datum IS NULL OR pruefung.sponsion IS NULL)
- AND pre.bismelden
- AND stg.melderelevant";
-
- if (isset($studiensemester_kurzbz))
- {
- $qry .= " AND prestatus.studiensemester_kurzbz = ?";
- $params[] = $studiensemester_kurzbz;
- }
-
- if (isset($studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz = ?";
- $params[] = $studiengang_kz;
- }
-
- if (isset($abschlusspruefung_id))
- {
- $qry .= " AND pruefung.abschlusspruefung_id = ?";
- $params[] = $abschlusspruefung_id;
- }
-
- if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
- {
- $qry .= " AND stg.studiengang_kz NOT IN ?";
- $params[] = $exkludierte_studiengang_kz;
- }
-
- return $this->_db->execReadOnlyQuery($qry, $params);
- }
-
- /**
- * Gets Bismeldedate from Studiensemester.
- * @param studiensemester_kurzbz string
- */
- private function _getBisdateFromSemester($studiensemester_kurzbz)
- {
- $semesterYear = substr($studiensemester_kurzbz, 2, 6);
- $semesterType = substr($studiensemester_kurzbz, 0, 2);
-
- if ($semesterType == 'SS')
- {
- return date_format(date_create(($semesterYear - 1)."-11-15"), 'Y-m-d');
- }
-
- if ($semesterType == 'WS')
- {
- return date_format(date_create($semesterYear."-04-15"), 'Y-m-d');
- }
- }
-}
diff --git a/application/libraries/issues/plausichecks/AbbrecherAktiv.php b/application/libraries/issues/plausichecks/AbbrecherAktiv.php
index caa8dd91c..9eae389b5 100644
--- a/application/libraries/issues/plausichecks/AbbrecherAktiv.php
+++ b/application/libraries/issues/plausichecks/AbbrecherAktiv.php
@@ -20,7 +20,7 @@ class AbbrecherAktiv extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getAbbrecherAktiv($studiengang_kz, null, $exkludierte_studiengang_kz);
+ $prestudentRes = $this->getAbbrecherAktiv($studiengang_kz, null, $exkludierte_studiengang_kz);
if (isError($prestudentRes)) return $prestudentRes;
@@ -43,4 +43,49 @@ class AbbrecherAktiv extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Abbrecher cannot be active.
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getAbbrecherAktiv($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
+ {
+ $params = array();
+
+ $qry = "
+ SELECT
+ pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_prestudentstatus pre_status
+ JOIN public.tbl_prestudent pre USING(prestudent_id)
+ JOIN public.tbl_student student USING(prestudent_id)
+ JOIN public.tbl_benutzer benutzer on(benutzer.uid=student.student_uid)
+ JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
+ WHERE
+ pre_status.status_kurzbz ='Abbrecher'
+ AND benutzer.aktiv=true";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND pre.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/AbschlussstatusFehlt.php b/application/libraries/issues/plausichecks/AbschlussstatusFehlt.php
index e7894c7a8..3690e1331 100644
--- a/application/libraries/issues/plausichecks/AbschlussstatusFehlt.php
+++ b/application/libraries/issues/plausichecks/AbschlussstatusFehlt.php
@@ -21,7 +21,7 @@ class AbschlussstatusFehlt extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getAbschlussstatusFehlt(
+ $prestudentRes = $this->getAbschlussstatusFehlt(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -49,4 +49,95 @@ class AbschlussstatusFehlt extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Prestudent should have a final status.
+ * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getAbschlussstatusFehlt(
+ $studiensemester_kurzbz = null,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array();
+
+ $qry = "
+ SELECT
+ DISTINCT ON (pre.prestudent_id)
+ pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
+ FROM
+ public.tbl_prestudent pre
+ JOIN public.tbl_person USING(person_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_studiengang stg USING(studiengang_kz)
+ WHERE
+ NOT EXISTS( /*student does not study anymore*/
+ SELECT
+ 1
+ FROM
+ public.tbl_prestudentstatus ps
+ JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
+ WHERE
+ prestudent_id=pre.prestudent_id
+ /* 4 months: There might be Diplomanden, in summer months end status is often not entered yet */
+ AND tbl_studiensemester.ende>now() - interval '4 months'
+ )
+ /* check only valid begininng with 2018 */
+ AND '2018-01-01'<(SELECT max(datum) FROM public.tbl_prestudentstatus WHERE prestudent_id=pre.prestudent_id)
+ AND NOT EXISTS( /* no end status */
+ SELECT 1
+ FROM public.tbl_prestudentstatus ps
+ WHERE
+ prestudent_id=pre.prestudent_id
+ AND status_kurzbz IN('Abbrecher','Abgewiesener','Absolvent','Incoming')
+ )
+ AND stg.melderelevant
+ AND pre.bismelden";
+
+ if (isset($studiensemester_kurzbz))
+ {
+ $prevStudiensemesterRes = $this->_ci->StudiensemesterModel->getPreviousFrom($studiensemester_kurzbz);
+
+ if (isError($prevStudiensemesterRes)) return $prevStudiensemesterRes;
+
+ if (hasData($prevStudiensemesterRes))
+ {
+ // if Studiensemester given, check only if has status in current or previous semester
+ $prevStudiensemester = getData($prevStudiensemesterRes)[0]->studiensemester_kurzbz;
+ $qry .= " AND EXISTS (
+ SELECT 1
+ FROM public.tbl_prestudentstatus ps
+ WHERE studiensemester_kurzbz IN (?, ?)
+ AND ps.prestudent_id = pre.prestudent_id
+ )";
+ $params[] = $prevStudiensemester;
+ $params[] = $studiensemester_kurzbz;
+ }
+ }
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND pre.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/AktSemesterNull.php b/application/libraries/issues/plausichecks/AktSemesterNull.php
index fa251a95e..1223a2720 100644
--- a/application/libraries/issues/plausichecks/AktSemesterNull.php
+++ b/application/libraries/issues/plausichecks/AktSemesterNull.php
@@ -21,7 +21,7 @@ class AktSemesterNull extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getAktSemesterNull($studiensemester_kurzbz, $studiengang_kz, null, $exkludierte_studiengang_kz);
+ $prestudentRes = $this->getAktSemesterNull($studiensemester_kurzbz, $studiengang_kz, null, $exkludierte_studiengang_kz);
if (isError($prestudentRes)) return $prestudentRes;
@@ -50,4 +50,51 @@ class AktSemesterNull extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Current Ausbildungssemester shouldn't be 0.
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getAktSemesterNull($studiensemester_kurzbz, $studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
+ {
+ $params = array($studiensemester_kurzbz);
+
+ $qry = "
+ SELECT
+ DISTINCT pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, prestat.studiensemester_kurzbz
+ FROM
+ public.tbl_prestudent pre
+ JOIN public.tbl_prestudentstatus prestat USING(prestudent_id)
+ JOIN public.tbl_studiengang stg USING(studiengang_kz)
+ WHERE
+ prestat.status_kurzbz != 'Incoming'
+ AND prestat.studiensemester_kurzbz = ?
+ AND ausbildungssemester = 0
+ AND stg.melderelevant
+ AND pre.bismelden";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND pre.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/AktiverStudentOhneStatus.php b/application/libraries/issues/plausichecks/AktiverStudentOhneStatus.php
index 225c6242f..94fe5cc8d 100644
--- a/application/libraries/issues/plausichecks/AktiverStudentOhneStatus.php
+++ b/application/libraries/issues/plausichecks/AktiverStudentOhneStatus.php
@@ -20,7 +20,7 @@ class AktiverStudentOhneStatus extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getAktiverStudentOhneStatus($studiengang_kz, null, $exkludierte_studiengang_kz);
+ $prestudentRes = $this->getAktiverStudentOhneStatus($studiengang_kz, null, $exkludierte_studiengang_kz);
if (isError($prestudentRes)) return $prestudentRes;
@@ -43,4 +43,57 @@ class AktiverStudentOhneStatus extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Students with active Benutzer should have a status in the current semester.
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getAktiverStudentOhneStatus($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
+ {
+ $params = array();
+
+ $qry = "
+ SELECT
+ DISTINCT (student_uid), prestudent.person_id, prestudent.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_student student
+ JOIN public.tbl_benutzer benutzer on (benutzer.uid = student.student_uid)
+ JOIN public.tbl_prestudent prestudent USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
+ WHERE
+ benutzer.aktiv=TRUE
+ AND stg.melderelevant
+ 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
+ /* buffer of four months, as status are often entered later */
+ AND sem.ende::date > NOW() - interval '4 months'
+ )";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND prestudent.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/AktiverStudentstatusOhneKontobuchung.php b/application/libraries/issues/plausichecks/AktiverStudentstatusOhneKontobuchung.php
index a9b30a1d2..28684388f 100644
--- a/application/libraries/issues/plausichecks/AktiverStudentstatusOhneKontobuchung.php
+++ b/application/libraries/issues/plausichecks/AktiverStudentstatusOhneKontobuchung.php
@@ -21,7 +21,7 @@ class AktiverStudentstatusOhneKontobuchung extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getAktiverStudentstatusOhneKontobuchung(
+ $prestudentRes = $this->getAktiverStudentstatusOhneKontobuchung(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -55,4 +55,66 @@ class AktiverStudentstatusOhneKontobuchung extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Student with active status should have been charged, i.e. have a Kontobuchung with a negative or zero value.
+ * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getAktiverStudentstatusOhneKontobuchung(
+ $studiensemester_kurzbz,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array($studiensemester_kurzbz);
+
+ $qry = "
+ SELECT
+ DISTINCT ON (pre.prestudent_id)
+ pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
+ FROM
+ public.tbl_prestudent pre
+ JOIN public.tbl_person pers USING(person_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_studiengang stg USING(studiengang_kz)
+ WHERE
+ status.studiensemester_kurzbz = ?
+ AND status.status_kurzbz IN ('Student', 'Incoming')
+ AND NOT EXISTS (
+ SELECT 1
+ FROM
+ public.tbl_konto
+ WHERE
+ person_id = pers.person_id
+ AND studiensemester_kurzbz = status.studiensemester_kurzbz
+ AND buchungsnr_verweis IS NULL
+ AND betrag <= 0
+ )
+ AND stg.melderelevant
+ AND pre.bismelden";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND pre.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/AusbildungssemPrestudentUngleichAusbildungssemStatus.php b/application/libraries/issues/plausichecks/AusbildungssemPrestudentUngleichAusbildungssemStatus.php
index 3462685ab..00ff16ae0 100644
--- a/application/libraries/issues/plausichecks/AusbildungssemPrestudentUngleichAusbildungssemStatus.php
+++ b/application/libraries/issues/plausichecks/AusbildungssemPrestudentUngleichAusbildungssemStatus.php
@@ -21,7 +21,7 @@ class AusbildungssemPrestudentUngleichAusbildungssemStatus extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getAusbildungssemPrestudentUngleichAusbildungssemStatus(
+ $prestudentRes = $this->getAusbildungssemPrestudentUngleichAusbildungssemStatus(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -58,4 +58,59 @@ class AusbildungssemPrestudentUngleichAusbildungssemStatus extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Ausbildungssemester of prestudent (lehrverband) must be the same as Ausbildungssemester of prestudentstatus.
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getAusbildungssemPrestudentUngleichAusbildungssemStatus(
+ $studiensemester_kurzbz,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array($studiensemester_kurzbz, $studiensemester_kurzbz, $studiensemester_kurzbz);
+
+ $qry = "
+ SELECT
+ DISTINCT(student.student_uid), student.student_uid, prestudent.person_id, prestudent.prestudent_id,
+ status.ausbildungssemester AS status_ausbildungssemester, lv.semester AS student_ausbildungssemester, status.studiensemester_kurzbz,
+ stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_student student
+ JOIN public.tbl_studentlehrverband lv USING(student_uid)
+ JOIN public.tbl_prestudent prestudent USING(prestudent_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
+ WHERE
+ status.studiensemester_kurzbz = ?
+ AND lv.studiensemester_kurzbz = ?
+ AND status.status_kurzbz NOT IN ('Interessent','Bewerber','Aufgenommener','Wartender','Abgewiesener','Unterbrecher')
+ AND get_rolle_prestudent (prestudent_id, ?)='Student'
+ AND status.ausbildungssemester != lv.semester";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND prestudent.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/BewerberNichtZumRtAngetreten.php b/application/libraries/issues/plausichecks/BewerberNichtZumRtAngetreten.php
index a1b1941dd..4a9655d13 100644
--- a/application/libraries/issues/plausichecks/BewerberNichtZumRtAngetreten.php
+++ b/application/libraries/issues/plausichecks/BewerberNichtZumRtAngetreten.php
@@ -21,7 +21,7 @@ class BewerberNichtZumRtAngetreten extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getBewerberNichtZumRtAngetreten(
+ $prestudentRes = $this->getBewerberNichtZumRtAngetreten(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -52,4 +52,72 @@ class BewerberNichtZumRtAngetreten extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Bewerber should have participated in Reihungstest.
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getBewerberNichtZumRtAngetreten(
+ $studiensemester_kurzbz,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $this->_ci->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
+ $previousStudiensemesterRes = $this->_ci->StudiensemesterModel->getPreviousFrom($studiensemester_kurzbz);
+
+ if (isError($previousStudiensemesterRes)) return $previousStudiensemesterRes;
+
+ $params = array($studiensemester_kurzbz);
+
+ $qry = "
+ SELECT
+ prestudent.person_id, prestudent.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
+ FROM
+ public.tbl_prestudent prestudent
+ JOIN public.tbl_prestudentstatus status ON(prestudent.prestudent_id=status.prestudent_id)
+ JOIN public.tbl_person USING(person_id)
+ LEFT JOIN bis.tbl_orgform USING(orgform_kurzbz)
+ JOIN public.tbl_studiengang stg USING(studiengang_kz)
+ WHERE
+ status_kurzbz='Bewerber'
+ AND reihungstestangetreten=false
+ AND stg.melderelevant
+ AND prestudent.bismelden";
+
+ if (hasData($previousStudiensemesterRes))
+ {
+ $previousStudiensemester = getData($previousStudiensemesterRes)[0]->studiensemester_kurzbz;
+ $qry .= " AND (studiensemester_kurzbz=? OR studiensemester_kurzbz=?)";
+ $params[] = $previousStudiensemester;
+ }
+ else
+ {
+ $qry .= " AND studiensemester_kurzbz=?";
+ }
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND prestudent.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/DatumAbschlusspruefungFehlt.php b/application/libraries/issues/plausichecks/DatumAbschlusspruefungFehlt.php
index 0d66324fb..f606e2c8c 100644
--- a/application/libraries/issues/plausichecks/DatumAbschlusspruefungFehlt.php
+++ b/application/libraries/issues/plausichecks/DatumAbschlusspruefungFehlt.php
@@ -21,7 +21,7 @@ class DatumAbschlusspruefungFehlt extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getDatumAbschlusspruefungFehlt(
+ $prestudentRes = $this->getDatumAbschlusspruefungFehlt(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -52,4 +52,72 @@ class DatumAbschlusspruefungFehlt extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Date of final exam shouldn't be missing for Absolvent.
+ * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param abschlusspruefung_id int if check is to be executed for a certain Abschlussprüfung
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getDatumAbschlusspruefungFehlt(
+ $studiensemester_kurzbz = null,
+ $studiengang_kz = null,
+ $abschlusspruefung_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array();
+
+ $qry = "
+ SELECT
+ pre.person_id, pre.prestudent_id,
+ pruefung.sponsion, pruefung.datum, pruefung.abschlusspruefung_id,
+ stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_prestudent pre
+ JOIN public.tbl_student stud USING(prestudent_id)
+ JOIN public.tbl_prestudentstatus prestatus USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
+ JOIN lehre.tbl_abschlusspruefung pruefung ON stud.student_uid = pruefung.student_uid
+ WHERE
+ status_kurzbz = 'Absolvent'
+ AND NOT EXISTS ( /* exclude gs */
+ SELECT 1
+ FROM bis.tbl_mobilitaet
+ WHERE prestudent_id = pre.prestudent_id
+ AND studiensemester_kurzbz = prestatus.studiensemester_kurzbz
+ )
+ AND abschlussbeurteilung_kurzbz!='nicht'
+ AND abschlussbeurteilung_kurzbz IS NOT NULL
+ AND pruefung.datum IS NULL
+ AND pre.bismelden
+ AND stg.melderelevant";
+
+ if (isset($studiensemester_kurzbz))
+ {
+ $qry .= " AND prestatus.studiensemester_kurzbz = ?";
+ $params[] = $studiensemester_kurzbz;
+ }
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($abschlusspruefung_id))
+ {
+ $qry .= " AND pruefung.abschlusspruefung_id = ?";
+ $params[] = $abschlusspruefung_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/DatumSponsionFehlt.php b/application/libraries/issues/plausichecks/DatumSponsionFehlt.php
index 719afc2e2..210ae6f01 100644
--- a/application/libraries/issues/plausichecks/DatumSponsionFehlt.php
+++ b/application/libraries/issues/plausichecks/DatumSponsionFehlt.php
@@ -21,7 +21,7 @@ class DatumSponsionFehlt extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getDatumSponsionFehlt(
+ $prestudentRes = $this->getDatumSponsionFehlt(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -52,4 +52,72 @@ class DatumSponsionFehlt extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Date of sponsion shouldn't be missing for Absolvent.
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param abschlusspruefung_id int if check is to be executed only for a certain Abschlussprüfung
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getDatumSponsionFehlt(
+ $studiensemester_kurzbz = null,
+ $studiengang_kz = null,
+ $abschlusspruefung_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array();
+
+ $qry = "
+ SELECT
+ pre.person_id, pre.prestudent_id,
+ pruefung.sponsion, pruefung.datum, pruefung.abschlusspruefung_id,
+ stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_prestudent pre
+ JOIN public.tbl_student stud USING(prestudent_id)
+ JOIN public.tbl_prestudentstatus prestatus USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
+ JOIN lehre.tbl_abschlusspruefung pruefung ON stud.student_uid = pruefung.student_uid
+ WHERE
+ status_kurzbz = 'Absolvent'
+ AND NOT EXISTS ( /* exclude gs */
+ SELECT 1
+ FROM bis.tbl_mobilitaet
+ WHERE prestudent_id = pre.prestudent_id
+ AND studiensemester_kurzbz = prestatus.studiensemester_kurzbz
+ )
+ AND abschlussbeurteilung_kurzbz!='nicht'
+ AND abschlussbeurteilung_kurzbz IS NOT NULL
+ AND pruefung.sponsion IS NULL
+ AND pre.bismelden
+ AND stg.melderelevant";
+
+ if (isset($studiensemester_kurzbz))
+ {
+ $qry .= " AND prestatus.studiensemester_kurzbz = ?";
+ $params[] = $studiensemester_kurzbz;
+ }
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($abschlusspruefung_id))
+ {
+ $qry .= " AND pruefung.abschlusspruefung_id = ?";
+ $params[] = $abschlusspruefung_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/DatumStudiensemesterFalscheReihenfolge.php b/application/libraries/issues/plausichecks/DatumStudiensemesterFalscheReihenfolge.php
index e1f01f735..381bea7df 100644
--- a/application/libraries/issues/plausichecks/DatumStudiensemesterFalscheReihenfolge.php
+++ b/application/libraries/issues/plausichecks/DatumStudiensemesterFalscheReihenfolge.php
@@ -20,7 +20,7 @@ class DatumStudiensemesterFalscheReihenfolge extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getDatumStudiensemesterFalscheReihenfolge($studiengang_kz, null, $exkludierte_studiengang_kz);
+ $prestudentRes = $this->getDatumStudiensemesterFalscheReihenfolge($studiengang_kz, null, $exkludierte_studiengang_kz);
if (isError($prestudentRes)) return $prestudentRes;
@@ -45,4 +45,64 @@ class DatumStudiensemesterFalscheReihenfolge extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Status Dates and status studysemester dates should be in correct order.
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if check is to be executed only for certain Studiengaenge
+ * @return success with prestudents or error
+ */
+ public function getDatumStudiensemesterFalscheReihenfolge($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
+ {
+ $params = array();
+
+ // all active students with Status student in current semester
+ $qry = "
+ SELECT DISTINCT ON (prestudent_id) *
+ FROM (
+ SELECT
+ prestudent.person_id, prestudent.prestudent_id,
+ stg.studiengang_kz, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz,
+ ROW_NUMBER () OVER (
+ PARTITION BY prestudent.prestudent_id
+ ORDER BY sem.start DESC, status.datum DESC, status.insertamum DESC, status.ext_id DESC
+ ) AS reihenfolge_semester,
+ ROW_NUMBER () OVER (
+ PARTITION BY prestudent.prestudent_id
+ ORDER BY status.datum DESC, status.insertamum DESC, status.ext_id DESC
+ ) AS reihenfolge_datum
+ FROM
+ public.tbl_student student
+ JOIN public.tbl_benutzer benutzer on(student.student_uid = benutzer.uid)
+ JOIN public.tbl_prestudent prestudent USING(prestudent_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_studiensemester sem USING(studiensemester_kurzbz)
+ JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
+ WHERE
+ benutzer.aktiv=true
+ AND status.status_kurzbz='Student'
+ ) reihenfolge
+ WHERE reihenfolge_semester <> reihenfolge_datum";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/FalscheAnzahlAbschlusspruefungen.php b/application/libraries/issues/plausichecks/FalscheAnzahlAbschlusspruefungen.php
index 68b67ec29..1021fe85a 100644
--- a/application/libraries/issues/plausichecks/FalscheAnzahlAbschlusspruefungen.php
+++ b/application/libraries/issues/plausichecks/FalscheAnzahlAbschlusspruefungen.php
@@ -21,7 +21,7 @@ class FalscheAnzahlAbschlusspruefungen extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getFalscheAnzahlAbschlusspruefungen(
+ $prestudentRes = $this->getFalscheAnzahlAbschlusspruefungen(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -49,4 +49,77 @@ class FalscheAnzahlAbschlusspruefungen extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Students with finished studies should have exactly one final exam.
+ * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getFalscheAnzahlAbschlusspruefungen(
+ $studiensemester_kurzbz = null,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array();
+
+ $qry = "
+ SELECT * FROM (
+ SELECT
+ DISTINCT ON(pre.prestudent_id) pre.person_id, pre.prestudent_id, student_uid, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz,
+ (
+ SELECT COUNT(*)
+ FROM lehre.tbl_abschlusspruefung
+ WHERE student_uid = stud.student_uid
+ AND abschlussbeurteilung_kurzbz != 'nicht'
+ AND abschlussbeurteilung_kurzbz IS NOT NULL
+ ) AS anzahl_abschlusspruefungen
+ FROM
+ public.tbl_prestudent pre
+ JOIN public.tbl_student stud USING(prestudent_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
+ WHERE
+ status_kurzbz = 'Absolvent'
+ AND pre.bismelden
+ AND stg.melderelevant
+ AND NOT EXISTS ( /* exclude gs */
+ SELECT 1
+ FROM bis.tbl_mobilitaet
+ WHERE prestudent_id = pre.prestudent_id
+ AND studiensemester_kurzbz = status.studiensemester_kurzbz
+ )";
+
+ if (isset($studiensemester_kurzbz))
+ {
+ $qry .= " AND status.studiensemester_kurzbz = ?";
+ $params[] = $studiensemester_kurzbz;
+ }
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND pre.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ $qry .= ") studenten
+ WHERE anzahl_abschlusspruefungen != 1";
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/FalscheAnzahlHeimatadressen.php b/application/libraries/issues/plausichecks/FalscheAnzahlHeimatadressen.php
index f3189eaa5..b3551904e 100644
--- a/application/libraries/issues/plausichecks/FalscheAnzahlHeimatadressen.php
+++ b/application/libraries/issues/plausichecks/FalscheAnzahlHeimatadressen.php
@@ -21,7 +21,7 @@ class FalscheAnzahlHeimatadressen extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $personRes = $this->_ci->plausichecklib->getFalscheAnzahlHeimatadressen(
+ $personRes = $this->getFalscheAnzahlHeimatadressen(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -47,4 +47,67 @@ class FalscheAnzahlHeimatadressen extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Students should have exactly one home address.
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param person_id int if check is to be executed only for one person
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getFalscheAnzahlHeimatadressen(
+ $studiensemester_kurzbz = null,
+ $studiengang_kz = null,
+ $person_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array();
+
+ $qry = "
+ SELECT
+ DISTINCT person_id
+ FROM
+ (
+ SELECT person_id, COUNT(adresse_id) AS anzahl_adressen
+ FROM public.tbl_adresse addr
+ WHERE heimatadresse IS TRUE
+ GROUP BY person_id
+ ) adressen
+ JOIN public.tbl_person USING(person_id)
+ JOIN public.tbl_prestudent pre USING(person_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_student USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
+ WHERE
+ anzahl_adressen != 1
+ AND stg.melderelevant
+ AND pre.bismelden";
+
+ if (isset($studiensemester_kurzbz))
+ {
+ $qry .= " AND status.studiensemester_kurzbz = ?";
+ $params[] = $studiensemester_kurzbz;
+ }
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($person_id))
+ {
+ $qry .= " AND person_id = ?";
+ $params[] = $person_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/FalscheAnzahlZustelladressen.php b/application/libraries/issues/plausichecks/FalscheAnzahlZustelladressen.php
index 1fb974aa1..9d72b0236 100644
--- a/application/libraries/issues/plausichecks/FalscheAnzahlZustelladressen.php
+++ b/application/libraries/issues/plausichecks/FalscheAnzahlZustelladressen.php
@@ -21,7 +21,7 @@ class FalscheAnzahlZustelladressen extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $personRes = $this->_ci->plausichecklib->getFalscheAnzahlZustelladressen(
+ $personRes = $this->getFalscheAnzahlZustelladressen(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -47,4 +47,67 @@ class FalscheAnzahlZustelladressen extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Students should have exactly one delivery address.
+ * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param person_id int if check is to be executed only for one person
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getFalscheAnzahlZustelladressen(
+ $studiensemester_kurzbz = null,
+ $studiengang_kz = null,
+ $person_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array();
+
+ $qry = "
+ SELECT
+ DISTINCT person_id
+ FROM
+ (
+ SELECT person_id, COUNT(adresse_id) AS anzahl_adressen
+ FROM public.tbl_adresse addr
+ WHERE zustelladresse IS TRUE
+ GROUP BY person_id
+ ) adressen
+ JOIN public.tbl_person USING(person_id)
+ JOIN public.tbl_prestudent pre USING(person_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_student USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
+ WHERE
+ anzahl_adressen != 1
+ AND stg.melderelevant
+ AND pre.bismelden";
+
+ if (isset($studiensemester_kurzbz))
+ {
+ $qry .= " AND status.studiensemester_kurzbz = ?";
+ $params[] = $studiensemester_kurzbz;
+ }
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($person_id))
+ {
+ $qry .= " AND person_id = ?";
+ $params[] = $person_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/GbDatumWeitZurueck.php b/application/libraries/issues/plausichecks/GbDatumWeitZurueck.php
index 5b7326986..a9e9f817a 100644
--- a/application/libraries/issues/plausichecks/GbDatumWeitZurueck.php
+++ b/application/libraries/issues/plausichecks/GbDatumWeitZurueck.php
@@ -21,7 +21,7 @@ class GbDatumWeitZurueck extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $personRes = $this->_ci->plausichecklib->getGbDatumWeitZurueck($studiensemester_kurzbz, $studiengang_kz, null, $exkludierte_studiengang_kz);
+ $personRes = $this->getGbDatumWeitZurueck($studiensemester_kurzbz, $studiengang_kz, null, $exkludierte_studiengang_kz);
if (isError($personRes)) return $personRes;
@@ -42,4 +42,63 @@ class GbDatumWeitZurueck extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Birthdate is too long ago.
+ * @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param person_id int if check is to be executed only for one person
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getGbDatumWeitZurueck(
+ $studiensemester_kurzbz = null,
+ $studiengang_kz = null,
+ $person_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array();
+
+ $qry = "
+ SELECT
+ pers.person_id
+ FROM
+ public.tbl_person pers
+ WHERE
+ pers.gebdatum < '1920-01-01'
+ AND EXISTS (
+ SELECT 1
+ FROM public.tbl_prestudent
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_studiengang stg USING(studiengang_kz)
+ WHERE person_id = pers.person_id";
+
+ if (isset($studiensemester_kurzbz))
+ {
+ $qry .= " AND status.studiensemester_kurzbz = ?";
+ $params[] = $studiensemester_kurzbz;
+ }
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ $qry .= ")";
+
+ if (isset($person_id))
+ {
+ $qry .= " AND pers.person_id = ?";
+ $params[] = $person_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/InaktiverStudentAktiverStatus.php b/application/libraries/issues/plausichecks/InaktiverStudentAktiverStatus.php
index 559d31263..dead2b1e7 100644
--- a/application/libraries/issues/plausichecks/InaktiverStudentAktiverStatus.php
+++ b/application/libraries/issues/plausichecks/InaktiverStudentAktiverStatus.php
@@ -21,7 +21,7 @@ class InaktiverStudentAktiverStatus extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getInaktiverStudentAktiverStatus(
+ $prestudentRes = $this->getInaktiverStudentAktiverStatus(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -52,4 +52,62 @@ class InaktiverStudentAktiverStatus extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Students with active status should have an active Benutzer.
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getInaktiverStudentAktiverStatus(
+ $studiensemester_kurzbz,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $aktStudiensemesterRes = $this->_ci->StudiensemesterModel->getAkt();
+
+ if (isError($aktStudiensemesterRes)) return $aktStudiensemesterRes;
+
+ $studiensemester_kurzbz = hasData($aktStudiensemesterRes) ? getData($aktStudiensemesterRes)[0]->studiensemester_kurzbz : '';
+
+ $params = array($studiensemester_kurzbz);
+
+ $qry = "
+ SELECT
+ DISTINCT(student.student_uid), prestudent.person_id, prestudent.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_benutzer benutzer
+ JOIN public.tbl_student student on(benutzer.uid = student.student_uid)
+ JOIN public.tbl_prestudent prestudent USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
+ WHERE
+ benutzer.aktiv=false
+ AND EXISTS (SELECT 1 FROM public.tbl_prestudentstatus WHERE prestudent_id = prestudent.prestudent_id AND studiensemester_kurzbz = ?)
+ AND get_rolle_prestudent(prestudent_id, NULL) IN ('Student', 'Diplomand', 'Unterbrecher', 'Praktikant')
+ AND stg.melderelevant
+ AND prestudent.bismelden";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND prestudent.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/IncomingHeimatNationOesterreich.php b/application/libraries/issues/plausichecks/IncomingHeimatNationOesterreich.php
index 113416486..5276164dc 100644
--- a/application/libraries/issues/plausichecks/IncomingHeimatNationOesterreich.php
+++ b/application/libraries/issues/plausichecks/IncomingHeimatNationOesterreich.php
@@ -21,7 +21,7 @@ class IncomingHeimatNationOesterreich extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $personRes = $this->_ci->plausichecklib->getIncomingHeimatNationOesterreich(
+ $personRes = $this->getIncomingHeimatNationOesterreich(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -47,4 +47,58 @@ class IncomingHeimatNationOesterreich extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Incoming shouldn't have austrian home address.
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param person_id int if check is to be executed only for one person
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getIncomingHeimatNationOesterreich(
+ $studiensemester_kurzbz,
+ $studiengang_kz = null,
+ $person_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array($studiensemester_kurzbz);
+
+ $qry = "
+ SELECT
+ DISTINCT pers.person_id, status.studiensemester_kurzbz
+ FROM
+ public.tbl_prestudent pre
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_person pers USING(person_id)
+ JOIN public.tbl_adresse addr USING(person_id)
+ JOIN public.tbl_studiengang stg USING(studiengang_kz)
+ WHERE
+ status.status_kurzbz = 'Incoming'
+ AND addr.nation = 'A'
+ AND addr.heimatadresse
+ AND status.studiensemester_kurzbz = ?
+ AND stg.melderelevant
+ AND pre.bismelden";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($person_id))
+ {
+ $qry .= " AND pers.person_id = ?";
+ $params[] = $person_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/IncomingOhneIoDatensatz.php b/application/libraries/issues/plausichecks/IncomingOhneIoDatensatz.php
index 6eaa9db3f..e08280f83 100644
--- a/application/libraries/issues/plausichecks/IncomingOhneIoDatensatz.php
+++ b/application/libraries/issues/plausichecks/IncomingOhneIoDatensatz.php
@@ -20,7 +20,7 @@ class IncomingOhneIoDatensatz extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getIncomingOhneIoDatensatz($studiengang_kz, null, $exkludierte_studiengang_kz);
+ $prestudentRes = $this->getIncomingOhneIoDatensatz($studiengang_kz, null, $exkludierte_studiengang_kz);
if (isError($prestudentRes)) return $prestudentRes;
@@ -43,4 +43,54 @@ class IncomingOhneIoDatensatz extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Incoming should have IN/OUT data.
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getIncomingOhneIoDatensatz($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
+ {
+ $params = array();
+
+ $qry = "
+ SELECT
+ DISTINCT ON(student_uid, nachname, vorname)
+ tbl_person.person_id,
+ tbl_prestudent.prestudent_id,
+ stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_student
+ JOIN public.tbl_benutzer ON(student_uid=uid)
+ JOIN public.tbl_person USING(person_id)
+ JOIN public.tbl_prestudent USING(prestudent_id)
+ JOIN public.tbl_prestudentstatus ON(tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id)
+ JOIN public.tbl_studiengang stg ON(stg.studiengang_kz=tbl_student.studiengang_kz)
+ WHERE
+ bismelden=TRUE
+ AND status_kurzbz='Incoming' AND NOT EXISTS (SELECT 1 FROM bis.tbl_bisio WHERE student_uid=tbl_student.student_uid)
+ AND stg.melderelevant";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND tbl_prestudent.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/IncomingOrGsFoerderrelevant.php b/application/libraries/issues/plausichecks/IncomingOrGsFoerderrelevant.php
index 23002b71b..4d789f71a 100644
--- a/application/libraries/issues/plausichecks/IncomingOrGsFoerderrelevant.php
+++ b/application/libraries/issues/plausichecks/IncomingOrGsFoerderrelevant.php
@@ -21,7 +21,7 @@ class IncomingOrGsFoerderrelevant extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getIncomingOrGsFoerderrelevant(
+ $prestudentRes = $this->getIncomingOrGsFoerderrelevant(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -49,4 +49,77 @@ class IncomingOrGsFoerderrelevant extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Incoming or gemeinsame Studien students should not receive funding (not be förderrelevant).
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return object success or error
+ */
+ public function getIncomingOrGsFoerderrelevant(
+ $studiensemester_kurzbz = null,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array();
+
+ $qry = "
+ SELECT
+ DISTINCT ON(prestudent_id)
+ pers.person_id,
+ ps.prestudent_id,
+ stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_student stud
+ JOIN public.tbl_benutzer ON(student_uid=uid)
+ JOIN public.tbl_person pers USING(person_id)
+ JOIN public.tbl_prestudent ps USING(prestudent_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON(stg.studiengang_kz=stud.studiengang_kz)
+ WHERE
+ (
+ status.status_kurzbz = 'Incoming'
+ OR EXISTS (
+ SELECT 1
+ FROM
+ bis.tbl_mobilitaet
+ JOIN public.tbl_prestudent USING(prestudent_id)
+ WHERE
+ prestudent_id = ps.prestudent_id
+ AND gsstudientyp_kurzbz = 'Extern'
+ )
+ )
+ AND (ps.foerderrelevant <> FALSE OR ps.foerderrelevant IS NULL)
+ AND bismelden=TRUE
+ AND stg.melderelevant";
+
+ if (isset($studiensemester_kurzbz))
+ {
+ $qry .= " AND status.studiensemester_kurzbz = ?";
+ $params[] = $studiensemester_kurzbz;
+ }
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND ps.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/InskriptionVorLetzerBismeldung.php b/application/libraries/issues/plausichecks/InskriptionVorLetzerBismeldung.php
index d977b4124..871b3b3d4 100644
--- a/application/libraries/issues/plausichecks/InskriptionVorLetzerBismeldung.php
+++ b/application/libraries/issues/plausichecks/InskriptionVorLetzerBismeldung.php
@@ -21,7 +21,7 @@ class InskriptionVorLetzerBismeldung extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getInskriptionVorLetzerBismeldung(
+ $prestudentRes = $this->getInskriptionVorLetzerBismeldung(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -56,4 +56,93 @@ class InskriptionVorLetzerBismeldung extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Students of a semester shouldn't start studies before the date of Bismeldung.
+ * e.g. If student studies in WS2022 datum of status shouldn't be before 15.4.2020
+ * e.g. If student studies in SS2022 datum of status shouldn't be before 15.11.2022
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getInskriptionVorLetzerBismeldung(
+ $studiensemester_kurzbz,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ // get Bismeldedatum
+ $datumBis = $this->_getBisdateFromSemester($studiensemester_kurzbz);
+
+ $params = array($datumBis, $studiensemester_kurzbz, $datumBis);
+
+ // get active students
+ $qry = "
+ SELECT
+ DISTINCT ON (student.student_uid) ? AS datum_bismeldung,
+ prestudent.person_id, prestudent.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
+ FROM
+ public.tbl_benutzer benutzer
+ JOIN public.tbl_student student on(benutzer.uid = student.student_uid)
+ JOIN public.tbl_prestudent prestudent USING(prestudent_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
+ WHERE
+ benutzer.aktiv=true
+ AND status.studiensemester_kurzbz = ?
+ /* inscription date before date of first student status */
+ AND (
+ SELECT datum
+ FROM public.tbl_prestudentstatus
+ WHERE prestudent_id = prestudent.prestudent_id
+ AND studiensemester_kurzbz = status.studiensemester_kurzbz
+ AND status_kurzbz = 'Student'
+ ORDER BY datum, insertamum, ext_id
+ LIMIT 1
+ ) < ?
+ AND stg.melderelevant
+ AND prestudent.bismelden";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND prestudent.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
+
+ /**
+ * Gets Bismeldedate from Studiensemester.
+ * @param studiensemester_kurzbz string
+ */
+ private function _getBisdateFromSemester($studiensemester_kurzbz)
+ {
+ $semesterYear = substr($studiensemester_kurzbz, 2, 6);
+ $semesterType = substr($studiensemester_kurzbz, 0, 2);
+
+ if ($semesterType == 'SS')
+ {
+ return date_format(date_create(($semesterYear - 1)."-11-15"), 'Y-m-d');
+ }
+
+ if ($semesterType == 'WS')
+ {
+ return date_format(date_create($semesterYear."-04-15"), 'Y-m-d');
+ }
+ }
}
diff --git a/application/libraries/issues/plausichecks/NationNichtOesterreichAberGemeinde.php b/application/libraries/issues/plausichecks/NationNichtOesterreichAberGemeinde.php
index 53bd59826..c04cd664c 100644
--- a/application/libraries/issues/plausichecks/NationNichtOesterreichAberGemeinde.php
+++ b/application/libraries/issues/plausichecks/NationNichtOesterreichAberGemeinde.php
@@ -20,7 +20,7 @@ class NationNichtOesterreichAberGemeinde extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $personRes = $this->_ci->plausichecklib->getNationNichtOesterreichAberGemeinde(
+ $personRes = $this->getNationNichtOesterreichAberGemeinde(
$studiengang_kz,
null,
$exkludierte_studiengang_kz
@@ -46,4 +46,49 @@ class NationNichtOesterreichAberGemeinde extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Nation is not Austria, but address has austrian Gemeinde.
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param person_id int if check is to be executed only for one person
+ * @return success with prestudents or error
+ */
+ public function getNationNichtOesterreichAberGemeinde($studiengang_kz = null, $person_id = null, $exkludierte_studiengang_kz = null)
+ {
+ $params = array();
+
+ $qry = "SELECT DISTINCT tbl_person.person_id, adr.gemeinde, adr.adresse_id
+ FROM
+ public.tbl_adresse adr
+ JOIN public.tbl_prestudent USING(person_id)
+ JOIN public.tbl_person USING(person_id)
+ JOIN public.tbl_student USING(prestudent_id)
+ JOIN public.tbl_benutzer ON(uid=student_uid)
+ JOIN public.tbl_studiengang stg ON tbl_prestudent.studiengang_kz = stg.studiengang_kz
+ WHERE
+ adr.nation!='A'
+ AND tbl_benutzer.aktiv
+ AND gemeinde NOT IN ('Münster')
+ AND EXISTS(SELECT 1 FROM bis.tbl_gemeinde WHERE name = adr.gemeinde)";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($person_id))
+ {
+ $qry .= " AND tbl_person.person_id = ?";
+ $params[] = $person_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/OrgformStgUngleichOrgformPrestudent.php b/application/libraries/issues/plausichecks/OrgformStgUngleichOrgformPrestudent.php
index d9515a777..316e81072 100644
--- a/application/libraries/issues/plausichecks/OrgformStgUngleichOrgformPrestudent.php
+++ b/application/libraries/issues/plausichecks/OrgformStgUngleichOrgformPrestudent.php
@@ -21,7 +21,7 @@ class OrgformStgUngleichOrgformPrestudent extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getOrgformStgUngleichOrgformPrestudent(
+ $prestudentRes = $this->getOrgformStgUngleichOrgformPrestudent(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -57,4 +57,74 @@ class OrgformStgUngleichOrgformPrestudent extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Orgform of a Studiengang in Studienplan should be the same as orgform of student.
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getOrgformStgUngleichOrgformPrestudent(
+ $studiensemester_kurzbz,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array($studiensemester_kurzbz);
+
+ $qry = "
+ SELECT
+ prestudent.person_id, prestudent.prestudent_id, status.studiensemester_kurzbz,
+ studiengang.orgform_kurzbz AS stg_orgform, status.orgform_kurzbz AS student_orgform,
+ prestudent.studiengang_kz AS student_studiengang, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_studiengang studiengang
+ JOIN public.tbl_student student USING(studiengang_kz)
+ JOIN public.tbl_prestudent prestudent USING(prestudent_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_benutzer benutzer on(benutzer.uid = student.student_uid)
+ JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
+ LEFT JOIN lehre.tbl_studienplan stpl USING (studienplan_id)
+ WHERE
+ benutzer.aktiv = true
+ AND status.status_kurzbz IN ('Student', 'Unterbrecher', 'Abbrecher', 'Diplomand', 'Absolvent')
+ AND studiengang.studiengang_kz < 10000
+ AND status.studiensemester_kurzbz = ?
+ AND NOT (status.orgform_kurzbz IS NULL AND studiengang.mischform = FALSE)
+ AND NOT EXISTS(
+ SELECT 1
+ FROM
+ lehre.tbl_studienplan
+ JOIN
+ lehre.tbl_studienordnung USING(studienordnung_id)
+ WHERE
+ tbl_studienplan.studienplan_id = stpl.studienplan_id
+ AND tbl_studienordnung.studiengang_kz = prestudent.studiengang_kz
+ AND tbl_studienplan.orgform_kurzbz = status.orgform_kurzbz)";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND studiengang.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND prestudent.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ $qry .= "
+ ORDER BY student_uid";
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/PlausiChecker.php b/application/libraries/issues/plausichecks/PlausiChecker.php
index 0d8da4007..086a44cc4 100644
--- a/application/libraries/issues/plausichecks/PlausiChecker.php
+++ b/application/libraries/issues/plausichecks/PlausiChecker.php
@@ -7,6 +7,7 @@ abstract class PlausiChecker
{
protected $_ci; // code igniter instance
protected $_config; // configuration parameters for this plausicheck
+ protected $_db; // database for queries
public function __construct($configurationParams = null)
{
@@ -15,8 +16,8 @@ abstract class PlausiChecker
// set configuration
$this->_config = $configurationParams;
- // load libraries
- $this->_ci->load->library('issues/PlausicheckLib'); // load plausicheck library
+ // get database for queries
+ $this->_db = new DB_Model();
}
/**
diff --git a/application/libraries/issues/plausichecks/PrestudentMischformOhneOrgform.php b/application/libraries/issues/plausichecks/PrestudentMischformOhneOrgform.php
index e68d840d9..a4c3e2a4b 100644
--- a/application/libraries/issues/plausichecks/PrestudentMischformOhneOrgform.php
+++ b/application/libraries/issues/plausichecks/PrestudentMischformOhneOrgform.php
@@ -21,7 +21,7 @@ class PrestudentMischformOhneOrgform extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getPrestudentMischformOhneOrgform(
+ $prestudentRes = $this->getPrestudentMischformOhneOrgform(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -55,4 +55,55 @@ class PrestudentMischformOhneOrgform extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Students in "mixed" Studiengang should have Orgform.
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getPrestudentMischformOhneOrgform(
+ $studiensemester_kurzbz,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array($studiensemester_kurzbz);
+
+ $qry = "
+ SELECT
+ pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
+ FROM
+ public.tbl_prestudent pre
+ JOIN public.tbl_person USING(person_id)
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_studiengang stg USING(studiengang_kz)
+ WHERE
+ status.status_kurzbz IN ('Bewerber', 'Student')
+ AND stg.mischform
+ AND (status.orgform_kurzbz='' OR status.orgform_kurzbz IS NULL)
+ AND status.studiensemester_kurzbz=?";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND pre.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/StgPrestudentUngleichStgStudent.php b/application/libraries/issues/plausichecks/StgPrestudentUngleichStgStudent.php
index 61737cc4d..94bea2f35 100644
--- a/application/libraries/issues/plausichecks/StgPrestudentUngleichStgStudent.php
+++ b/application/libraries/issues/plausichecks/StgPrestudentUngleichStgStudent.php
@@ -20,7 +20,7 @@ class StgPrestudentUngleichStgStudent extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getStgPrestudentUngleichStgStudent($studiengang_kz, null, $exkludierte_studiengang_kz);
+ $prestudentRes = $this->getStgPrestudentUngleichStgStudent($studiengang_kz, null, $exkludierte_studiengang_kz);
if (isError($prestudentRes)) return $prestudentRes;
@@ -43,4 +43,48 @@ class StgPrestudentUngleichStgStudent extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Studiengang should be the same for prestudent and student.
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getStgPrestudentUngleichStgStudent($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
+ {
+ $params = array();
+
+ $qry = "
+ SELECT
+ pre.person_id, pre.prestudent_id, stg.oe_kurzbz prestudent_stg_oe_kurzbz, student_stg.oe_kurzbz student_stg_oe_kurzbz
+ FROM
+ public.tbl_prestudent pre
+ JOIN public.tbl_student stud USING(prestudent_id)
+ JOIN public.tbl_person pers USING(person_id)
+ JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
+ JOIN public.tbl_studiengang student_stg ON stud.studiengang_kz = student_stg.studiengang_kz
+ WHERE
+ stud.studiengang_kz != pre.studiengang_kz";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND pre.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/StgPrestudentUngleichStgStudienplan.php b/application/libraries/issues/plausichecks/StgPrestudentUngleichStgStudienplan.php
index 0c9ce9300..fc0f52f23 100644
--- a/application/libraries/issues/plausichecks/StgPrestudentUngleichStgStudienplan.php
+++ b/application/libraries/issues/plausichecks/StgPrestudentUngleichStgStudienplan.php
@@ -20,7 +20,7 @@ class StgPrestudentUngleichStgStudienplan extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getStgPrestudentUngleichStgStudienplan($studiengang_kz, null, null, $exkludierte_studiengang_kz);
+ $prestudentRes = $this->getStgPrestudentUngleichStgStudienplan($studiengang_kz, null, null, $exkludierte_studiengang_kz);
if (isError($prestudentRes)) return $prestudentRes;
@@ -43,4 +43,62 @@ class StgPrestudentUngleichStgStudienplan extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Studiengang should be the same for prestudent and studienplan.
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param studienordnung_id int if check is to be executed only for a certain studienordnung_id
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getStgPrestudentUngleichStgStudienplan(
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $studienordnung_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array();
+
+ $qry = "
+ SELECT
+ DISTINCT ON (ps.prestudent_id) ps.person_id, ps.prestudent_id, stordnung.studienordnung_id,
+ stplan.bezeichnung AS studienplan, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_prestudent ps
+ JOIN public.tbl_prestudentstatus USING(prestudent_id)
+ JOIN lehre.tbl_studienplan stplan USING(studienplan_id)
+ JOIN lehre.tbl_studienordnung stordnung USING(studienordnung_id)
+ JOIN public.tbl_person USING(person_id)
+ JOIN public.tbl_studiengang stg ON ps.studiengang_kz = stg.studiengang_kz
+ WHERE
+ ps.studiengang_kz<>stordnung.studiengang_kz
+ AND stg.melderelevant";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND ps.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($studienordnung_id))
+ {
+ $qry .= " AND stordnung.studienordnung_id = ?";
+ $params[] = $studienordnung_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/StudentstatusNachAbbrecher.php b/application/libraries/issues/plausichecks/StudentstatusNachAbbrecher.php
index 47ca1fa2a..87bb51d7e 100644
--- a/application/libraries/issues/plausichecks/StudentstatusNachAbbrecher.php
+++ b/application/libraries/issues/plausichecks/StudentstatusNachAbbrecher.php
@@ -20,7 +20,7 @@ class StudentstatusNachAbbrecher extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getStudentstatusNachAbbrecher($studiengang_kz, null, $exkludierte_studiengang_kz);
+ $prestudentRes = $this->getStudentstatusNachAbbrecher($studiengang_kz, null, $exkludierte_studiengang_kz);
if (isError($prestudentRes)) return $prestudentRes;
@@ -43,4 +43,48 @@ class StudentstatusNachAbbrecher extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * There shouldn't be any status after Abbrecher status.
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getStudentstatusNachAbbrecher($studiengang_kz = null, $prestudent_id = null, $exkludierte_studiengang_kz = null)
+ {
+ $params = array();
+
+ $qry = "
+ SELECT
+ prestudent.person_id, prestudent.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_student student
+ JOIN public.tbl_prestudent prestudent USING(prestudent_id)
+ JOIN public.tbl_prestudentstatus prestatus USING(prestudent_id)
+ JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
+ WHERE
+ prestatus.status_kurzbz = 'Abbrecher'
+ AND get_rolle_prestudent(prestudent.prestudent_id, prestatus.studiensemester_kurzbz) <> 'Abbrecher'";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND prestudent.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/plausichecks/StudienplanUngueltig.php b/application/libraries/issues/plausichecks/StudienplanUngueltig.php
index 22924abd8..9a306278e 100644
--- a/application/libraries/issues/plausichecks/StudienplanUngueltig.php
+++ b/application/libraries/issues/plausichecks/StudienplanUngueltig.php
@@ -21,7 +21,7 @@ class StudienplanUngueltig extends PlausiChecker
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
- $prestudentRes = $this->_ci->plausichecklib->getStudienplanUngueltig(
+ $prestudentRes = $this->getStudienplanUngueltig(
$studiensemester_kurzbz,
$studiengang_kz,
null,
@@ -56,4 +56,71 @@ class StudienplanUngueltig extends PlausiChecker
// return the results
return success($results);
}
+
+ /**
+ * Studienplan should be valid in current Ausbildungssemester of prestudent.
+ * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester
+ * @param studiengang_kz int if check is to be executed for certain Studiengang
+ * @param prestudent_id int if check is to be executed only for one prestudent
+ * @param exkludierte_studiengang_kz array if certain Studiengänge have to be excluded from check
+ * @return success with prestudents or error
+ */
+ public function getStudienplanUngueltig(
+ $studiensemester_kurzbz,
+ $studiengang_kz = null,
+ $prestudent_id = null,
+ $exkludierte_studiengang_kz = null
+ ) {
+ $params = array($studiensemester_kurzbz);
+
+ $qry = "
+ SELECT
+ DISTINCT pre.person_id, pre.prestudent_id,
+ tbl_studienplan.bezeichnung AS studienplan,
+ status.status_kurzbz,
+ status.studiensemester_kurzbz,
+ status.ausbildungssemester,
+ stg.oe_kurzbz AS prestudent_stg_oe_kurzbz
+ FROM
+ public.tbl_prestudent pre
+ JOIN public.tbl_prestudentstatus status USING(prestudent_id)
+ JOIN public.tbl_person USING(person_id)
+ JOIN lehre.tbl_studienplan USING(studienplan_id)
+ JOIN public.tbl_studiengang stg ON pre.studiengang_kz = stg.studiengang_kz
+ WHERE
+ status_kurzbz in('Student', 'Interessent','Bewerber','Aufgenommener')
+ AND NOT EXISTS (
+ SELECT
+ 1
+ FROM
+ lehre.tbl_studienplan_semester
+ WHERE
+ studienplan_id=status.studienplan_id
+ AND tbl_studienplan_semester.semester = status.ausbildungssemester
+ AND tbl_studienplan_semester.studiensemester_kurzbz = status.studiensemester_kurzbz
+ )
+ AND status.studiensemester_kurzbz=?
+ AND pre.bismelden
+ AND stg.melderelevant";
+
+ if (isset($studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz = ?";
+ $params[] = $studiengang_kz;
+ }
+
+ if (isset($prestudent_id))
+ {
+ $qry .= " AND tbl_prestudent.prestudent_id = ?";
+ $params[] = $prestudent_id;
+ }
+
+ if (isset($exkludierte_studiengang_kz) && !isEmptyArray($exkludierte_studiengang_kz))
+ {
+ $qry .= " AND stg.studiengang_kz NOT IN ?";
+ $params[] = $exkludierte_studiengang_kz;
+ }
+
+ return $this->_db->execReadOnlyQuery($qry, $params);
+ }
}
diff --git a/application/libraries/issues/resolvers/CORE_INOUT_0007.php b/application/libraries/issues/resolvers/CORE_INOUT_0007.php
index 2d9c7a3f4..31ca79ffb 100644
--- a/application/libraries/issues/resolvers/CORE_INOUT_0007.php
+++ b/application/libraries/issues/resolvers/CORE_INOUT_0007.php
@@ -17,10 +17,10 @@ class CORE_INOUT_0007 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/IncomingHeimatNationOesterreich');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getIncomingHeimatNationOesterreich($params['studiensemester_kurzbz'], null, $params['issue_person_id']);
+ $checkRes = $this->_ci->incomingheimatnationoesterreich->getIncomingHeimatNationOesterreich($params['studiensemester_kurzbz'], null, $params['issue_person_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_INOUT_0008.php b/application/libraries/issues/resolvers/CORE_INOUT_0008.php
index 30bbefdf1..4fa090c6a 100644
--- a/application/libraries/issues/resolvers/CORE_INOUT_0008.php
+++ b/application/libraries/issues/resolvers/CORE_INOUT_0008.php
@@ -14,10 +14,10 @@ class CORE_INOUT_0008 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/IncomingOhneIoDatensatz');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getIncomingOhneIoDatensatz(null, $params['prestudent_id']);
+ $checkRes = $this->_ci->incomingohneiodatensatz->getIncomingOhneIoDatensatz(null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_INOUT_0009.php b/application/libraries/issues/resolvers/CORE_INOUT_0009.php
index b56344042..c739d71c3 100644
--- a/application/libraries/issues/resolvers/CORE_INOUT_0009.php
+++ b/application/libraries/issues/resolvers/CORE_INOUT_0009.php
@@ -14,10 +14,10 @@ class CORE_INOUT_0009 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/IncomingOrGsFoerderrelevant');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getIncomingOrGsFoerderrelevant(null, null, $params['prestudent_id']);
+ $checkRes = $this->_ci->incomingorgsfoerderrelevant->getIncomingOrGsFoerderrelevant(null, null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_PERSON_0001.php b/application/libraries/issues/resolvers/CORE_PERSON_0001.php
index cf1560171..d0ac0d3ed 100644
--- a/application/libraries/issues/resolvers/CORE_PERSON_0001.php
+++ b/application/libraries/issues/resolvers/CORE_PERSON_0001.php
@@ -14,10 +14,10 @@ class CORE_PERSON_0001 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/GbDatumWeitZurueck');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getGbDatumWeitZurueck(null, null, $params['issue_person_id']);
+ $checkRes = $this->_ci->gbdatumweitzurueck->getGbDatumWeitZurueck(null, null, $params['issue_person_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_PERSON_0002.php b/application/libraries/issues/resolvers/CORE_PERSON_0002.php
index 969b2a5b0..608dcf0ce 100644
--- a/application/libraries/issues/resolvers/CORE_PERSON_0002.php
+++ b/application/libraries/issues/resolvers/CORE_PERSON_0002.php
@@ -14,10 +14,10 @@ class CORE_PERSON_0002 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/NationNichtOesterreichAberGemeinde');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getNationNichtOesterreichAberGemeinde(null, $params['issue_person_id']);
+ $checkRes = $this->_ci->nationnichtoesterreichabergemeinde->getNationNichtOesterreichAberGemeinde(null, $params['issue_person_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_PERSON_0003.php b/application/libraries/issues/resolvers/CORE_PERSON_0003.php
index 8f53d159c..23a81b660 100644
--- a/application/libraries/issues/resolvers/CORE_PERSON_0003.php
+++ b/application/libraries/issues/resolvers/CORE_PERSON_0003.php
@@ -14,10 +14,10 @@ class CORE_PERSON_0003 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/FalscheAnzahlHeimatadressen');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getFalscheAnzahlHeimatadressen(null, null, $params['issue_person_id']);
+ $checkRes = $this->_ci->falscheanzahlheimatadressen->getFalscheAnzahlHeimatadressen(null, null, $params['issue_person_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_PERSON_0004.php b/application/libraries/issues/resolvers/CORE_PERSON_0004.php
index 9ce9b7b8a..ae3a855ec 100644
--- a/application/libraries/issues/resolvers/CORE_PERSON_0004.php
+++ b/application/libraries/issues/resolvers/CORE_PERSON_0004.php
@@ -14,10 +14,10 @@ class CORE_PERSON_0004 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/FalscheAnzahlZustelladressen');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getFalscheAnzahlZustelladressen(null, null, $params['issue_person_id']);
+ $checkRes = $this->_ci->falscheanzahlzustelladressen->getFalscheAnzahlZustelladressen(null, null, $params['issue_person_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STG_0001.php b/application/libraries/issues/resolvers/CORE_STG_0001.php
index aee3fe0d2..09c34be74 100644
--- a/application/libraries/issues/resolvers/CORE_STG_0001.php
+++ b/application/libraries/issues/resolvers/CORE_STG_0001.php
@@ -14,10 +14,10 @@ class CORE_STG_0001 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/StgPrestudentUngleichStgStudent');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getStgPrestudentUngleichStgStudent(null, $params['prestudent_id']);
+ $checkRes = $this->_ci->stgprestudentungleichstgstudent->getStgPrestudentUngleichStgStudent(null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STG_0002.php b/application/libraries/issues/resolvers/CORE_STG_0002.php
index dd0e293d4..999958042 100644
--- a/application/libraries/issues/resolvers/CORE_STG_0002.php
+++ b/application/libraries/issues/resolvers/CORE_STG_0002.php
@@ -17,10 +17,10 @@ class CORE_STG_0002 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/OrgformStgUngleichOrgformPrestudent');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getOrgformStgUngleichOrgformPrestudent($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
+ $checkRes = $this->_ci->orgformstgungleichorgformprestudent->getOrgformStgUngleichOrgformPrestudent($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STG_0003.php b/application/libraries/issues/resolvers/CORE_STG_0003.php
index 9559cdfb5..22d6399be 100644
--- a/application/libraries/issues/resolvers/CORE_STG_0003.php
+++ b/application/libraries/issues/resolvers/CORE_STG_0003.php
@@ -17,10 +17,10 @@ class CORE_STG_0003 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/PrestudentMischformOhneOrgform');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getPrestudentMischformOhneOrgform($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
+ $checkRes = $this->_ci->prestudentmischformohneorgform->getPrestudentMischformOhneOrgform($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STG_0004.php b/application/libraries/issues/resolvers/CORE_STG_0004.php
index 6ecc80863..2eedfc7fe 100644
--- a/application/libraries/issues/resolvers/CORE_STG_0004.php
+++ b/application/libraries/issues/resolvers/CORE_STG_0004.php
@@ -17,10 +17,10 @@ class CORE_STG_0004 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/StgPrestudentUngleichStgStudienplan');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getStgPrestudentUngleichStgStudienplan(null, $params['prestudent_id'], $params['studienordnung_id']);
+ $checkRes = $this->_ci->stgprestudentungleichstgstudienplan->getStgPrestudentUngleichStgStudienplan(null, $params['prestudent_id'], $params['studienordnung_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0001.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0001.php
index 1f9dea34d..c74cd38fb 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0001.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0001.php
@@ -14,10 +14,10 @@ class CORE_STUDENTSTATUS_0001 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/AbbrecherAktiv');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getAbbrecherAktiv(null, $params['prestudent_id']);
+ $checkRes = $this->_ci->abbrecheraktiv->getAbbrecherAktiv(null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0002.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0002.php
index 95da215c1..36827684c 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0002.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0002.php
@@ -14,10 +14,10 @@ class CORE_STUDENTSTATUS_0002 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/StudentstatusNachAbbrecher');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getStudentstatusNachAbbrecher(null, $params['prestudent_id']);
+ $checkRes = $this->_ci->studentstatusnachabbrecher->getStudentstatusNachAbbrecher(null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0003.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0003.php
index 12e7a8da6..f3b150d8d 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0003.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0003.php
@@ -17,10 +17,14 @@ class CORE_STUDENTSTATUS_0003 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/AusbildungssemPrestudentUngleichAusbildungssemStatus');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getAusbildungssemPrestudentUngleichAusbildungssemStatus($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
+ $checkRes = $this->_ci->ausbildungssemprestudentungleichausbildungssemstatus->getAusbildungssemPrestudentUngleichAusbildungssemStatus(
+ $params['studiensemester_kurzbz'],
+ null,
+ $params['prestudent_id']
+ );
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0004.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0004.php
index 5cd8b7027..cbce2b01e 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0004.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0004.php
@@ -17,10 +17,14 @@ class CORE_STUDENTSTATUS_0004 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/InaktiverStudentAktiverStatus');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getInaktiverStudentAktiverStatus($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
+ $checkRes = $this->_ci->inaktiverstudentaktiverstatus->getInaktiverStudentAktiverStatus(
+ $params['studiensemester_kurzbz'],
+ null,
+ $params['prestudent_id']
+ );
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0005.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0005.php
index 420021289..f5e265194 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0005.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0005.php
@@ -17,10 +17,10 @@ class CORE_STUDENTSTATUS_0005 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/InskriptionVorLetzerBismeldung');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getInskriptionVorLetzerBismeldung($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
+ $checkRes = $this->_ci->inskriptionvorletzerbismeldung->getInskriptionVorLetzerBismeldung($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0006.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0006.php
index 64e28ddc8..94658ec9c 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0006.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0006.php
@@ -14,10 +14,10 @@ class CORE_STUDENTSTATUS_0006 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/DatumStudiensemesterFalscheReihenfolge');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getDatumStudiensemesterFalscheReihenfolge(null, $params['prestudent_id']);
+ $checkRes = $this->_ci->datumstudiensemesterfalschereihenfolge->getDatumStudiensemesterFalscheReihenfolge(null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0007.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0007.php
index 68523b53b..3a2575e53 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0007.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0007.php
@@ -14,10 +14,10 @@ class CORE_STUDENTSTATUS_0007 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/AktiverStudentOhneStatus');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getAktiverStudentOhneStatus(null, $params['prestudent_id']);
+ $checkRes = $this->_ci->aktiverstudentohnestatus->getAktiverStudentOhneStatus(null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0008.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0008.php
index 940cb9b4c..53bfd72a6 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0008.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0008.php
@@ -17,10 +17,10 @@ class CORE_STUDENTSTATUS_0008 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/StudienplanUngueltig');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getStudienplanUngueltig($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
+ $checkRes = $this->_ci->studienplanungueltig->getStudienplanUngueltig($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0009.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0009.php
index c55e4a9cc..816b7e933 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0009.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0009.php
@@ -14,10 +14,10 @@ class CORE_STUDENTSTATUS_0009 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/FalscheAnzahlAbschlusspruefungen');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getFalscheAnzahlAbschlusspruefungen(null, null, $params['prestudent_id']);
+ $checkRes = $this->_ci->falscheanzahlabschlusspruefungen->getFalscheAnzahlAbschlusspruefungen(null, null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0010.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0010.php
index 8da8e9c1d..b31fb872a 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0010.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0010.php
@@ -14,10 +14,10 @@ class CORE_STUDENTSTATUS_0010 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/DatumAbschlusspruefungFehlt');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getDatumAbschlusspruefungFehlt(null, null, $params['abschlusspruefung_id']);
+ $checkRes = $this->_ci->datumabschlusspruefungfehlt->getDatumAbschlusspruefungFehlt(null, null, $params['abschlusspruefung_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0011.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0011.php
index 6568d0b3e..9dff0181e 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0011.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0011.php
@@ -14,10 +14,10 @@ class CORE_STUDENTSTATUS_0011 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/DatumSponsionFehlt');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getDatumSponsionFehlt(null, null, $params['abschlusspruefung_id']);
+ $checkRes = $this->_ci->datumsponsionfehlt->getDatumSponsionFehlt(null, null, $params['abschlusspruefung_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0012.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0012.php
index d331ef6a2..7fe5dbde4 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0012.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0012.php
@@ -17,10 +17,14 @@ class CORE_STUDENTSTATUS_0012 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/BewerberNichtZumRtAngetreten');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getBewerberNichtZumRtAngetreten($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
+ $checkRes = $this->_ci->bewerbernichtzumrtangetreten->getBewerberNichtZumRtAngetreten(
+ $params['studiensemester_kurzbz'],
+ null,
+ $params['prestudent_id']
+ );
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0013.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0013.php
index e57b0aea0..86e8b75b1 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0013.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0013.php
@@ -17,10 +17,10 @@ class CORE_STUDENTSTATUS_0013 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/AktSemesterNull');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getAktSemesterNull($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
+ $checkRes = $this->_ci->aktsemesternull->getAktSemesterNull($params['studiensemester_kurzbz'], null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0014.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0014.php
index b58736f66..4b542cf0a 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0014.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0014.php
@@ -14,10 +14,10 @@ class CORE_STUDENTSTATUS_0014 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/AbschlussstatusFehlt');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getAbschlussstatusFehlt(null, null, $params['prestudent_id']);
+ $checkRes = $this->_ci->abschlussstatusfehlt->getAbschlussstatusFehlt(null, null, $params['prestudent_id']);
if (isError($checkRes)) return $checkRes;
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0015.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0015.php
index aafee1124..37e42ec0a 100644
--- a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0015.php
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0015.php
@@ -17,10 +17,10 @@ class CORE_STUDENTSTATUS_0015 implements IIssueResolvedChecker
$this->_ci =& get_instance(); // get code igniter instance
- $this->_ci->load->library('issues/PlausicheckLib');
+ $this->_ci->load->library('issues/plausichecks/AktiverStudentstatusOhneKontobuchung');
// check if issue persists
- $checkRes = $this->_ci->plausichecklib->getAktiverStudentstatusOhneKontobuchung(
+ $checkRes = $this->_ci->aktiverstudentstatusohnekontobuchung->getAktiverStudentstatusOhneKontobuchung(
$params['studiensemester_kurzbz'],
null,
$params['prestudent_id']
diff --git a/application/views/system/issues/issuesKonfiguration.php b/application/views/system/issues/issuesKonfiguration.php
index 8b07157d2..dbd62a26a 100644
--- a/application/views/system/issues/issuesKonfiguration.php
+++ b/application/views/system/issues/issuesKonfiguration.php
@@ -82,6 +82,9 @@ $this->load->view(
+
diff --git a/public/js/issues/issuesKonfiguration.js b/public/js/issues/issuesKonfiguration.js
index 9e0ebaf4d..f2e7aa5c3 100644
--- a/public/js/issues/issuesKonfiguration.js
+++ b/public/js/issues/issuesKonfiguration.js
@@ -144,6 +144,34 @@ var IssuesKonfiguration = {
}
);
},
+ deleteKonfigurationsWerte: function(konfigurationstyp_kurzbz, fehlercode, konfigurationsWert)
+ {
+ FHC_AjaxClient.ajaxCallPost(
+ 'system/issues/IssuesKonfiguration/deleteKonfigurationsWerte',
+ {
+ konfigurationstyp_kurzbz: konfigurationstyp_kurzbz,
+ fehlercode: fehlercode,
+ konfigurationsWert: konfigurationsWert
+ },
+ {
+ successCallback: function(data, textStatus, jqXHR) {
+ if (FHC_AjaxClient.hasData(data))
+ {
+ FHC_DialogLib.alertSuccess(FHC_PhrasesLib.t('fehlermonitoring', 'konfigurationGeloescht'))
+ // reload dataset to see change
+ IssuesKonfiguration._reloadKonfigurationOverview();
+ }
+ else
+ {
+ FHC_DialogLib.alertError(FHC_PhrasesLib.t('fehlermonitoring', 'konfigurationGeloeschtFehler'));
+ }
+ },
+ errorCallback: function(jqXHR, textStatus, errorThrown) {
+ FHC_DialogLib.alertError(textStatus);
+ }
+ }
+ );
+ },
deleteKonfiguration: function(konfigurationstyp_kurzbz, fehlercode)
{
FHC_AjaxClient.ajaxCallPost(
@@ -229,7 +257,7 @@ $(document).ready(function() {
}
);
- // get new fehlercodes each time app is changed
+ // set assign configuration event
$("#assignKonfiguration").click(
function()
{
@@ -241,6 +269,18 @@ $(document).ready(function() {
}
);
+ // set delete configuration event
+ $("#deleteKonfiguration").click(
+ function()
+ {
+ IssuesKonfiguration.deleteKonfigurationsWerte(
+ $("#"+FEHLERKONFIGURATIONSTYP_DROPDOWN_ID).val(),
+ $("#"+FEHLERCODE_DROPDOWN_ID).val(),
+ $("#konfigurationsWert").val()
+ );
+ }
+ );
+
// set events for showing info modals
$("#fehlercodeInfoIcon").click(
function()
diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php
index 0bc748c80..28735e07f 100644
--- a/system/phrasesupdate.php
+++ b/system/phrasesupdate.php
@@ -17897,7 +17897,7 @@ array(
),
array(
'sprache' => 'English',
- 'text' => 'Invalid configuration value for data type {1}, special characters not allowed',
+ 'text' => 'Invalid configuration value for data type {0}, special characters not allowed',
'description' => '',
'insertvon' => 'system'
)
@@ -18123,6 +18123,26 @@ array(
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'fehlermonitoring',
+ 'phrase' => 'konfigurationswertLoeschen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Konfigurationswert(e) löschen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Delete configuration value(s)',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
);