diff --git a/application/models/codex/Bisverwendung_model.php b/application/models/codex/Bisverwendung_model.php index 707e8af36..77cff15f1 100644 --- a/application/models/codex/Bisverwendung_model.php +++ b/application/models/codex/Bisverwendung_model.php @@ -41,4 +41,35 @@ class Bisverwendung_model extends DB_Model return $this->loadWhere($condition); } + + /** + * Gets Verwendungen of the user, optionally in a time span. + * @param string $uid + * @param string $beginn + * @param string $ende + * @return array + */ + public function getVerwendungen($uid, $beginn = null, $ende = null) + { + $params = array($uid); + + $qry = 'SELECT * FROM bis.tbl_bisverwendung + WHERE mitarbeiter_uid = ?'; + + if (isset($beginn)) + { + $qry .= ' AND ( ende >= ? OR ende IS NULL )'; + $params[] = $beginn; + } + + if (isset($ende)) + { + $qry .= ' AND ( beginn <= ? OR beginn IS NULL )'; + $params[] = $ende; + } + + $qry .= 'ORDER BY beginn'; + + return $this->execQuery($qry, $params); + } } diff --git a/application/models/person/Benutzer_model.php b/application/models/person/Benutzer_model.php index 2c65003dd..15bce56db 100644 --- a/application/models/person/Benutzer_model.php +++ b/application/models/person/Benutzer_model.php @@ -61,7 +61,7 @@ class Benutzer_model extends DB_Model /** * Generates alias for a uid. * @param $uid - * @return array the alias + * @return array the alias if newly generated */ public function generateAlias($uid) { @@ -78,7 +78,6 @@ class Benutzer_model extends DB_Model if (hasData($aliasexists) && !getData($aliasexists)[0]) $aliasres = $alias; - } return success($aliasres); } diff --git a/application/models/person/Benutzerfunktion_model.php b/application/models/person/Benutzerfunktion_model.php index fb9b51c1a..485f0e9a5 100644 --- a/application/models/person/Benutzerfunktion_model.php +++ b/application/models/person/Benutzerfunktion_model.php @@ -12,6 +12,43 @@ class Benutzerfunktion_model extends DB_Model $this->pk = 'benutzerfunktion_id'; } + /** + * Lädt alle Benutzerfunktionen zu einer UID + * @param type $uid UID des Mitarbeiters + * @param type $funktion_kurzbz OPTIONAL Kurzbezeichnung der Funktion + * @param type $startZeitraum OPTIONAL Start Zeitraum in dem die Funktion aktiv ist + * @param type $endeZeitraum OPTIONAL Ende Zeitraum in dem die Funktion aktiv ist + * @return boolean + */ + public function getBenutzerFunktionByUid($uid, $funktion_kurzbz=null, $startZeitraum=null, $endeZeitraum=null) + { + $params = array($uid); + + $qry = "SELECT tbl_benutzerfunktion.*, tbl_organisationseinheit.organisationseinheittyp_kurzbz + FROM public.tbl_benutzerfunktion + LEFT JOIN public.tbl_organisationseinheit USING(oe_kurzbz) + WHERE uid=?"; + if(!is_null($funktion_kurzbz)) + { + $qry .= ' AND funktion_kurzbz = ?'; + $params[] = $funktion_kurzbz; + } + if(!is_null($startZeitraum)) + { + $qry .=' AND (datum_bis IS NULL OR datum_bis >= ?)'; + $params[] = $startZeitraum; + } + if(!is_null($endeZeitraum)) + { + $qry .=' AND (datum_von IS NULL OR datum_von <= ?)'; + $params[] = $endeZeitraum; + } + + $qry .= ";"; + + return $this->execQuery($qry, $params); + } + /** * Get the Benutzerfunktion using the person_id */ diff --git a/application/models/ressource/Mitarbeiter_model.php b/application/models/ressource/Mitarbeiter_model.php index 3b0bd2479..396cf9fb3 100644 --- a/application/models/ressource/Mitarbeiter_model.php +++ b/application/models/ressource/Mitarbeiter_model.php @@ -51,15 +51,16 @@ class Mitarbeiter_model extends DB_Model */ public function getPersonal($aktiv, $fix, $verwendung) { - $qry = "SELECT DISTINCT ON(mitarbeiter_uid) *, - tbl_benutzer.aktiv as aktiv, - tbl_mitarbeiter.insertamum, - tbl_mitarbeiter.insertvon, - tbl_mitarbeiter.updateamum, - tbl_mitarbeiter.updatevon + $qry = "SELECT DISTINCT ON(mitarbeiter_uid) staatsbuergerschaft, geburtsnation, sprache, anrede, titelpost, titelpre, + nachname, vorname, vornamen, gebdatum, gebort, gebzeit, tbl_person.anmerkung AS person_anmerkung, homepage, svnr, ersatzkennzeichen, familienstand, + geschlecht, anzahlkinder, tbl_person.insertamum AS person_insertamum, tbl_person.updateamum as person_updateamum, + tbl_person.updatevon AS person_updatevon, kompetenzen, kurzbeschreibung, zugangscode, zugangscode_timestamp, bpk, + tbl_benutzer.*, tbl_mitarbeiter.*, akt_funk.oe_kurzbz AS funktionale_zuordnung, akt_funk.wochenstunden FROM ((public.tbl_mitarbeiter JOIN public.tbl_benutzer ON(mitarbeiter_uid=uid)) JOIN public.tbl_person USING(person_id)) LEFT JOIN public.tbl_benutzerfunktion USING(uid) + LEFT JOIN public.tbl_benutzerfunktion akt_funk ON tbl_mitarbeiter.mitarbeiter_uid = akt_funk.uid AND akt_funk.funktion_kurzbz = 'fachzuordnung' + AND (akt_funk.datum_von IS NULL OR akt_funk.datum_von <= now()) AND (akt_funk.datum_bis IS NULL OR akt_funk.datum_bis >= now()) WHERE true"; if ($fix === true) @@ -83,4 +84,29 @@ class Mitarbeiter_model extends DB_Model return $this->execQuery($qry); } + + /** + * Gibt ein Array mit den UIDs der Vorgesetzten zurück + * @return object + */ + public function getVorgesetzte($uid) + { + $qry = "SELECT + DISTINCT uid as vorgesetzter + FROM + public.tbl_benutzerfunktion + WHERE + funktion_kurzbz='Leitung' AND + (datum_von is null OR datum_von<=now()) AND + (datum_bis is null OR datum_bis>=now()) AND + oe_kurzbz in (SELECT oe_kurzbz + FROM public.tbl_benutzerfunktion + WHERE + funktion_kurzbz='oezuordnung' AND uid=? AND + (datum_von is null OR datum_von<=now()) AND + (datum_bis is null OR datum_bis>=now()) + );"; + + return $this->execQuery($qry, array($uid)); + } }