From a56a80469298533b2431150488a36a82af0e9628 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Wed, 11 Jun 2025 13:46:23 +0200 Subject: [PATCH] - fix error with Event 'multiActionPrintHonorarvertrag' - Naming components Vertragsverwaltung, MitarbeiterHeader, CoreListMitarbeiter - link to Vorgesetzter, show Vorgesetzter without postTitel - Foto: if foto_sperre: show foto with lock --- .../api/frontend/v1/vertraege/Config.php | 13 +- public/js/api/factory/vertraege/vertraege.js | 25 +- .../components/DetailHeader/DetailHeader.js | 242 +++++++++++++----- .../Vertraege/MitarbeiterDetails.js | 110 -------- .../components/Vertraege/MitarbeiterHeader.js | 27 +- public/js/components/Vertraege/Vertraege.js | 1 + .../Vertraege/Vertragsverwaltung.js | 19 +- 7 files changed, 213 insertions(+), 224 deletions(-) delete mode 100644 public/js/components/Vertraege/MitarbeiterDetails.js diff --git a/application/controllers/api/frontend/v1/vertraege/Config.php b/application/controllers/api/frontend/v1/vertraege/Config.php index 72d38e93e..a4ebd8c48 100644 --- a/application/controllers/api/frontend/v1/vertraege/Config.php +++ b/application/controllers/api/frontend/v1/vertraege/Config.php @@ -37,6 +37,7 @@ class Config extends FHCAPI_Controller public function printDocument() { $params = []; + $menu = []; Events::trigger( 'multiActionPrintHonorarvertrag', @@ -47,7 +48,15 @@ class Config extends FHCAPI_Controller $params ); - //TODO(Manu) check warning - $this->terminateWithSuccess($menu[0]); + if (is_array($menu) && isset($menu[0])) + { + $this->terminateWithSuccess($menu[0]); + } + else + { + // $this->terminateWithError('Error with Event 'multiActionPrintHonorarvertrag'); + $this->terminateWithSuccess(); + + } } } diff --git a/public/js/api/factory/vertraege/vertraege.js b/public/js/api/factory/vertraege/vertraege.js index 8d39a24c9..c442bd8c3 100644 --- a/public/js/api/factory/vertraege/vertraege.js +++ b/public/js/api/factory/vertraege/vertraege.js @@ -22,12 +22,6 @@ export default { url: 'api/frontend/v1/vertraege/Vertraege/getAllVertraege/' + person_id }; }, -/* getAllContractsNotAssigned2(person_id) { - return { - method: 'get', - url: 'api/frontend/v1/vertraege/Vertraege/getAllContractsNotAssigned/' + person_id - }; - },*/ getAllContractsNotAssigned(person_id) { return { method: 'get', @@ -134,25 +128,32 @@ export default { }, getMitarbeiter(){ return { - method: 'post', + method: 'get', url: 'api/frontend/v1/vertraege/vertraege/getMitarbeiter/', }; - //return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/getMitarbeiter/'); }, getHeader(person_id){ - return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/getHeader/' + person_id); + return { + method: 'get', + url: 'api/frontend/v1/vertraege/vertraege/getHeader/' + person_id, + }; }, getPersonAbteilung(person_id){ - return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/getPersonAbteilung/' + person_id); + return { + method: 'get', + url: 'api/frontend/v1/vertraege/vertraege/getPersonAbteilung/' + person_id, + }; }, getLeitungOrg(oekurzbz){ - return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/getLeitungOrg/' + oekurzbz); + return { + method: 'get', + url: 'api/frontend/v1/vertraege/vertraege/getLeitungOrg/' + oekurzbz, + }; }, getMitarbeiterUid(person_id){ return { method: 'get', url: 'api/frontend/v1/vertraege/vertraege/getMitarbeiterUid/' + person_id }; - // return this.$fhcApi.get('api/frontend/v1/vertraege/vertraege/getMitarbeiterUid/' + person_id); }, }; \ No newline at end of file diff --git a/public/js/components/DetailHeader/DetailHeader.js b/public/js/components/DetailHeader/DetailHeader.js index a50b39e8c..8bed35beb 100644 --- a/public/js/components/DetailHeader/DetailHeader.js +++ b/public/js/components/DetailHeader/DetailHeader.js @@ -1,9 +1,21 @@ +import ApiCoreVertraege from "../../api/factory/vertraege/vertraege.js"; + export default { name: 'DetailHeader', + inject: { + domain: { + from: 'configDomain', + default: 'technikum-wien.at' + }, + }, props: { headerData: { type: Object, - required: true + required: false + }, + person_id: { + type: Number, + required: false }, typeHeader: { type: String, @@ -20,87 +32,177 @@ export default { appRoot() { return FHC_JS_DATA_STORAGE_OBJECT.app_root; }, + validatedHeaderData() { + if (this.typeHeader === 'student') return this.headerData; + if (this.typeHeader === 'mitarbeiter') return this.person_id; + return null; + } + }, + created(){ + if(this.person_id) { + this.getHeader(this.person_id); + + this.loadDepartmentData(this.person_id) + .then(() => { + // Call getLeitungOrg only after departmentData is loaded + this.getLeitungOrg(this.departmentData.oe_kurzbz); + }) + .catch((error) => { + console.error("Error loading department data:", error); + }); + } + }, + watch: { + person_id: { + handler(newVal) { + if (newVal) { + this.getHeader(this.person_id); + this.loadDepartmentData(this.person_id). + then(() => { + this.getLeitungOrg(this.departmentData.oe_kurzbz); + }); + } + }, + deep: true, + }, }, data(){ - return{}; + return{ + headerDataMa: {}, + departmentData: {}, + leitungData: {}, + }; }, methods: { - //TODO(Manu) finish for Vertragsverwaltung - getVorgesetzer(){}, + getHeader(person_id) { + return this.$api + .call(ApiCoreVertraege.getHeader(person_id)) + .then(result => { + this.headerDataMa = result.data; + + }) + .catch(this.$fhcAlert.handleSystemError); + }, + loadDepartmentData(person_id) { + return this.$api + .call(ApiCoreVertraege.getPersonAbteilung(person_id)) + .then(result => { + this.departmentData = result.data; + }) + .catch(this.$fhcAlert.handleSystemError); + }, + getLeitungOrg(oekurzbz){ + return this.$api + .call(ApiCoreVertraege.getLeitungOrg(oekurzbz)) + .then(result => { + this.leitungData = result.data; + }) + .catch(this.$fhcAlert.handleSystemError); + }, + redirectToLeitung(){ + this.$emit('redirectToLeitung', { + person_id: this.leitungData.person_id}); + } }, template: `
+ -
- - + ` -} \ No newline at end of file +} diff --git a/public/js/components/Vertraege/MitarbeiterDetails.js b/public/js/components/Vertraege/MitarbeiterDetails.js deleted file mode 100644 index 26f95d2bf..000000000 --- a/public/js/components/Vertraege/MitarbeiterDetails.js +++ /dev/null @@ -1,110 +0,0 @@ -export default { - data() { - return { - headerData: {}, - departmentData: {}, - leitungData: {}, - }; - }, - inject: { - domain: { - from: 'configDomain', - default: 'technikum-wien.at' - }, - }, - props: { - person_id: Number - }, - computed: { - appRoot() { - return FHC_JS_DATA_STORAGE_OBJECT.app_root; - }, - }, - created(){ - this.getHeader(this.person_id); - - // Ensure loadDepartmentData is awaited - this.loadDepartmentData(this.person_id) - .then(() => { - // Call getLeitungOrg only after departmentData is loaded - this.getLeitungOrg(this.departmentData.oe_kurzbz); - }) - .catch((error) => { - console.error("Error loading department data:", error); - }); - }, - watch: { - person_id: { - handler(newVal) { - if (newVal) { - this.getHeader(this.person_id); - this.loadDepartmentData(this.person_id). - then(() => { - this.getLeitungOrg(this.departmentData.oe_kurzbz); - }); - } - }, - deep: true, - }, - }, - methods: { - getHeader(person_id) { - return this.$fhcApi.factory.vertraege.person - .getHeader(person_id) - .then(result => { - this.headerData = result.data; - - }) - .catch(this.$fhcAlert.handleSystemError); - }, - loadDepartmentData(person_id) { - return this.$fhcApi.factory.vertraege.person - .getPersonAbteilung(person_id) - .then(result => { - this.departmentData = result.data; - }) - .catch(this.$fhcAlert.handleSystemError); - }, - getLeitungOrg(oekurzbz){ - return this.$fhcApi.factory.vertraege.person - .getLeitungOrg(oekurzbz) - .then(result => { - this.leitungData = result.data; - }) - .catch(this.$fhcAlert.handleSystemError); - } - }, - template: ` -
- -
-
- profilepicture -
- - -
-
{{headerData.titelpre}} {{headerData.vorname}} {{headerData.nachname}} {{headerData.titelpost}}
- {{departmentData.organisationseinheittyp_kurzbz}} {{departmentData.bezeichnung}} | Vorgesetzte/e {{leitungData.titelpre}} {{leitungData.vorname}} {{leitungData.nachname}} {{leitungData.titelpost}} -

- Email - - {{headerData.uid}}@{{domain}} - - - {{headerData.alias}}@{{domain}} - - | DW {{headerData?.telefonklappe}} -

- -
-
-
- -` -}; \ No newline at end of file diff --git a/public/js/components/Vertraege/MitarbeiterHeader.js b/public/js/components/Vertraege/MitarbeiterHeader.js index 175c61006..b49e069af 100644 --- a/public/js/components/Vertraege/MitarbeiterHeader.js +++ b/public/js/components/Vertraege/MitarbeiterHeader.js @@ -2,15 +2,11 @@ import {CoreFilterCmpt} from "../filter/Filter.js"; import FormInput from '../Form/Input.js'; export default { + name: 'CoreListMitarbeiter', components: { CoreFilterCmpt, FormInput }, -/* inject: { - cisRoot: { - from: 'cisRoot' - }, - },*/ emits: [ "selectedPerson" ], @@ -19,27 +15,6 @@ export default { type: Object, required: true }, - // maybe later nur fixe oder alle Mitarbeiter: gleich funktionsaufruf - //oder Mitarbeiter mit Verträgen -/* filterMa: { - type: Object, - required: true, - default: function () { - return { - active: true, - hasVertraege: false - }; - }, - },*/ -/* vertragsarten: { - type: Array, - required: false, - default: function (){ - return { - ['echterdv'] - } - } - }*/ }, data() { return { diff --git a/public/js/components/Vertraege/Vertraege.js b/public/js/components/Vertraege/Vertraege.js index f3afc843e..202f517f3 100644 --- a/public/js/components/Vertraege/Vertraege.js +++ b/public/js/components/Vertraege/Vertraege.js @@ -9,6 +9,7 @@ import ContractStati from './List/Status.js'; export default { + name:'CoreVertraege', components: { CoreFilterCmpt, BsModal, diff --git a/public/js/components/Vertraege/Vertragsverwaltung.js b/public/js/components/Vertraege/Vertragsverwaltung.js index def5fa9e6..300b7a49e 100644 --- a/public/js/components/Vertraege/Vertragsverwaltung.js +++ b/public/js/components/Vertraege/Vertragsverwaltung.js @@ -1,15 +1,16 @@ import MitarbeiterHeader from "./MitarbeiterHeader.js"; -import MitarbeiterDetails from "./MitarbeiterDetails.js"; +import FhcHeader from "../DetailHeader/DetailHeader.js"; import VertraegeMitarbeiter from "./Vertraege.js"; import VerticalSplit from "../verticalsplit/verticalsplit.js"; import ApiCoreVertraege from '../../api/factory/vertraege/vertraege.js'; export default { + name: 'Vertragsverwaltung', components: { VerticalSplit, MitarbeiterHeader, - MitarbeiterDetails, + FhcHeader, VertraegeMitarbeiter }, props: { @@ -26,11 +27,15 @@ export default { return { person_id: null, endpoint: ApiCoreVertraege + // } }, methods: { selectPerson(selected){ this.person_id = selected; + }, + redirectToLeitung(leitung){ + this.person_id = leitung.person_id; } }, template: ` @@ -40,12 +45,18 @@ export default {