mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-15 14:02:17 +00:00
Merge branch 'master' into feature-29806/CronjobFuerNegativeBachelorMasterArbeiten
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
class Bismeldestichtag_model extends DB_Model
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->dbTable = 'bis.tbl_bismeldestichtag';
|
||||
$this->pk = 'meldestichtag_id';
|
||||
}
|
||||
}
|
||||
@@ -238,7 +238,7 @@ class Prestudentstatus_model extends DB_Model
|
||||
{
|
||||
$this->addSelect('tbl_prestudentstatus.*,
|
||||
tbl_studienplan.bezeichnung AS studienplan_bezeichnung,
|
||||
tbl_studienplan.orgform_kurzbz AS orgform,
|
||||
tbl_orgform.orgform_kurzbz AS orgform,
|
||||
tbl_studienplan.sprache,
|
||||
tbl_orgform.bezeichnung_mehrsprachig AS bezeichnung_orgform,
|
||||
tbl_status.bezeichnung_mehrsprachig,
|
||||
@@ -250,7 +250,7 @@ class Prestudentstatus_model extends DB_Model
|
||||
$this->addJoin('public.tbl_studiengang', 'studiengang_kz', 'LEFT');
|
||||
$this->addJoin('public.tbl_status', 'tbl_status.status_kurzbz = tbl_prestudentstatus.status_kurzbz');
|
||||
$this->addJoin('public.tbl_status_grund', 'statusgrund_id', 'LEFT');
|
||||
$this->addJoin('bis.tbl_orgform', 'tbl_studienplan.orgform_kurzbz = tbl_orgform.orgform_kurzbz', 'LEFT');
|
||||
$this->addJoin('bis.tbl_orgform', 'COALESCE(tbl_studienplan.orgform_kurzbz, ' . $this->dbTable . '.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) = tbl_orgform.orgform_kurzbz', 'LEFT');
|
||||
$this->db->where('tbl_status.status_kurzbz = tbl_prestudentstatus.status_kurzbz');
|
||||
|
||||
$where = array('prestudent_id' => $prestudent_id);
|
||||
@@ -295,7 +295,8 @@ class Prestudentstatus_model extends DB_Model
|
||||
$this->addJoin('public.tbl_studiensemester ss', 'studiensemester_kurzbz');
|
||||
$this->addJoin('public.tbl_person pers', 'person_id');
|
||||
$this->addJoin('public.tbl_studiengang g', 'p.studiengang_kz=g.studiengang_kz');
|
||||
$this->addJoin('bis.tbl_orgform o', 'g.orgform_kurzbz=o.orgform_kurzbz');
|
||||
$this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT');
|
||||
$this->addJoin('bis.tbl_orgform o', 'COALESCE(plan.orgform_kurzbz, ' . $this->dbTable . '.orgform_kurzbz, g.orgform_kurzbz)=o.orgform_kurzbz');
|
||||
|
||||
$this->addOrder($this->dbTable . '.datum', 'DESC');
|
||||
$this->addOrder($this->dbTable . '.insertamum', 'DESC');
|
||||
|
||||
@@ -322,7 +322,7 @@ class Reihungstest_model extends DB_Model
|
||||
JOIN lehre.tbl_studienplan ON (tbl_prestudentstatus.studienplan_id = tbl_studienplan.studienplan_id)
|
||||
LEFT JOIN bis.tbl_zgv ON (ps.zgv_code = tbl_zgv.zgv_code)
|
||||
WHERE rt_id = ?
|
||||
AND get_rolle_prestudent(prestudent_id, rt.studiensemester_kurzbz) = \'Interessent\'
|
||||
AND get_rolle_prestudent(prestudent_id, rt.studiensemester_kurzbz) IN (\'Interessent\', \'Bewerber\')
|
||||
AND tbl_prestudentstatus.studiensemester_kurzbz = rt.studiensemester_kurzbz
|
||||
AND bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND bestaetigtam IS NOT NULL
|
||||
@@ -411,7 +411,7 @@ class Reihungstest_model extends DB_Model
|
||||
JOIN lehre.tbl_studienplan ON (tbl_prestudentstatus.studienplan_id = tbl_studienplan.studienplan_id)
|
||||
LEFT JOIN bis.tbl_zgv ON (ps.zgv_code = tbl_zgv.zgv_code)
|
||||
WHERE rt.studiengang_kz = ?
|
||||
AND get_rolle_prestudent(prestudent_id, rt.studiensemester_kurzbz) = \'Interessent\'
|
||||
AND get_rolle_prestudent(prestudent_id, rt.studiensemester_kurzbz) IN (\'Interessent\', \'Bewerber\')
|
||||
AND tbl_prestudentstatus.studiensemester_kurzbz = rt.studiensemester_kurzbz
|
||||
AND bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND bestaetigtam IS NOT NULL
|
||||
@@ -462,7 +462,7 @@ class Reihungstest_model extends DB_Model
|
||||
LEFT JOIN bis.tbl_zgv ON (ps.zgv_code = tbl_zgv.zgv_code)
|
||||
LEFT JOIN PUBLIC.tbl_ort ON (tbl_rt_person.ort_kurzbz = tbl_ort.ort_kurzbz)
|
||||
WHERE rt_id = ?
|
||||
AND get_rolle_prestudent(prestudent_id, rt.studiensemester_kurzbz) = \'Interessent\'
|
||||
AND get_rolle_prestudent(prestudent_id, rt.studiensemester_kurzbz) IN (\'Interessent\', \'Bewerber\')
|
||||
AND tbl_prestudentstatus.studiensemester_kurzbz = rt.studiensemester_kurzbz
|
||||
AND bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND bestaetigtam IS NOT NULL
|
||||
|
||||
@@ -20,7 +20,7 @@ class Rueckstellung_model extends DB_Model
|
||||
$this->addLimit(1);
|
||||
$this->addJoin('tbl_rueckstellung_status', 'status_kurzbz');
|
||||
$this->addSelect('*,
|
||||
array_to_json(bezeichnung_mehrsprachig::varchar[])->>'.$language_index . 'as bezeichnung');
|
||||
array_to_json(bezeichnung_mehrsprachig::varchar[])->>'.$language_index . ' as bezeichnung');
|
||||
$this->addOrder('datum_bis', 'DESC');
|
||||
|
||||
$where['person_id'] = $person_id;
|
||||
|
||||
@@ -84,7 +84,7 @@ class Student_model extends DB_Model
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the FH-Email for a student (not the private kontakt emailt)
|
||||
* Get the FH-Email for a student (not the private kontakt email)
|
||||
* @param $student_uid
|
||||
* @return string
|
||||
*/
|
||||
|
||||
@@ -39,6 +39,7 @@ class Pruefung_model extends DB_Model
|
||||
|
||||
|
||||
/**
|
||||
* NOTE(chris): not used
|
||||
* @return string
|
||||
*/
|
||||
protected function loadWhereThreeExamsFailed()
|
||||
@@ -86,8 +87,10 @@ class Pruefung_model extends DB_Model
|
||||
$this->addJoin('public.tbl_person pers', 'person_id');
|
||||
$this->addJoin('public.tbl_benutzer b', 's.student_uid=b.uid');
|
||||
$this->addJoin('public.tbl_studiengang g', 'ps.studiengang_kz=g.studiengang_kz');
|
||||
$this->addJoin('bis.tbl_orgform o', 'g.orgform_kurzbz=o.orgform_kurzbz');
|
||||
$this->db->join('campus.tbl_studierendenantrag a', 'ps.prestudent_id=a.prestudent_id and a.typ = ?', 'LEFT', false);
|
||||
$this->addJoin('public.tbl_prestudentstatus pss', 'pss.prestudent_id=ps.prestudent_id AND pss.studiensemester_kurzbz=le.studiensemester_kurzbz AND pss.status_kurzbz=get_rolle_prestudent(ps.prestudent_id, le.studiensemester_kurzbz)', 'LEFT');
|
||||
$this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT');
|
||||
$this->addJoin('bis.tbl_orgform o', 'COALESCE(plan.orgform_kurzbz, pss.orgform_kurzbz, g.orgform_kurzbz)=o.orgform_kurzbz');
|
||||
$this->db->join('campus.tbl_studierendenantrag a', 'ps.prestudent_id=a.prestudent_id and a.typ = ?', 'LEFT', false);
|
||||
|
||||
$this->db->where("n.positiv", false);
|
||||
/* $this->db->where_in("p.pruefungstyp_kurzbz1", ['kommPruef','zusKommPruef']);*/
|
||||
@@ -117,38 +120,120 @@ class Pruefung_model extends DB_Model
|
||||
return $this->db->get_compiled_select($this->dbTable);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return stdClass
|
||||
*/
|
||||
public function loadWhereCommitteeExamsFailed()
|
||||
{
|
||||
$this->load->config('studierendenantrag');
|
||||
|
||||
$this->dbTable = 'lehre.tbl_pruefung p';
|
||||
|
||||
$this->addSelect('p.datum');
|
||||
|
||||
$this->addJoin('lehre.tbl_note n', 'note');
|
||||
|
||||
$this->db->where("n.positiv", false);
|
||||
$note_blacklist = $this->config->item('note_blacklist_wiederholung');
|
||||
if ($note_blacklist)
|
||||
$this->db->where_not_in("n.note", $note_blacklist);
|
||||
$this->db->where_in("p.pruefungstyp_kurzbz", ['kommPruef','zusKommPruef']);
|
||||
|
||||
$this->addOrder('p.datum', 'DESC');
|
||||
|
||||
return $this->load();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
protected function withDetailsForStudierendenAntrag()
|
||||
{
|
||||
$this->load->config('studierendenantrag');
|
||||
|
||||
$sprache_index = "SELECT index FROM public.tbl_sprache WHERE sprache='" . getUserLanguage() . "' LIMIT 1";
|
||||
|
||||
$this->addSelect('pers.vorname');
|
||||
$this->addSelect('pers.nachname');
|
||||
$this->addSelect('pers.person_id');
|
||||
$this->addSelect('s.matrikelnr');
|
||||
$this->addSelect('g.bezeichnung');
|
||||
$this->addSelect('g.studiengang_kz');
|
||||
$this->addSelect('o.bezeichnung_mehrsprachig[(' . $sprache_index . ')] AS orgform', false);
|
||||
$this->addSelect('ps.prestudent_id');
|
||||
$this->addSelect('lv.bezeichnung as lvbezeichnung');
|
||||
$this->addSelect('le.studiensemester_kurzbz');
|
||||
$this->addSelect('a.typ');
|
||||
$this->addSelect('campus.get_status_studierendenantrag(a.studierendenantrag_id) status');
|
||||
|
||||
$this->addJoin('lehre.tbl_lehreinheit le', 'lehreinheit_id');
|
||||
$this->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id');
|
||||
$this->addJoin('public.tbl_student s', 'student_uid');
|
||||
$this->addJoin('public.tbl_prestudent ps', 'prestudent_id');
|
||||
$this->addJoin('public.tbl_person pers', 'person_id');
|
||||
$this->addJoin('public.tbl_benutzer b', 's.student_uid=b.uid');
|
||||
$this->addJoin('public.tbl_studiengang g', 'ps.studiengang_kz=g.studiengang_kz');
|
||||
$this->addJoin('public.tbl_prestudentstatus pss', 'pss.prestudent_id=ps.prestudent_id AND pss.studiensemester_kurzbz=le.studiensemester_kurzbz AND pss.status_kurzbz=get_rolle_prestudent(ps.prestudent_id, le.studiensemester_kurzbz)', 'LEFT');
|
||||
$this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT');
|
||||
$this->addJoin('bis.tbl_orgform o', 'COALESCE(plan.orgform_kurzbz, pss.orgform_kurzbz, g.orgform_kurzbz)=o.orgform_kurzbz');
|
||||
$this->addJoin('campus.tbl_studierendenantrag a', 'ps.prestudent_id=a.prestudent_id and a.typ=' . $this->escape(Studierendenantrag_model::TYP_WIEDERHOLUNG), 'LEFT');
|
||||
|
||||
$this->db->where_in("get_rolle_prestudent(ps.prestudent_id, null)", $this->config->item('antrag_prestudentstatus_whitelist'));
|
||||
|
||||
$this->db->where("g.aktiv", true);
|
||||
|
||||
$statusgruende = $this->config->item('status_gruende_wiederholer');
|
||||
if (is_array($statusgruende) && !isEmptyArray($statusgruende)) {
|
||||
foreach ($statusgruende as $k => $v) {
|
||||
$statusgruende[$k] = $this->db->escape($v);
|
||||
}
|
||||
$this->db->where('lv.studiengang_kz NOT IN(
|
||||
SELECT ps1.studiengang_kz
|
||||
FROM
|
||||
public.tbl_prestudent ps1
|
||||
JOIN public.tbl_prestudentstatus pss USING (prestudent_id)
|
||||
WHERE pss.statusgrund_id in (' . implode(',', $statusgruende) . ')
|
||||
AND ps.prestudent_id = ps1.prestudent_id)', null, false);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param integer $prestudent_id student_uid
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function loadWhereCommitteeExamFailedForPrestudent($prestudent_id)
|
||||
public function loadWhereCommitteeExamFailedForPrestudent($prestudent_id, $max_date = null, $studiensemester_kurzbz = null)
|
||||
{
|
||||
$this->withDetailsForStudierendenAntrag();
|
||||
|
||||
$sql = $this->loadWhereThreeExamsFailed();
|
||||
$this->db->where('ps.prestudent_id', $prestudent_id);
|
||||
|
||||
$statusgruende = $this->config->item('status_gruende_wiederholer');
|
||||
if (!is_array($statusgruende))
|
||||
$statusgruende = [];
|
||||
if ($max_date !== null) {
|
||||
$this->db->where('p.datum <', $max_date);
|
||||
}
|
||||
if ($studiensemester_kurzbz !== null) {
|
||||
$this->db->where('le.studiensemester_kurzbz', $studiensemester_kurzbz);
|
||||
}
|
||||
|
||||
return $this->execQuery('select * from ( ' . $sql . ') temp where count >= 3 AND prestudent_id = ?', [
|
||||
Studierendenantrag_model::TYP_WIEDERHOLUNG,
|
||||
$statusgruende,
|
||||
$prestudent_id
|
||||
]);
|
||||
return $this->loadWhereCommitteeExamsFailed();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $status
|
||||
* @param \DateTime $maxDate
|
||||
* @param \DateTime $minDate
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function getAllPrestudentsWhereCommitteeExamFailed($status, $maxDate, $minDate)
|
||||
{
|
||||
$this->load->model('education/Studierendenantrag_model', 'StudierendenantragModel');
|
||||
$this->withDetailsForStudierendenAntrag();
|
||||
|
||||
if ($maxDate)
|
||||
$this->db->where("p.datum < ", $maxDate->format('c'));
|
||||
$this->db->where("p.datum <= ", $maxDate->format('Y-m-d'));
|
||||
if ($minDate)
|
||||
$this->db->where("p.datum > ", $minDate->format('c'));
|
||||
$this->db->where("p.datum > ", $minDate->format('Y-m-d'));
|
||||
|
||||
$this->db->where("b.aktiv", true);
|
||||
|
||||
@@ -170,12 +255,6 @@ class Pruefung_model extends DB_Model
|
||||
$this->db->where('campus.get_status_studierendenantrag(a.studierendenantrag_id)', $status);
|
||||
}
|
||||
|
||||
$sql = $this->loadWhereThreeExamsFailed();
|
||||
|
||||
$statusgruende = $this->config->item('status_gruende_wiederholer');
|
||||
if (!is_array($statusgruende))
|
||||
$statusgruende = [];
|
||||
|
||||
return $this->execQuery('select * from ( ' . $sql . ') temp where count >= 3', [Studierendenantrag_model::TYP_WIEDERHOLUNG, $statusgruende]);
|
||||
return $this->loadWhereCommitteeExamsFailed();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,22 +26,23 @@ class Studierendenantrag_model extends DB_Model
|
||||
return $this->loadForStudiengaenge($studiengaenge, $typ, $this->StudierendenantragstatusModel::STATUS_CREATED);
|
||||
}
|
||||
|
||||
public function loadForStudiengaenge($studiengaenge, $typ = null, $status = null)
|
||||
public function loadForStudiengaenge($studiengaenge, $typ = null, $status = null, $sql = null)
|
||||
{
|
||||
$sql = "SELECT index FROM public.tbl_sprache WHERE sprache='" . getUserLanguage() . "' LIMIT 1";
|
||||
if ($sql == null)
|
||||
$sql = "SELECT index FROM public.tbl_sprache WHERE sprache='" . getUserLanguage() . "' LIMIT 1";
|
||||
|
||||
$this->addSelect('stg.bezeichnung');
|
||||
$this->addSelect('UPPER(stg.typ) || UPPER(stg.kurzbz) || \' \' || stg.bezeichnung AS bezeichnung');
|
||||
$this->addSelect('bezeichnung_mehrsprachig[(' . $sql . ')] AS orgform', false);
|
||||
$this->addSelect('s.studierendenantrag_id');
|
||||
$this->addSelect('matrikelnr');
|
||||
$this->addSelect('studienjahr_kurzbz');
|
||||
$this->addSelect('vorname');
|
||||
$this->addSelect('nachname');
|
||||
$this->addSelect('prestudent_id');
|
||||
$this->addSelect('p.prestudent_id');
|
||||
$this->addSelect('p.studiengang_kz');
|
||||
$this->addSelect('semester');
|
||||
$this->addSelect($this->dbTable . '.grund');
|
||||
$this->addSelect('datum');
|
||||
$this->addSelect($this->dbTable . '.datum');
|
||||
$this->addSelect('datum_wiedereinstieg');
|
||||
$this->addSelect($this->dbTable . '.typ');
|
||||
$this->addSelect('st.studierendenantrag_statustyp_kurzbz as status');
|
||||
@@ -52,8 +53,10 @@ class Studierendenantrag_model extends DB_Model
|
||||
$this->addJoin('public.tbl_student', 'prestudent_id');
|
||||
$this->addJoin('public.tbl_person', 'person_id');
|
||||
$this->addJoin('public.tbl_studiengang stg', 'p.studiengang_kz=stg.studiengang_kz');
|
||||
$this->addJoin('public.tbl_studiensemester', 'studiensemester_kurzbz');
|
||||
$this->addJoin('bis.tbl_orgform', 'orgform_kurzbz');
|
||||
$this->addJoin('public.tbl_studiensemester ss', 'studiensemester_kurzbz');
|
||||
$this->addJoin('public.tbl_prestudentstatus ps', 'ps.prestudent_id=p.prestudent_id AND ps.studiensemester_kurzbz=ss.studiensemester_kurzbz AND ps.status_kurzbz=get_rolle_prestudent(p.prestudent_id, ss.studiensemester_kurzbz)');
|
||||
$this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT');
|
||||
$this->addJoin('bis.tbl_orgform of', 'of.orgform_kurzbz=COALESCE(plan.orgform_kurzbz, ps.orgform_kurzbz, stg.orgform_kurzbz)');
|
||||
$this->addJoin(
|
||||
'campus.tbl_studierendenantrag_status as s',
|
||||
'campus.get_status_id_studierendenantrag('. $this->dbTable .'.studierendenantrag_id) = studierendenantrag_status_id'
|
||||
@@ -71,6 +74,44 @@ class Studierendenantrag_model extends DB_Model
|
||||
return $this->loadWhere($where);
|
||||
}
|
||||
|
||||
public function loadActiveForStudiengaenge($studiengaenge)
|
||||
{
|
||||
// NOTE(chris): get language before changing things in the global db object because getUserLanguage() might use it and it should not have been tampered with
|
||||
$sql = "SELECT index FROM public.tbl_sprache WHERE sprache='" . getUserLanguage() . "' LIMIT 1";
|
||||
|
||||
$this->db->group_start();
|
||||
$this->db->where_not_in('s.studierendenantrag_statustyp_kurzbz', [
|
||||
Studierendenantragstatus_model::STATUS_CANCELLED,
|
||||
Studierendenantragstatus_model::STATUS_APPROVED,
|
||||
Studierendenantragstatus_model::STATUS_REJECTED,
|
||||
Studierendenantragstatus_model::STATUS_OBJECTION_DENIED,
|
||||
Studierendenantragstatus_model::STATUS_DEREGISTERED
|
||||
]);
|
||||
$this->db->or_group_start();
|
||||
$this->db->where('s.studierendenantrag_statustyp_kurzbz', Studierendenantragstatus_model::STATUS_APPROVED);
|
||||
$this->db->where('tbl_studierendenantrag.typ', Studierendenantrag_model::TYP_ABMELDUNG_STGL);
|
||||
$this->db->group_end();
|
||||
$this->db->group_end();
|
||||
|
||||
return $this->loadForStudiengaenge($studiengaenge, null, null, $sql);
|
||||
}
|
||||
|
||||
public function loadStgsWithAntraege($studiengaenge)
|
||||
{
|
||||
$this->addDistinct();
|
||||
$this->addSelect('UPPER(stg.typ) || UPPER(stg.kurzbz) || \' \' || stg.bezeichnung AS bezeichnung');
|
||||
$this->addSelect('p.studiengang_kz');
|
||||
|
||||
$this->addJoin('public.tbl_prestudent p', 'prestudent_id');
|
||||
$this->addJoin('public.tbl_studiengang stg', 'p.studiengang_kz=stg.studiengang_kz');
|
||||
|
||||
$this->addOrder('UPPER(stg.typ) || UPPER(stg.kurzbz) || \' \' || stg.bezeichnung');
|
||||
|
||||
$this->db->where_in('p.studiengang_kz', $studiengaenge);
|
||||
|
||||
return $this->load();
|
||||
}
|
||||
|
||||
public function isInStudiengang($studierendenantrag_id, $studiengaenge)
|
||||
{
|
||||
$this->addJoin('public.tbl_prestudent', 'prestudent_id');
|
||||
@@ -120,14 +161,18 @@ class Studierendenantrag_model extends DB_Model
|
||||
public function getStgAndSem($antrag_id)
|
||||
{
|
||||
$this->addSelect('p.studiengang_kz');
|
||||
$this->addSelect('stg.bezeichnung');
|
||||
$this->addSelect('s.ausbildungssemester');
|
||||
$this->addSelect('s.orgform_kurzbz');
|
||||
$this->addSelect('plan.sprache');
|
||||
$this->addSelect('COALESCE(plan.orgform_kurzbz, s.orgform_kurzbz, stg.orgform_kurzbz) AS orgform_kurzbz');
|
||||
|
||||
$this->addJoin(
|
||||
'public.tbl_prestudentstatus s',
|
||||
$this->dbTable . '.prestudent_id=s.prestudent_id AND ' . $this->dbTable . '.studiensemester_kurzbz=s.studiensemester_kurzbz'
|
||||
);
|
||||
$this->addJoin('public.tbl_prestudent p', $this->dbTable . '.prestudent_id=p.prestudent_id');
|
||||
$this->addJoin('public.tbl_studiengang stg', 'studiengang_kz', 'LEFT');
|
||||
$this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT');
|
||||
|
||||
$this->addOrder('s.datum', 'DESC');
|
||||
$this->addOrder('s.insertamum', 'DESC');
|
||||
@@ -192,7 +237,9 @@ class Studierendenantrag_model extends DB_Model
|
||||
|
||||
$this->addJoin('public.tbl_prestudent p', 'prestudent_id', 'RIGHT');
|
||||
$this->addJoin('public.tbl_studiengang stg', 'p.studiengang_kz=stg.studiengang_kz');
|
||||
$this->addJoin('bis.tbl_orgform', 'orgform_kurzbz');
|
||||
$this->addJoin('public.tbl_prestudentstatus ps', 'ps.prestudent_id=p.prestudent_id AND ps.studiensemester_kurzbz=' . $this->dbTable . '.studiensemester_kurzbz AND ps.status_kurzbz=get_rolle_prestudent(p.prestudent_id, ' . $this->dbTable . '.studiensemester_kurzbz)', 'LEFT');
|
||||
$this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT');
|
||||
$this->addJoin('bis.tbl_orgform of', 'of.orgform_kurzbz=COALESCE(plan.orgform_kurzbz, ps.orgform_kurzbz, stg.orgform_kurzbz)');
|
||||
$this->addJoin(
|
||||
'campus.tbl_studierendenantrag_statustyp st',
|
||||
'campus.get_status_studierendenantrag(studierendenantrag_id)=st.studierendenantrag_statustyp_kurzbz',
|
||||
|
||||
@@ -65,20 +65,40 @@ class Studierendenantraglehrveranstaltung_model extends DB_Model
|
||||
'stat.studierendenantrag_status_id = campus.get_status_id_studierendenantrag(a.studierendenantrag_id)'
|
||||
);
|
||||
$this->addJoin('public.tbl_student s', 'prestudent_id');
|
||||
$this->addJoin(
|
||||
'lehre.tbl_zeugnisnote z',
|
||||
'z.lehrveranstaltung_id=lv.lehrveranstaltung_id AND z.student_uid=s.student_uid AND z.studiensemester_kurzbz=a.studiensemester_kurzbz',
|
||||
'LEFT'
|
||||
);
|
||||
|
||||
// NOTE(chris): last offizell note
|
||||
$this->addJoin('(
|
||||
SELECT z.*
|
||||
FROM lehre.tbl_zeugnisnote z
|
||||
LEFT JOIN public.tbl_studiensemester zs
|
||||
USING(studiensemester_kurzbz)
|
||||
JOIN (
|
||||
SELECT zi.lehrveranstaltung_id, zi.student_uid, MAX(zis.start) AS start
|
||||
FROM lehre.tbl_zeugnisnote zi
|
||||
LEFT JOIN lehre.tbl_note zin
|
||||
USING(note)
|
||||
LEFT JOIN public.tbl_studiensemester zis
|
||||
USING(studiensemester_kurzbz)
|
||||
WHERE zin.aktiv AND zin.offiziell
|
||||
GROUP BY zi.lehrveranstaltung_id, zi.student_uid
|
||||
) zx
|
||||
ON (
|
||||
z.lehrveranstaltung_id=zx.lehrveranstaltung_id
|
||||
AND z.student_uid=zx.student_uid
|
||||
AND zs.start = zx.start
|
||||
)) z', 'z.lehrveranstaltung_id=lv.lehrveranstaltung_id AND z.student_uid=s.student_uid', 'LEFT');
|
||||
$this->addJoin('lehre.tbl_note zn', 'z.note = zn.note', 'LEFT');
|
||||
|
||||
$this->load->config('studierendenantrag');
|
||||
$note_intern_angerechntet = $this->config->item('wiederholung_note_angerechnet');
|
||||
|
||||
return $this->loadWhere([
|
||||
'ps.prestudent_id' => $prestudent_id,
|
||||
'a.typ' => Studierendenantrag_model::TYP_WIEDERHOLUNG,
|
||||
'stat.studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_APPROVED,
|
||||
'n.note <> ' => 0,
|
||||
$this->dbTable . '.studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'(n.note<>19 OR (z.note IS NOT NULL AND zn.positiv))' => null
|
||||
'(n.note<>' . $this->db->escape($note_intern_angerechntet) . ' OR (z.note IS NOT NULL AND zn.positiv))' => null
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ class Studierendenantragstatus_model extends DB_Model
|
||||
const STATUS_REQUESTSENT_2 = 'ZweiteAufforderungVersandt';
|
||||
const STATUS_OBJECTED = 'Beeinsprucht';
|
||||
const STATUS_OBJECTION_DENIED = 'EinspruchAbgelehnt';
|
||||
const STATUS_DEREGISTERED = 'Abgemeldet';
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
|
||||
@@ -525,20 +525,6 @@ class Studiengang_model extends DB_Model
|
||||
return $this->execQuery($query, $params);
|
||||
}
|
||||
|
||||
public function loadWithOrgform($studiengang_kzs)
|
||||
{
|
||||
$sql = "SELECT index FROM public.tbl_sprache WHERE sprache='" . getUserLanguage() . "' LIMIT 1";
|
||||
|
||||
$this->addSelect($this->dbTable . '.*');
|
||||
$this->addSelect('o.bezeichnung_mehrsprachig[(' . $sql . ')] AS orgform');
|
||||
|
||||
$this->addJoin('bis.tbl_orgform o', 'orgform_kurzbz');
|
||||
|
||||
$this->db->where_in($this->dbTable . '.studiengang_kz', $studiengang_kzs);
|
||||
|
||||
return $this->load();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $studiengang_kzs
|
||||
* @param array $not_antrag_typ (optional) If the prestudent has an antrag with one of the specified types it will be excluded from the result
|
||||
@@ -571,7 +557,8 @@ class Studiengang_model extends DB_Model
|
||||
AND ps.ausbildungssemester=get_absem_prestudent(p.prestudent_id, NULL)
|
||||
AND ps.status_kurzbz=get_rolle_prestudent(p.prestudent_id, NULL)'
|
||||
);
|
||||
$this->addJoin('bis.tbl_orgform o', $this->dbTable . '.orgform_kurzbz=o.orgform_kurzbz');
|
||||
$this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id');
|
||||
$this->addJoin('bis.tbl_orgform o', 'COALESCE(plan.orgform_kurzbz, ps.orgform_kurzbz, ' . $this->dbTable . '.orgform_kurzbz)=o.orgform_kurzbz');
|
||||
$this->addJoin('public.tbl_person pers', 'person_id');
|
||||
$this->addJoin('public.tbl_student stud', 'p.prestudent_id=stud.prestudent_id', 'LEFT');
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ class Studienplan_model extends DB_Model
|
||||
));
|
||||
}
|
||||
|
||||
public function getStudienplanLehrveranstaltungForPrestudent($studienplan_id, $semester, $prestudent_id, $note_stsem)
|
||||
public function getStudienplanLehrveranstaltungForPrestudent($studienplan_id, $semester, $prestudent_id)
|
||||
{
|
||||
$lang = 'SELECT index FROM public.tbl_sprache WHERE sprache=' . $this->escape(getUserLanguage());
|
||||
$sql = 'SELECT student_uid FROM public.tbl_student WHERE prestudent_id=' . $this->escape($prestudent_id);
|
||||
@@ -75,11 +75,27 @@ class Studienplan_model extends DB_Model
|
||||
|
||||
$this->addJoin('lehre.tbl_studienplan_lehrveranstaltung', 'studienplan_id');
|
||||
$this->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id');
|
||||
$this->addJoin(
|
||||
'lehre.tbl_zeugnisnote zn',
|
||||
'zn.lehrveranstaltung_id=lv.lehrveranstaltung_id AND zn.student_uid=(' . $sql . ') AND zn.studiensemester_kurzbz=' . $this->escape($note_stsem),
|
||||
'LEFT'
|
||||
);
|
||||
// NOTE(chris): last offizell note
|
||||
$this->addJoin('(
|
||||
SELECT z.*
|
||||
FROM lehre.tbl_zeugnisnote z
|
||||
LEFT JOIN public.tbl_studiensemester zs
|
||||
USING(studiensemester_kurzbz)
|
||||
JOIN (
|
||||
SELECT zi.lehrveranstaltung_id, zi.student_uid, MAX(zis.start) AS start
|
||||
FROM lehre.tbl_zeugnisnote zi
|
||||
LEFT JOIN lehre.tbl_note zin
|
||||
USING(note)
|
||||
LEFT JOIN public.tbl_studiensemester zis
|
||||
USING(studiensemester_kurzbz)
|
||||
WHERE zin.aktiv AND zin.offiziell
|
||||
GROUP BY zi.lehrveranstaltung_id, zi.student_uid
|
||||
) zx
|
||||
ON (
|
||||
z.lehrveranstaltung_id=zx.lehrveranstaltung_id
|
||||
AND z.student_uid=zx.student_uid
|
||||
AND zs.start = zx.start
|
||||
)) zn', 'zn.lehrveranstaltung_id=lv.lehrveranstaltung_id AND zn.student_uid=( ' . $sql . ')', 'LEFT');
|
||||
$this->addJoin('lehre.tbl_note n', 'n.note=zn.note', 'LEFT');
|
||||
|
||||
$this->addOrder('lehre.tbl_studienplan_lehrveranstaltung.sort');
|
||||
|
||||
Reference in New Issue
Block a user