refactor function getHeader, get mitarbeiter_uid as prop instead of using function getMitarbeiterUid

This commit is contained in:
ma0068
2025-07-08 15:01:54 +02:00
parent d1e35b1851
commit 3ca49c5574
7 changed files with 55 additions and 83 deletions
@@ -29,7 +29,6 @@ class Vertraege extends FHCAPI_Controller
'getHeader' => ['vertrag/mitarbeiter:r'],
'getPersonAbteilung' => ['vertrag/mitarbeiter:r'],
'getLeitungOrg' => ['vertrag/mitarbeiter:r'],
'getMitarbeiterUid' => ['vertrag/mitarbeiter:r'],
]);
//Load Models and Libraries
@@ -684,11 +683,11 @@ class Vertraege extends FHCAPI_Controller
return $this->terminateWithSuccess(getData($result));
}
public function getPersonAbteilung($person_id)
public function getPersonAbteilung($mitarbeiter_uid)
{
$this->load->model('ressource/Mitarbeiter_model', 'Mitarbeitermodel');
$result = $this->Mitarbeitermodel->getPersonAbteilung($person_id);
$result = $this->Mitarbeitermodel->getPersonAbteilung($mitarbeiter_uid);
$data = $this->getDataOrTerminateWithError($result);
@@ -716,15 +715,4 @@ class Vertraege extends FHCAPI_Controller
$this->terminateWithSuccess(current($data));
}
public function getMitarbeiterUid($person_id)
{
$this->load->model('ressource/Mitarbeiter_model', 'Mitarbeitermodel');
$result = $this->Mitarbeitermodel->getMitarbeiterUid($person_id);
//no error here: ma_uid | null as result
$this->terminateWithSuccess($result);
}
}
@@ -151,12 +151,8 @@ class Mitarbeiter_model extends DB_Model
*
* @return Array benutzerfunktionsdata
*/
public function getPersonAbteilung($person_id)
public function getPersonAbteilung($uid)
{
$uid = $this->getMitarbeiterUid($person_id);
if (!$uid) {
return null;
}
$qry = "
SELECT
bf.benutzerfunktion_id, bf.fachbereich_kurzbz, bf.uid, bf.funktion_kurzbz, bf.updateamum,
@@ -213,7 +209,7 @@ class Mitarbeiter_model extends DB_Model
{
$qry = "
SELECT
*
titelpre, vorname, nachname, titelpost, foto, foto_sperre, person_id, alias, telefonklappe
FROM
public.tbl_person
JOIN public.tbl_benutzer b USING(person_id)
@@ -382,26 +378,6 @@ class Mitarbeiter_model extends DB_Model
return $this->execQuery($qry);
}
public function getMitarbeiterUid($person_id)
{
$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;
return $uid;
}
/**
* Gets Mitarbeiter for a certain Lehrveranstaltung.
*
+2 -2
View File
@@ -22,10 +22,10 @@ export default {
url: 'api/frontend/v1/vertraege/vertraege/getHeader/' + person_id,
};
},
getPersonAbteilung(person_id){
getPersonAbteilung(mitarbeiter_uid){
return {
method: 'get',
url: 'api/frontend/v1/vertraege/vertraege/getPersonAbteilung/' + person_id,
url: 'api/frontend/v1/vertraege/vertraege/getPersonAbteilung/' + mitarbeiter_uid,
};
},
getLeitungOrg(oekurzbz){
@@ -42,7 +42,7 @@ export default {
if(this.person_id) {
this.getHeader(this.person_id);
this.loadDepartmentData(this.person_id)
this.loadDepartmentData(this.mitarbeiter_uid)
.then(() => {
// Call getLeitungOrg only after departmentData is loaded
this.getLeitungOrg(this.departmentData.oe_kurzbz);
@@ -83,9 +83,9 @@ export default {
})
.catch(this.$fhcAlert.handleSystemError);
},
loadDepartmentData(person_id) {
loadDepartmentData(mitarbeiter_uid) {
return this.$api
.call(ApiDetailHeader.getPersonAbteilung(person_id))
.call(ApiDetailHeader.getPersonAbteilung(mitarbeiter_uid))
.then(result => {
this.departmentData = result.data;
})
@@ -106,7 +106,9 @@ export default {
},
template: `
<div class="core-header d-flex justify-content-start align-items-center w-100 overflow-auto pb-3 gap-3" style="max-height:9rem; min-width: 37.5rem;">
<template v-if="typeHeader==='student'">
{{headerData}}
<div
v-for="person in headerData"
:key="person.person_id"
@@ -8,7 +8,7 @@ export default {
FormInput
},
emits: [
"selectedPerson"
"selectionChanged"
],
props: {
endpoint: {
@@ -66,7 +66,7 @@ export default {
event: 'rowSelectionChanged',
handler: this.rowSelectionChanged
},
{
{
event: 'tableBuilt',
handler: async() => {
@@ -103,13 +103,19 @@ export default {
}
],
selectedPerson: null,
selectedUid: null,
isFilterSet: false,
}
},
methods: {
rowSelectionChanged(data) {
this.selectedPerson = data[0].person_id;
this.$emit('selectedPerson', this.selectedPerson);
this.selectedUid = data[0].uid;
this.$emit('selectionChanged', {
person_id: this.selectedPerson,
uid: this.selectedUid
});
},
onSwitchChange() {
if (this.isFilterSet) {
+23 -30
View File
@@ -37,6 +37,10 @@ export default {
type: [Number],
required: true
},
mitarbeiter_uid: {
type: [String],
required: true
},
},
computed: {
appRoot() {
@@ -210,7 +214,6 @@ export default {
triggeredData: [],
childData: {},
isFilterSet: false,
ma_uid: null,
clickedRows: [],
arraySelectedContracts: [],
}
@@ -460,39 +463,29 @@ export default {
},
//methods for functionality ADDON KU
printContract(){
this.getMitarbeiterUid().then(()=> {
//check if at least 2 contracts chosen
if(this.arraySelectedContracts.length < 2) {
this.$fhcAlert.alertError(this.$p.t('vertrag', 'alertMindestensZweiVertraege'));
return;
}
//check if at least 2 contracts chosen
if(this.arraySelectedContracts.length < 2) {
this.$fhcAlert.alertError(this.$p.t('vertrag', 'alertMindestensZweiVertraege'));
return;
}
//check if status=="Genehmigt"
const statusNotGenehmigtExists = this.arraySelectedContracts.some(([_, status]) => status !== 'Genehmigt');
if(statusNotGenehmigtExists) {
this.$fhcAlert.alertError(this.$p.t('vertrag', 'alertOnlyApprovedContracts'));
return;
}
//check if status=="Genehmigt"
const statusNotGenehmigtExists = this.arraySelectedContracts.some(([_, status]) => status !== 'Genehmigt');
if(statusNotGenehmigtExists) {
this.$fhcAlert.alertError(this.$p.t('vertrag', 'alertOnlyApprovedContracts'));
return;
}
//build String to Print PDF
let vertragString = '';
//build String to Print PDF
let vertragString = '';
this.arraySelectedContracts.forEach(element => {
vertragString += '&vertrag_id[]=' + element[0].toString();
});
this.arraySelectedContracts.forEach(element => {
vertragString += '&vertrag_id[]=' + element[0].toString();
});
let linkToPdf = this.dataPrintHonorar.link +
'content/pdfExport.php?xml=' + this.dataPrintHonorar.xml + '&xsl=' + this.dataPrintHonorar.xsl + '&mitarbeiter_uid=' + this.ma_uid + vertragString + '&output=pdf&uid=' + this.ma_uid;
window.open(linkToPdf, '_blank');
});
},
getMitarbeiterUid(){
return this.$api
.call(this.endpoint.getMitarbeiterUid(this.person_id))
.then(response => {
this.ma_uid = response.data;
})
.catch(this.$fhcAlert.handleSystemError);
let linkToPdf = this.dataPrintHonorar.link +
'content/pdfExport.php?xml=' + this.dataPrintHonorar.xml + '&xsl=' + this.dataPrintHonorar.xsl + '&mitarbeiter_uid=' + this.mitarbeiter_uid + vertragString + '&output=pdf&uid=' + this.mitarbeiter_uid;
window.open(linkToPdf, '_blank');
},
toggleRowClick(contractId, status, bezeichnung) {
const index = this.arraySelectedContracts.findIndex(
@@ -28,12 +28,14 @@ export default {
data() {
return {
person_id: null,
mitarbeiter_uid: null,
endpoint: ApiCoreVertraege
}
},
methods: {
selectPerson(selected){
this.person_id = selected;
handleSelection(selection) {
this.mitarbeiter_uid = selection.uid;
this.person_id = selection.person_id;
},
redirectToLeitung(leitung){
this.person_id = leitung.person_id;
@@ -41,7 +43,7 @@ export default {
},
template: `
<!-- Navigation component -->
<core-navigation-cmpt></core-navigation-cmpt>
<core-navigation-cmpt/>
<div class="vv">
<main>
@@ -50,7 +52,8 @@ export default {
<div class="d-flex flex-column" style="height: 100%;">
<mitarbeiter-header
:endpoint="endpoint"
@selectedPerson="selectPerson"/>
@selectionChanged="handleSelection"
/>
</div>
</template>
<template #bottom>
@@ -60,7 +63,11 @@ export default {
typeHeader="mitarbeiter"
@redirectToLeitung="redirectToLeitung"
></fhc-header>
<vertraege-mitarbeiter :endpoint="endpoint" :person_id="this.person_id"/>
<vertraege-mitarbeiter
:endpoint="endpoint"
:person_id="this.person_id"
:mitarbeiter_uid="this.mitarbeiter_uid"
/>
</div>
</template>
</vertical-split>