From 0d0071e8bf3e295c7e888801971de3c075fa250b Mon Sep 17 00:00:00 2001 From: ma0068 Date: Wed, 22 Jan 2025 07:57:39 +0100 Subject: [PATCH] refactoring and codesniff --- .../controllers/Vertragsverwaltung.php | 4 +- .../api/frontend/v1/vertraege/Config.php | 8 +- .../api/frontend/v1/vertraege/Vertraege.php | 53 ++---- .../models/ressource/Mitarbeiter_model.php | 152 +++++++++--------- public/js/api/vertraege/person.js | 2 +- .../Vertraege/MitarbeiterDetails.js | 7 +- public/js/components/Vertraege/Vertraege.js | 6 +- 7 files changed, 94 insertions(+), 138 deletions(-) diff --git a/application/controllers/Vertragsverwaltung.php b/application/controllers/Vertragsverwaltung.php index 6dd3ad797..bcd00abb1 100644 --- a/application/controllers/Vertragsverwaltung.php +++ b/application/controllers/Vertragsverwaltung.php @@ -4,8 +4,6 @@ if (! defined('BASEPATH')) exit('No direct script access allowed'); class Vertragsverwaltung extends Auth_Controller { - - //TODO(Manu) Permissions public function __construct() { $permissions = []; @@ -24,7 +22,7 @@ class Vertragsverwaltung extends Auth_Controller { $this->load->view('Vertragsverwaltung', [ 'permissions' => [ - 'vertragsverwaltung_schreibrechte' => $this->permissionlib->isBerechtigt('vertrag/mitarbeiter','suid') + 'vertragsverwaltung_schreibrechte' => $this->permissionlib->isBerechtigt('vertrag/mitarbeiter', 'suid') ] ]); } diff --git a/application/controllers/api/frontend/v1/vertraege/Config.php b/application/controllers/api/frontend/v1/vertraege/Config.php index 25414e04f..8ff241914 100644 --- a/application/controllers/api/frontend/v1/vertraege/Config.php +++ b/application/controllers/api/frontend/v1/vertraege/Config.php @@ -34,11 +34,12 @@ class Config extends FHCAPI_Controller ]); } - public function printDocument() { - + public function printDocument() + { $params = []; - Events::trigger('multiActionPrintHonorarvertrag', + Events::trigger( + 'multiActionPrintHonorarvertrag', // passing $menu per reference function & () use (&$menu) { return $menu; @@ -48,5 +49,4 @@ class Config extends FHCAPI_Controller $this->terminateWithSuccess($menu[0]); } - } diff --git a/application/controllers/api/frontend/v1/vertraege/Vertraege.php b/application/controllers/api/frontend/v1/vertraege/Vertraege.php index 276a75de8..b593a1f3e 100644 --- a/application/controllers/api/frontend/v1/vertraege/Vertraege.php +++ b/application/controllers/api/frontend/v1/vertraege/Vertraege.php @@ -670,17 +670,9 @@ class Vertraege extends FHCAPI_Controller $result = $this->Mitarbeitermodel->getPersonAbteilung($person_id); - if (isError($result)) - { - return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL); - } - if (!hasData($result)) - { - //TODO(Manu) rewrite better - return $this->terminateWithSuccess("no benutzerdata", self::ERROR_TYPE_GENERAL); + $data = $this->getDataOrTerminateWithError($result); - } - return $this->terminateWithSuccess(getData($result)); + $this->terminateWithSuccess(current($data)); } public function getLeitungOrg($oekurzbz) @@ -689,18 +681,9 @@ class Vertraege extends FHCAPI_Controller $result = $this->Mitarbeitermodel->getLeitungOrg($oekurzbz); - if (isError($result)) - { - return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL); - } - if (!hasData($result)) - { - //TODO(Manu) rewrite better - return $this->terminateWithSuccess("no benutzerdata", self::ERROR_TYPE_GENERAL); + $data = $this->getDataOrTerminateWithError($result); - // return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id' => 'personID']), self::ERROR_TYPE_GENERAL); - } - return $this->terminateWithSuccess(getData($result)); + $this->terminateWithSuccess(current($data)); } public function getHeader($person_id) @@ -709,38 +692,20 @@ class Vertraege extends FHCAPI_Controller $result = $this->Mitarbeitermodel->getHeader($person_id); - if (isError($result)) - { - return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL); - } - if (!hasData($result)) - { - return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id' => 'personID']), self::ERROR_TYPE_GENERAL); - } + $data = $this->getDataOrTerminateWithError($result); - return $this->terminateWithSuccess(getData($result)); + $this->terminateWithSuccess(current($data)); } - public function getMitarbeiter_uid($person_id) + public function getMitarbeiterUid($person_id) { $this->load->model('ressource/Mitarbeiter_model', 'Mitarbeitermodel'); $result = $this->Mitarbeitermodel->getMitarbeiter_uid($person_id); - if (isError($result)) - { - //TODO(Manu) check ErrorLogic - return $this->terminateWithSuccess($result); - //return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL); - } - if (!hasData($result)) - { - return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id' => 'personID']), self::ERROR_TYPE_GENERAL); - } + $data = $this->getDataOrTerminateWithError($result); - return $this->terminateWithSuccess($result); + $this->terminateWithSuccess($data); } - - } diff --git a/application/models/ressource/Mitarbeiter_model.php b/application/models/ressource/Mitarbeiter_model.php index 1b3c8834a..f7951083c 100644 --- a/application/models/ressource/Mitarbeiter_model.php +++ b/application/models/ressource/Mitarbeiter_model.php @@ -103,31 +103,32 @@ class Mitarbeiter_model extends DB_Model * * @return array */ - public function getPersonenWithContractDetails($person_id=null) + public function getPersonenWithContractDetails($person_id = null) { $qry = " - SELECT - b.uid , p.person_id, - p.vorname, p.nachname, - TO_CHAR(gebdatum::timestamp, 'DD.MM.YYYY') AS format_gebdatum, - COALESCE(b.alias, b.uid) AS email, - STRING_AGG(DISTINCT va.bezeichnung, ', ') AS Vertragsarten, - STRING_AGG(DISTINCT u.bezeichnung, ', ') AS Unternehmen, - STRING_AGG(d.dienstverhaeltnis_id::TEXT, ', ') AS ids, - b.aktiv --- CASE WHEN b.aktiv=true THEN 'aktiv' --- ELSE 'nicht aktiv' --- END as status //not working in header filter */ - FROM - hr.tbl_dienstverhaeltnis d - JOIN - public.tbl_benutzer b ON d.mitarbeiter_uid = b.uid - JOIN - public.tbl_person p ON p.person_id = b.person_id - JOIN - public.tbl_organisationseinheit u ON d.oe_kurzbz = u.oe_kurzbz - JOIN - hr.tbl_vertragsart va ON d.vertragsart_kurzbz = va.vertragsart_kurzbz "; + SELECT + b.uid , p.person_id, + p.vorname, p.nachname, + TO_CHAR(gebdatum::timestamp, 'DD.MM.YYYY') AS format_gebdatum, + COALESCE(b.alias, b.uid) AS email, + STRING_AGG(DISTINCT va.bezeichnung, ', ') AS Vertragsarten, + STRING_AGG(DISTINCT u.bezeichnung, ', ') AS Unternehmen, + STRING_AGG(d.dienstverhaeltnis_id::TEXT, ', ') AS ids, + b.aktiv + -- CASE WHEN b.aktiv=true THEN 'aktiv' + -- ELSE 'nicht aktiv' + -- END as status //not working in header filter */ + FROM + hr.tbl_dienstverhaeltnis d + JOIN + public.tbl_benutzer b ON d.mitarbeiter_uid = b.uid + JOIN + public.tbl_person p ON p.person_id = b.person_id + JOIN + public.tbl_organisationseinheit u ON d.oe_kurzbz = u.oe_kurzbz + JOIN + hr.tbl_vertragsart va ON d.vertragsart_kurzbz = va.vertragsart_kurzbz + "; if($person_id) { @@ -135,12 +136,11 @@ class Mitarbeiter_model extends DB_Model } $qry.= " - GROUP BY - b.uid, p.person_id, p.vorname, p.nachname, b.alias - ORDER BY - p.nachname, p.vorname; "; - - + GROUP BY + b.uid, p.person_id, p.vorname, p.nachname, b.alias + ORDER BY + p.nachname, p.vorname; + "; $params = array($person_id); @@ -154,56 +154,47 @@ class Mitarbeiter_model extends DB_Model * * @return Array benutzerfunktionsdata */ - function getPersonAbteilung($person_id) + public function getPersonAbteilung($person_id) { - //TODO(Manu) use function getMitarbeiter_uid - $qry = " - SELECT tbl_benutzer.uid - FROM tbl_mitarbeiter - JOIN tbl_benutzer ON CAST(tbl_mitarbeiter.mitarbeiter_uid AS TEXT) = CAST(tbl_benutzer.uid AS TEXT) - JOIN tbl_person USING (person_id) - WHERE tbl_person.person_id = ? - "; - $result = $this->execQuery($qry, [$person_id]); - - $data = getData($result); - if (empty($data)) { - return null; // No UID found - } - - $uid = isset($data[0]->uid) ? $data[0]->uid : null; - + $uid = $this->getMitarbeiterUid($person_id); if (!$uid) { - return null; // UID extraction failed + return null; } + $qry = " + SELECT + bf.benutzerfunktion_id, bf.fachbereich_kurzbz, bf.uid, bf.funktion_kurzbz, bf.updateamum, + bf.updatevon, bf.insertamum, bf.insertvon, bf.ext_id, bf.semester, bf.oe_kurzbz, + bf.datum_von, bf.datum_bis, bf.bezeichnung, bf.wochenstunden, + oe.oe_kurzbz, oe.oe_parent_kurzbz, oe.bezeichnung, + oe.organisationseinheittyp_kurzbz, oe.aktiv, oe.mailverteiler, + oe.freigabegrenze, oe.kurzzeichen, oe.lehre, oe.standort, + oe.warn_semesterstunden_frei, oe.warn_semesterstunden_fix, oe.standort_id + FROM tbl_benutzerfunktion bf + JOIN public.tbl_organisationseinheit oe USING(oe_kurzbz) + WHERE uid = ? + AND funktion_kurzbz = 'oezuordnung' + AND datum_von <= NOW() + AND (datum_bis IS NULL OR datum_bis >= NOW()) + "; + $result = $this->execQuery($qry, [$uid]); - // Second Query - $qry2 = " - SELECT - bf.benutzerfunktion_id, bf.fachbereich_kurzbz, bf.uid, bf.funktion_kurzbz, bf.updateamum, - bf.updatevon, bf.insertamum, bf.insertvon, bf.ext_id, bf.semester, bf.oe_kurzbz, - bf.datum_von, bf.datum_bis, bf.bezeichnung, bf.wochenstunden, - oe.oe_kurzbz, oe.oe_parent_kurzbz, oe.bezeichnung, - oe.organisationseinheittyp_kurzbz, oe.aktiv, oe.mailverteiler, - oe.freigabegrenze, oe.kurzzeichen, oe.lehre, oe.standort, - oe.warn_semesterstunden_frei, oe.warn_semesterstunden_fix, oe.standort_id - FROM tbl_benutzerfunktion bf - JOIN public.tbl_organisationseinheit oe USING(oe_kurzbz) - WHERE uid = ? - AND funktion_kurzbz = 'oezuordnung' - AND datum_von <= NOW() - AND (datum_bis IS NULL OR datum_bis >= NOW()) - "; - $result2 = $this->execQuery($qry2, [$uid]); - - return $result2; + return $result; } - function getLeitungOrg($oe_kurzbz) + /** + * get Leitung / Vorgesetzten of current OE + * + * @param $oe_kurzbz + * + * @return Array persondata / benutzerfunktionsdata + */ + public function getLeitungOrg($oe_kurzbz) { $qry = " - SELECT bf.benutzerfunktion_id,bf.fachbereich_kurzbz,bf.uid,bf.funktion_kurzbz,bf.updateamum,bf.updatevon,bf.insertamum,bf.insertvon,bf.ext_id,bf.semester,bf.oe_kurzbz,bf.datum_von,bf.datum_bis,bf.bezeichnung,bf.wochenstunden, - p.person_id, p.vorname,p.nachname,p.titelpre,p.titelpost + SELECT bf.benutzerfunktion_id,bf.fachbereich_kurzbz,bf.uid,bf.funktion_kurzbz, + bf.updateamum,bf.updatevon,bf.insertamum,bf.insertvon,bf.ext_id,bf.semester, + bf.oe_kurzbz,bf.datum_von,bf.datum_bis,bf.bezeichnung,bf.wochenstunden, + p.person_id, p.vorname,p.nachname,p.titelpre,p.titelpost FROM public.tbl_benutzerfunktion bf JOIN public.tbl_organisationseinheit oe USING(oe_kurzbz) JOIN public.tbl_benutzer b USING (uid) JOIN public.tbl_mitarbeiter ma ON(b.uid=ma.mitarbeiter_uid) JOIN public.tbl_person p USING(person_id) @@ -214,7 +205,14 @@ class Mitarbeiter_model extends DB_Model return $this->execQuery($qry, array($oe_kurzbz)); } - function getHeader($person_id) + /** + * get persondata for person_id + * + * @param $oe_kurzbz + * + * @return Array persondata + */ + public function getHeader($person_id) { $qry = " SELECT @@ -371,10 +369,8 @@ class Mitarbeiter_model extends DB_Model return $this->execQuery($qry); } - public function getMitarbeiter_uid($person_id){ - //TODO(Manu) refactor function - //and use in function getPersonAbteilung - //check function in Vertraege.php + public function getMitarbeiterUid($person_id) + { $qry = " SELECT tbl_benutzer.uid FROM tbl_mitarbeiter @@ -388,10 +384,6 @@ class Mitarbeiter_model extends DB_Model if (empty($data)) { return null; // No UID found } - //else - // $data = current($data); - - // $uid = $data->uid; $uid = isset($data[0]->uid) ? $data[0]->uid : null; return $uid; diff --git a/public/js/api/vertraege/person.js b/public/js/api/vertraege/person.js index b4c03b696..01ba309f0 100644 --- a/public/js/api/vertraege/person.js +++ b/public/js/api/vertraege/person.js @@ -62,7 +62,7 @@ export default { getLeitungOrg(oekurzbz){ return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/getLeitungOrg/' + oekurzbz); }, - getMitarbeiter_uid(person_id){ + getMitarbeiterUid(person_id){ return this.$fhcApi.get('api/frontend/v1/vertraege/vertraege/getMitarbeiter_uid/' + person_id); }, diff --git a/public/js/components/Vertraege/MitarbeiterDetails.js b/public/js/components/Vertraege/MitarbeiterDetails.js index 1d09d160c..26f95d2bf 100644 --- a/public/js/components/Vertraege/MitarbeiterDetails.js +++ b/public/js/components/Vertraege/MitarbeiterDetails.js @@ -52,7 +52,8 @@ export default { return this.$fhcApi.factory.vertraege.person .getHeader(person_id) .then(result => { - this.headerData = result.data[0]; + this.headerData = result.data; + }) .catch(this.$fhcAlert.handleSystemError); }, @@ -60,7 +61,7 @@ export default { return this.$fhcApi.factory.vertraege.person .getPersonAbteilung(person_id) .then(result => { - this.departmentData = result.data[0]; + this.departmentData = result.data; }) .catch(this.$fhcAlert.handleSystemError); }, @@ -68,7 +69,7 @@ export default { return this.$fhcApi.factory.vertraege.person .getLeitungOrg(oekurzbz) .then(result => { - this.leitungData = result.data[0]; + this.leitungData = result.data; }) .catch(this.$fhcAlert.handleSystemError); } diff --git a/public/js/components/Vertraege/Vertraege.js b/public/js/components/Vertraege/Vertraege.js index d4f2f783b..67a779638 100644 --- a/public/js/components/Vertraege/Vertraege.js +++ b/public/js/components/Vertraege/Vertraege.js @@ -452,7 +452,7 @@ export default { }, //methods for functionality ADDON KU printContract(){ - this.getMitarbeiter_uid().then(()=> { + this.getMitarbeiterUid().then(()=> { //check if at least 2 contracts chosen if(this.arraySelectedContracts.length < 2) { this.$fhcAlert.alertError(this.$p.t('vertrag', 'alertMindestensZweiVertraege')); @@ -478,9 +478,9 @@ export default { window.open(linkToPdf, '_blank'); }); }, - getMitarbeiter_uid(){ + getMitarbeiterUid(){ return this.endpoint - .getMitarbeiter_uid(this.person_id) + .getMitarbeiterUid(this.person_id) .then(response => { this.ma_uid = response.data; })