mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-23 18:02:18 +00:00
Merge branch 'master' into feature-61599/DocumentExportLib_erweitern
This commit is contained in:
@@ -402,6 +402,26 @@ class Vertrag_model extends DB_Model
|
||||
return $this->loadWhere(array('mitarbeiter_uid' => $mitarbeiter_uid, 'lehreinheit_id' => $lehreinheit_id));
|
||||
}
|
||||
|
||||
public function getVertragById($vertrag_id)
|
||||
{
|
||||
$this->addSelect(
|
||||
'tbl_vertrag.vertrag_id, vertragstyp_kurzbz, vertragsstunden, vertragsstunden_studiensemester_kurzbz, status.vertragsstatus_kurzbz,
|
||||
status.bezeichnung AS vertragsstatus, tbl_vertrag.betrag, lema.semesterstunden, lema.stundensatz'
|
||||
);
|
||||
$this->addJoin('lehre.tbl_lehreinheitmitarbeiter lema', 'tbl_vertrag.vertrag_id = lema.vertrag_id', 'LEFT');
|
||||
$this->addJoin('
|
||||
(
|
||||
SELECT DISTINCT ON(vst.vertrag_id) vst.vertrag_id,
|
||||
bezeichnung,
|
||||
tbl_vertragsstatus.vertragsstatus_kurzbz
|
||||
FROM lehre.tbl_vertrag_vertragsstatus vst
|
||||
JOIN lehre.tbl_vertragsstatus USING(vertragsstatus_kurzbz)
|
||||
ORDER BY vst.vertrag_id, datum DESC
|
||||
) as status', 'status.vertrag_id = lehre.tbl_vertrag.vertrag_id', 'LEFT');
|
||||
|
||||
return $this->loadWhere(['tbl_vertrag.vertrag_id' => $vertrag_id]);
|
||||
}
|
||||
|
||||
public function cancelVertrag($vertrag_id, $mitarbeiter_uid)
|
||||
{
|
||||
$vertrag = $this->load($vertrag_id);
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
use CI3_Events as Events;
|
||||
|
||||
class Prestudent_model extends DB_Model
|
||||
{
|
||||
/**
|
||||
@@ -782,4 +784,118 @@ class Prestudent_model extends DB_Model
|
||||
|
||||
return $this->execQuery($query, array($person_id));
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a filter to the query builder
|
||||
*
|
||||
* @param array $filter
|
||||
* @return boolean
|
||||
*/
|
||||
public function addFilter($filter)
|
||||
{
|
||||
if (!isset($filter['type']))
|
||||
return false;
|
||||
|
||||
switch ($filter['type']) {
|
||||
case 'konto':
|
||||
$bt = '';
|
||||
$stdsem = '';
|
||||
$comp = '!=';
|
||||
|
||||
if (isset($filter['buchungstyp_kurzbz']) && $filter['buchungstyp_kurzbz'] != 'all')
|
||||
$bt = ' AND buchungstyp_kurzbz=' . $this->escape($filter['buchungstyp_kurzbz']);
|
||||
|
||||
if (isset($filter['studiensemester_kurzbz']))
|
||||
$stdsem = ' AND studiensemester_kurzbz=' . $this->escape($filter['studiensemester_kurzbz']);
|
||||
|
||||
if (isset($filter['missing']) && $filter['missing']) {
|
||||
$comp = '=';
|
||||
$this->db->where('get_rolle_prestudent(tbl_prestudent.prestudent_id, NULL) !=', 'Incoming');
|
||||
}
|
||||
|
||||
$this->db->where('(
|
||||
SELECT count(*)
|
||||
FROM public.tbl_konto
|
||||
WHERE person_id=tbl_prestudent.person_id
|
||||
' . $bt . '
|
||||
' . $stdsem . '
|
||||
) ' . $comp, 0);
|
||||
break;
|
||||
|
||||
case 'konto_counter':
|
||||
$bt = '';
|
||||
$samestg = '';
|
||||
$past = '';
|
||||
|
||||
if (isset($filter['buchungstyp_kurzbz']) && $filter['buchungstyp_kurzbz'] != 'all')
|
||||
$bt = ' AND buchungstyp_kurzbz = ' . $this->escape($filter['buchungstyp_kurzbz']);
|
||||
|
||||
if (isset($filter['samestg']) && $filter['samestg'])
|
||||
$samestg = ' AND studiengang_kz = tbl_prestudent.studiengang_kz';
|
||||
|
||||
if (isset($filter['past']) && $filter['past'])
|
||||
$past = ' AND buchungsdatum < NOW()';
|
||||
|
||||
$this->db->where('(
|
||||
SELECT sum(betrag)
|
||||
FROM public.tbl_konto
|
||||
WHERE person_id = tbl_prestudent.person_id
|
||||
' . $bt . '
|
||||
' . $samestg . '
|
||||
' . $past . '
|
||||
) !=', 0);
|
||||
break;
|
||||
|
||||
case 'zgv':
|
||||
$this->db
|
||||
->group_start()
|
||||
->group_start()
|
||||
->where('zgv_code IS NOT NULL')
|
||||
->where('zgvdatum IS NULL')
|
||||
->group_end()
|
||||
->or_group_start()
|
||||
->where('zgvmas_code IS NOT NULL')
|
||||
->where('zgvmadatum IS NULL')
|
||||
->group_end()
|
||||
->or_group_start()
|
||||
->where('zgvdoktor_code IS NOT NULL')
|
||||
->where('zgvdoktordatum IS NULL')
|
||||
->group_end()
|
||||
->group_end();
|
||||
break;
|
||||
|
||||
case 'documents':
|
||||
$this->db->where('(
|
||||
SELECT count(*)
|
||||
FROM public.tbl_dokumentstudiengang
|
||||
WHERE dokument_kurzbz NOT IN (
|
||||
SELECT dokument_kurzbz
|
||||
FROM tbl_dokumentprestudent
|
||||
WHERE prestudent_id=tbl_prestudent.prestudent_id
|
||||
)
|
||||
AND studiengang_kz=tbl_prestudent.studiengang_kz
|
||||
) !=', 0);
|
||||
break;
|
||||
|
||||
case 'statusgrund':
|
||||
if (!isset($filter['statusgrund_id']))
|
||||
return false;
|
||||
|
||||
if (isset($filter['studiensemester_kurzbz']))
|
||||
$stdsem = ' AND studiensemester_kurzbz=' . $this->escape($filter['studiensemester_kurzbz']);
|
||||
|
||||
$this->db->where('(
|
||||
SELECT count(*)
|
||||
FROM public.tbl_prestudentstatus
|
||||
WHERE prestudent_id = tbl_prestudent.prestudent_id
|
||||
AND statusgrund_id = ' . $this->escape($filter['statusgrund_id']) . '
|
||||
' . $stdsem . '
|
||||
) !=', 0);
|
||||
break;
|
||||
}
|
||||
|
||||
Events::trigger('prestudent_add_filter', $filter);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -290,7 +290,11 @@ class Prestudentstatus_model extends DB_Model
|
||||
*/
|
||||
public function getLastStatusPerson($person_id, $studiensemester_kurzbz = null)
|
||||
{
|
||||
$query = 'SELECT *
|
||||
$query = 'SELECT p.*, ps.*, s.*,
|
||||
stg.kurzbz AS studiengang_kurzbz, stg.kurzbzlang AS studiengang_kurzbzlang,
|
||||
UPPER(typ::varchar(1) || kurzbz) AS studiengang_kuerzel,
|
||||
stg.typ AS studiengang_typ, stg.bezeichnung AS studiengang_bezeichnung, stg.english AS studiengang_bezeichnung_english,
|
||||
stg.orgform_kurzbz AS studiengang_orgform
|
||||
FROM public.tbl_prestudent p
|
||||
JOIN (
|
||||
SELECT DISTINCT ON(prestudent_id) *
|
||||
@@ -298,7 +302,8 @@ class Prestudentstatus_model extends DB_Model
|
||||
WHERE prestudent_id IN (SELECT prestudent_id FROM public.tbl_prestudent WHERE person_id = ?)
|
||||
ORDER BY prestudent_id, datum desc, insertamum desc
|
||||
) ps USING(prestudent_id)
|
||||
JOIN public.tbl_status USING(status_kurzbz)';
|
||||
JOIN public.tbl_status s USING(status_kurzbz)
|
||||
JOIN public.tbl_studiengang stg USING (studiengang_kz)';
|
||||
|
||||
$parametersArray = array($person_id);
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ class Student_model extends DB_Model
|
||||
$this->addSelect('1');
|
||||
|
||||
$result = $this->loadWhere(array('student_uid' => $uid));
|
||||
|
||||
|
||||
|
||||
if(hasData($result))
|
||||
{
|
||||
@@ -169,7 +169,7 @@ class Student_model extends DB_Model
|
||||
|
||||
$max = 0;
|
||||
if ($matrikelnrres && hasData($matrikelnrres)) {
|
||||
$max = mb_substr($matrikelnrres->retval[0]->matrikelnr, 7);
|
||||
$max = mb_substr(trim(getData($matrikelnrres)[0]->matrikelnr), -3);
|
||||
if (!is_numeric($max)) {
|
||||
$max = (int)$max;
|
||||
}
|
||||
|
||||
@@ -651,7 +651,13 @@ EOSQL;
|
||||
ELSE NULL
|
||||
END
|
||||
END,
|
||||
' '
|
||||
' '
|
||||
ORDER BY
|
||||
UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz),
|
||||
COALESCE(TRIM(tbl_lehreinheitgruppe.semester::text), ''),
|
||||
COALESCE(TRIM(tbl_lehreinheitgruppe.verband), ''),
|
||||
COALESCE(TRIM(tbl_lehreinheitgruppe.gruppe), ''),
|
||||
COALESCE(tbl_lehreinheitgruppe.gruppe_kurzbz, '')
|
||||
) AS gruppen
|
||||
FROM lehre.tbl_lehreinheitgruppe
|
||||
LEFT JOIN public.tbl_studiengang USING (studiengang_kz)
|
||||
|
||||
@@ -374,7 +374,7 @@ class Lehreinheitgruppe_model extends DB_Model
|
||||
return success('Group assigned successfully to Lehreinheit');
|
||||
}
|
||||
else
|
||||
return error('Group already assigned');
|
||||
return error($this->p->t('lehre', 'grpbereitszugeteilt'));
|
||||
}
|
||||
|
||||
public function deleteGroup($lehreinheit_id, $lehreinheitgruppe_id)
|
||||
@@ -401,7 +401,7 @@ class Lehreinheitgruppe_model extends DB_Model
|
||||
$stundenplan_result = $this->loadWhere(array('tbl_lehreinheitgruppe.lehreinheitgruppe_id' => $lehreinheitgruppe_id));
|
||||
|
||||
if (hasData($stundenplan_result))
|
||||
return error('Gruppe already verplant');
|
||||
return error($this->p->t('lehre', 'grpbereitsverplant'));
|
||||
|
||||
$delete_result = $this->delete($lehreinheitgruppe_id);
|
||||
|
||||
|
||||
@@ -1255,4 +1255,61 @@ class Lehrveranstaltung_model extends DB_Model
|
||||
|
||||
return $this->execReadOnlyQuery($qry, $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets Lehrveranstaltungen for a student, as needed for a Projektarbeit.
|
||||
* @param student_uid
|
||||
* @param studiengang_kz optional, all Lvs of this Studiengang will be included
|
||||
* @param additional_lehrveranstaltung_id optional, this lv will be added to result
|
||||
* @return object success or error
|
||||
*/
|
||||
public function getLvsForProjektarbeit($student_uid, $studiengang_kz = null, $additional_lehrveranstaltung_id = null)
|
||||
{
|
||||
$params = array($student_uid, $student_uid);
|
||||
|
||||
$qry = "
|
||||
SELECT *
|
||||
FROM
|
||||
lehre.tbl_lehrveranstaltung
|
||||
WHERE
|
||||
(
|
||||
lehrveranstaltung_id IN (
|
||||
|
||||
SELECT
|
||||
lehrveranstaltung_id
|
||||
FROM
|
||||
campus.vw_student_lehrveranstaltung
|
||||
WHERE
|
||||
uid=?
|
||||
|
||||
UNION
|
||||
|
||||
SELECT
|
||||
lehrveranstaltung_id
|
||||
FROM
|
||||
lehre.tbl_zeugnisnote
|
||||
WHERE
|
||||
student_uid=?
|
||||
)";
|
||||
|
||||
if (isset($studiengang_kz))
|
||||
{
|
||||
$params[] = $studiengang_kz;
|
||||
$qry .= " OR (studiengang_kz = ? AND semester IS NOT NULL)";
|
||||
}
|
||||
|
||||
if (isset($additional_lehrveranstaltung_id))
|
||||
{
|
||||
$params[] = $additional_lehrveranstaltung_id;
|
||||
$qry .= " OR lehrveranstaltung_id = ?";
|
||||
}
|
||||
|
||||
$qry .= "
|
||||
)
|
||||
AND projektarbeit = TRUE
|
||||
ORDER BY
|
||||
semester, bezeichnung";
|
||||
|
||||
return $this->execQuery($qry, $params);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,16 +24,28 @@ class Projektarbeit_model extends DB_Model
|
||||
public function getProjektarbeit($student_uid, $studiengang_kz = null, $studiensemester_kurzbz = null, $projekttyp = null, $final = null)
|
||||
{
|
||||
$qry = "SELECT
|
||||
tbl_projektarbeit.* , tbl_projekttyp.bezeichnung
|
||||
pa.*, tbl_projekttyp.bezeichnung,
|
||||
tbl_lehreinheit.studiensemester_kurzbz, tbl_lehrveranstaltung.lehrveranstaltung_id,
|
||||
tbl_firma.name AS firma_name,
|
||||
(
|
||||
SELECT
|
||||
STRING_AGG(trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')), ', ')
|
||||
FROM
|
||||
lehre.tbl_projektbetreuer
|
||||
JOIN public.tbl_person USING (person_id)
|
||||
WHERE
|
||||
projektarbeit_id = pa.projektarbeit_id
|
||||
AND student_uid = pa.student_uid
|
||||
GROUP BY projektarbeit_id
|
||||
) AS projektbetreuer
|
||||
FROM
|
||||
lehre.tbl_projektarbeit
|
||||
JOIN
|
||||
lehre.tbl_projekttyp USING (projekttyp_kurzbz), lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung
|
||||
|
||||
lehre.tbl_projektarbeit pa
|
||||
JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
|
||||
JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
|
||||
LEFT JOIN public.tbl_firma USING (firma_id)
|
||||
WHERE
|
||||
tbl_projektarbeit.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND
|
||||
tbl_lehreinheit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id AND
|
||||
tbl_projektarbeit.student_uid = ?";
|
||||
pa.student_uid = ?";
|
||||
|
||||
$params = array($student_uid);
|
||||
|
||||
@@ -261,4 +273,30 @@ class Projektarbeit_model extends DB_Model
|
||||
|
||||
return $this->execReadOnlyQuery($qry, array($projektarbeit_id));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param
|
||||
* @return object success or error
|
||||
*/
|
||||
public function hasBerechtigungForProjektarbeit($projektarbeit_id)
|
||||
{
|
||||
if (!$projektarbeit_id || !is_numeric($projektarbeit_id))
|
||||
return false;
|
||||
|
||||
$this->ProjektarbeitModel->addSelect('studiengang_kz');
|
||||
$this->ProjektarbeitModel->addJoin('public.tbl_student', 'student_uid');
|
||||
$result = $this->ProjektarbeitModel->load($projektarbeit_id);
|
||||
if (isError($result) || !hasData($result))
|
||||
return false;
|
||||
|
||||
$studiengang_kz = getData($result)[0]->studiengang_kz;
|
||||
|
||||
if ($this->permissionlib->isBerechtigt('admin', 'suid', $studiengang_kz))
|
||||
return true;
|
||||
if ($this->permissionlib->isBerechtigt('assistenz', 'suid', $studiengang_kz))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ class Projektbetreuer_model extends DB_Model
|
||||
parent::__construct();
|
||||
$this->dbTable = 'lehre.tbl_projektbetreuer';
|
||||
$this->pk = array('betreuerart_kurzbz', 'projektarbeit_id', 'person_id');
|
||||
$this->hasSequence = false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -157,7 +157,6 @@ class Studienplan_model extends DB_Model
|
||||
return $this->execReadOnlyQuery($qry, array($lv_id));
|
||||
}
|
||||
|
||||
|
||||
public function getStudienplaeneForPerson($person_id)
|
||||
{
|
||||
$this->addDistinct();
|
||||
|
||||
@@ -207,7 +207,6 @@ class Notiz_model extends DB_Model
|
||||
";
|
||||
|
||||
return $this->execQuery($qry, array($type, $id));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -151,12 +151,21 @@ class Person_model extends DB_Model
|
||||
*/
|
||||
public function searchPerson($filter)
|
||||
{
|
||||
$this->addSelect('vorname, nachname, gebdatum, person_id');
|
||||
$this->addSelect('vorname, nachname, gebdatum, person_id, titelpre, titelpost');
|
||||
$this->addSelect("CASE
|
||||
WHEN EXISTS
|
||||
(SELECT 1 FROM public.tbl_benutzer JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid) WHERE person_id=tbl_person.person_id)
|
||||
THEN 'Mitarbeiter'
|
||||
WHEN EXISTS
|
||||
(SELECT 1 FROM public.tbl_benutzer JOIN public.tbl_student ON(uid=student_uid) WHERE person_id=tbl_person.person_id)
|
||||
THEN 'Student'
|
||||
ELSE 'Person'
|
||||
END AS status");
|
||||
$result = $this->loadWhere(
|
||||
'lower(nachname) like '.$this->db->escape('%'.$filter.'%')."
|
||||
'lower(nachname) like '.$this->db->escape('%'.mb_strtolower($filter).'%')."
|
||||
OR lower(vorname) like ".$this->db->escape('%'.$filter.'%')."
|
||||
OR lower(nachname || ' ' || vorname) like ".$this->db->escape('%'.$filter.'%')."
|
||||
OR lower(vorname || ' ' || nachname) like ".$this->db->escape('%'.$filter.'%')
|
||||
OR lower(nachname || ' ' || vorname) like ".$this->db->escape('%'.mb_strtolower($filter).'%')."
|
||||
OR lower(vorname || ' ' || nachname) like ".$this->db->escape('%'.mb_strtolower($filter).'%')
|
||||
);
|
||||
|
||||
return $result;
|
||||
@@ -411,4 +420,4 @@ class Person_model extends DB_Model
|
||||
return success($result);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -135,7 +135,8 @@ class Profil_update_model extends DB_Model
|
||||
attachment_id,
|
||||
UPPER(public.tbl_studiengang.typ || public.tbl_studiengang.kurzbz) AS studiengang,
|
||||
COALESCE(of.orgform_kurzbz, public.tbl_studiengang.orgform_kurzbz) AS orgform,
|
||||
NULL as oezuordnung
|
||||
NULL as oezuordnung,
|
||||
tbl_student.semester
|
||||
FROM public.tbl_profil_update
|
||||
JOIN public.tbl_profil_update_status ON public.tbl_profil_update_status.status_kurzbz = public.tbl_profil_update.status
|
||||
JOIN public.tbl_student ON public.tbl_student.student_uid=public.tbl_profil_update.uid
|
||||
|
||||
@@ -12,17 +12,24 @@ class Firma_model extends DB_Model
|
||||
$this->pk = 'firma_id';
|
||||
}
|
||||
|
||||
public function searchFirmen($filter)
|
||||
public function searchFirmen($filter, $aktiv = null)
|
||||
{
|
||||
$params = [];
|
||||
$filter = strtoLower($filter);
|
||||
$qry = "
|
||||
SELECT
|
||||
SELECT
|
||||
f.name, f.firma_id
|
||||
FROM
|
||||
public.tbl_firma f
|
||||
WHERE
|
||||
lower (f.name) LIKE '%". $this->db->escape_like_str($filter)."%'";
|
||||
FROM
|
||||
public.tbl_firma f
|
||||
WHERE
|
||||
lower (f.name) LIKE '%". $this->db->escape_like_str($filter)."%'";
|
||||
|
||||
return $this->execQuery($qry);
|
||||
if (isset($aktiv) && is_bool($aktiv))
|
||||
{
|
||||
$params[] = $aktiv;
|
||||
$qry .= " AND aktiv = ?";
|
||||
}
|
||||
|
||||
return $this->execQuery($qry, $params);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -353,12 +353,14 @@ class Mitarbeiter_model extends DB_Model
|
||||
{
|
||||
$filter = strtoLower($filter);
|
||||
|
||||
$returnwert = "p.person_id, p.nachname, p.vorname, p.titelpost, p.titelpre";
|
||||
|
||||
if ($mode == "mitAkadGrad")
|
||||
$returnwert = "ma.mitarbeiter_uid, CONCAT(p.nachname, ' ', p.vorname, ' ', p.titelpost, ' ', p.titelpre, ' (', ma.mitarbeiter_uid , ')') as mitarbeiter";
|
||||
$returnwert .= ", ma.mitarbeiter_uid, CONCAT(p.nachname, ' ', p.vorname, ' ', p.titelpost, ' ', p.titelpre, ' (', ma.mitarbeiter_uid , ')') as mitarbeiter";
|
||||
elseif ($mode == "ohneMaUid")
|
||||
$returnwert = "p.person_id, CONCAT(p.nachname, ' ', p.vorname, ' ', p.titelpost, ' ', p.titelpre) as mitarbeiter";
|
||||
$returnwert .= ", CONCAT(p.nachname, ' ', p.vorname, ' ', p.titelpost, ' ', p.titelpre) as mitarbeiter";
|
||||
else
|
||||
$returnwert = "ma.mitarbeiter_uid, CONCAT(p.nachname, ' ', p.vorname, ' (', ma.mitarbeiter_uid , ')') as mitarbeiter";
|
||||
$returnwert .= ", ma.mitarbeiter_uid, CONCAT(p.nachname, ' ', p.vorname, ' (', ma.mitarbeiter_uid , ')') as mitarbeiter";
|
||||
|
||||
$qry = "
|
||||
SELECT " . $returnwert . "
|
||||
@@ -373,7 +375,11 @@ class Mitarbeiter_model extends DB_Model
|
||||
OR
|
||||
lower (p.vorname) LIKE '%". $this->db->escape_like_str($filter)."%'
|
||||
OR
|
||||
(ma.mitarbeiter_uid) LIKE '%". $this->db->escape_like_str($filter)."%'";
|
||||
(ma.mitarbeiter_uid) LIKE '%". $this->db->escape_like_str($filter)."%'
|
||||
OR
|
||||
lower(vorname || ' ' || nachname || ' ' || vorname) like ".$this->db->escape('%'.mb_strtolower($filter).'%')."
|
||||
ORDER BY
|
||||
p.nachname, p.vorname, b.uid, p.person_id";
|
||||
|
||||
return $this->execQuery($qry);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
class Stundensatz_model extends DB_Model
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
@@ -43,6 +43,107 @@ class Stundensatz_model extends DB_Model
|
||||
return $this->execQuery($qry, $params);
|
||||
}
|
||||
|
||||
public function getStundensatzForMitarbeiter($person_id, $studiensemester_kurzbz)
|
||||
{
|
||||
$this->load->config('stv');
|
||||
|
||||
$defaultStundensatz = $this->config->item('tabs')['projektarbeit']['defaultProjektbetreuerStundensatz'];
|
||||
|
||||
$stundensatz = '';
|
||||
|
||||
if(isset($person_id) && isset($studiensemester_kurzbz))
|
||||
{
|
||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
|
||||
$this->StudiensemesterModel->addSelect('start, ende');
|
||||
$result = $this->StudiensemesterModel->load($studiensemester_kurzbz);
|
||||
|
||||
if (hasData($result))
|
||||
{
|
||||
$studiensemester = getData($result)[0];
|
||||
|
||||
if (defined('FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ') && !FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ)
|
||||
{
|
||||
// load Mitarbeiter
|
||||
$params = [$person_id];
|
||||
$qry = "
|
||||
SELECT
|
||||
mitarbeiter_uid, fixangestellt
|
||||
FROM
|
||||
public.tbl_mitarbeiter
|
||||
JOIN public.tbl_benutzer ON(tbl_benutzer.uid=tbl_mitarbeiter.mitarbeiter_uid)
|
||||
WHERE
|
||||
person_id=?
|
||||
ORDER BY
|
||||
tbl_mitarbeiter.insertamum DESC NULLS LAST
|
||||
LIMIT 1";
|
||||
|
||||
$result = $this->execQuery($qry, $params);
|
||||
|
||||
if (hasData($result))
|
||||
{
|
||||
$ma = getData($result)[0];
|
||||
|
||||
$this->load->model('vertragsbestandteil/Dienstverhaeltnis_model','DienstverhaeltnisModel');
|
||||
$echterdv_result = $this->DienstverhaeltnisModel->existsDienstverhaeltnis(
|
||||
$ma->mitarbeiter_uid,
|
||||
$studiensemester->start,
|
||||
$studiensemester->ende,
|
||||
'echterdv'
|
||||
);
|
||||
|
||||
if (hasData($echterdv_result))
|
||||
{
|
||||
$stundensatz = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
$stundensatzRes = $this->getStundensatzByDatum(
|
||||
$ma->mitarbeiter_uid, $studiensemester->start, $studiensemester->ende, 'lehre'
|
||||
);
|
||||
|
||||
if (hasData($stundensatzRes))
|
||||
$stundensatz = getData($stundensatzRes)[0]->stundensatz;
|
||||
else
|
||||
$stundensatz = '0.00';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$stundensatz = '0.00';
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
$params = [$person_id, $studiensemester->ende, $studiensemester->start];
|
||||
$qry = "SELECT ss.stundensatz
|
||||
FROM hr.tbl_stundensatz ss
|
||||
JOIN public.tbl_mitarbeiter ON ss.uid = tbl_mitarbeiter.mitarbeiter_uid
|
||||
JOIN public.tbl_benutzer ON(tbl_benutzer.uid=tbl_mitarbeiter.mitarbeiter_uid)
|
||||
WHERE person_id=?
|
||||
AND stundensatztyp = 'lehre'
|
||||
AND gueltig_von <= ?
|
||||
AND (gueltig_bis >= ? OR gueltig_bis IS NULL)
|
||||
ORDER BY gueltig_bis DESC NULLS FIRST, gueltig_von DESC NULLS LAST LIMIT 1";
|
||||
|
||||
$result = $this->execQuery($qry, $params);
|
||||
|
||||
if (hasData($result))
|
||||
{
|
||||
$stundensatz = getData($result)[0]->stundensatz;
|
||||
}
|
||||
else
|
||||
{
|
||||
$stundensatz = $defaultStundensatz;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $stundensatz;
|
||||
}
|
||||
|
||||
public function getDefaultStundensatz($mitarbeiter_uid, $beginn, $ende = null, $typ = null)
|
||||
{
|
||||
$stundensatz_result = $this->getStundensatzByDatum($mitarbeiter_uid, $beginn, $ende, $typ);
|
||||
@@ -58,4 +159,4 @@ class Stundensatz_model extends DB_Model
|
||||
}
|
||||
return $default_stundensatz;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -254,22 +254,16 @@ EOSQL;
|
||||
return $dvs;
|
||||
}
|
||||
|
||||
public function existsDienstverhaeltnis($mitarbeiter_uid, $start, $ende = null, $vertragsart_kurzbz = null)
|
||||
public function existsDienstverhaeltnis($mitarbeiter_uid, $start, $ende, $vertragsart_kurzbz)
|
||||
{
|
||||
$this->addOrder('von', 'DESC');
|
||||
$this->db->where('mitarbeiter_uid', $mitarbeiter_uid);
|
||||
if (!is_null($vertragsart_kurzbz))
|
||||
$this->db->where('vertragsart_kurzbz', $this->escape($vertragsart_kurzbz));
|
||||
|
||||
$this->db->where('vertragsart_kurzbz', $vertragsart_kurzbz);
|
||||
$this->db->where('von <=', $ende);
|
||||
|
||||
if (!is_null($ende))
|
||||
{
|
||||
$this->db->group_start();
|
||||
$this->db->where('bis >=', $start);
|
||||
$this->db->or_where('bis IS NULL', null, false);
|
||||
$this->db->group_end();
|
||||
}
|
||||
$this->db->group_start();
|
||||
$this->db->where('bis >=', $start);
|
||||
$this->db->or_where('bis IS NULL', null, false);
|
||||
$this->db->group_end();
|
||||
|
||||
$this->addLimit(1);
|
||||
return $this->load();
|
||||
|
||||
Reference in New Issue
Block a user