From e908215b050aa9152803e849995e377c21d8f829 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Thu, 25 Sep 2025 17:40:39 +0200 Subject: [PATCH 1/5] use person_id from profilupdate request instead of logged in user to handle duplicates --- .../api/frontend/v1/ProfilUpdate.php | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/application/controllers/api/frontend/v1/ProfilUpdate.php b/application/controllers/api/frontend/v1/ProfilUpdate.php index bbfed651c..6752c805a 100644 --- a/application/controllers/api/frontend/v1/ProfilUpdate.php +++ b/application/controllers/api/frontend/v1/ProfilUpdate.php @@ -813,7 +813,7 @@ class ProfilUpdate extends FHCAPI_Controller $insert_adresse_id = $insertID; $insert_adresse_id = $this->getDataOrTerminateWithError($insert_adresse_id, $this->p->t('profilUpdate', 'profilUpdate_insertAdresse_error')); if ($insert_adresse_id) { - $this->handleDupplicateZustellAdressen($requested_change['zustelladresse'], $insert_adresse_id); + $this->handleDupplicateZustellAdressen($requested_change['zustelladresse'], $insert_adresse_id, $personID); } } //! DELETE @@ -829,7 +829,7 @@ class ProfilUpdate extends FHCAPI_Controller $requested_change['updatevon'] = getAuthUID(); $update_adresse_id = $this->AdresseModel->update($adresse_id, $requested_change); $update_adresse_id = $this->getDataOrTerminateWithError($update_adresse_id, $this->p->t('profilUpdate', 'profilUpdate_updateAdresse_error')); - $this->handleDupplicateZustellAdressen($requested_change['zustelladresse'], $update_adresse_id); + $this->handleDupplicateZustellAdressen($requested_change['zustelladresse'], $update_adresse_id, $personID); } return $insertID ?? null; @@ -852,7 +852,7 @@ class ProfilUpdate extends FHCAPI_Controller $insert_kontakt_id = $insertID; $insert_kontakt_id = $this->getDataOrTerminateWithError($insert_kontakt_id, $this->p->t('profilUpdate', 'profilUpdate_insertKontakt_error')); if ($insert_kontakt_id) { - $this->handleDupplicateZustellKontakte($requested_change['zustellung'], $insert_kontakt_id); + $this->handleDupplicateZustellKontakte($requested_change['zustellung'], $insert_kontakt_id, $personID); } } //! DELETE @@ -869,18 +869,18 @@ class ProfilUpdate extends FHCAPI_Controller $update_kontakt_id = $this->KontaktModel->update($kontakt_id, $requested_change); $update_kontakt_id = $this->getDataOrTerminateWithError($update_kontakt_id, $this->p->t('profilUpdate', 'profilUpdate_updateKontakt_error')); if ($update_kontakt_id) { - $this->handleDupplicateZustellKontakte($requested_change['zustellung'], $update_kontakt_id); + $this->handleDupplicateZustellKontakte($requested_change['zustellung'], $update_kontakt_id, $personID); } } return isset($insertID) ? $insertID : null; } - private function handleDupplicateZustellAdressen($zustellung, $adresse_id) + private function handleDupplicateZustellAdressen($zustellung, $adresse_id, $person_id) { if ($zustellung) { $this->PersonModel->addSelect("public.tbl_adresse.adresse_id"); $this->PersonModel->addJoin("public.tbl_adresse", "public.tbl_adresse.person_id = public.tbl_person.person_id"); - $zustellAdressenArray = $this->PersonModel->loadWhere(["public.tbl_person.person_id" => $this->pid, "zustelladresse" => TRUE]); + $zustellAdressenArray = $this->PersonModel->loadWhere(["public.tbl_person.person_id" => $person_id, "zustelladresse" => TRUE]); if (isError($zustellAdressenArray)) { $this->terminateWithError($this->p->t('profilUpdate', 'profilUpdate_loadingZustellAdressen_error')); } @@ -893,6 +893,8 @@ class ProfilUpdate extends FHCAPI_Controller return $adresse->adresse_id != $adresse_id; }); + $this->addMeta('bhzustelladressen', $zustellAdressenArray); + // remove the zustelladresse from all other zustelladressen foreach ($zustellAdressenArray as $adresse) { $this->AdresseModel->update($adresse->adresse_id, ["zustelladresse" => FALSE]); @@ -902,12 +904,12 @@ class ProfilUpdate extends FHCAPI_Controller } } - private function handleDupplicateZustellKontakte($zustellung, $kontakt_id) + private function handleDupplicateZustellKontakte($zustellung, $kontakt_id, $person_id) { if ($zustellung) { $this->PersonModel->addSelect("public.tbl_kontakt.kontakt_id"); $this->PersonModel->addJoin("public.tbl_kontakt", "public.tbl_kontakt.person_id = public.tbl_person.person_id"); - $zustellKontakteArray = $this->PersonModel->loadWhere(["public.tbl_person.person_id" => $this->pid, "zustellung" => TRUE]); + $zustellKontakteArray = $this->PersonModel->loadWhere(["public.tbl_person.person_id" => $person_id, "zustellung" => TRUE]); if (!isSuccess($zustellKontakteArray)) { return error($this->p->t('profilUpdate', 'profilUpdate_loadingZustellkontakte_error')); } From 2ede54b60e59c6f0f51e28d81a97cb3de1af4bbe Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Mon, 29 Sep 2025 13:31:15 +0200 Subject: [PATCH 2/5] ProfilUpdateView Tabulator add columns studiengang, orgform and oezuordnung, tune tabulator options e.g. headerfilter --- .../models/person/Profil_update_model.php | 59 +++++++++++++++- .../Cis/ProfilUpdate/ProfilUpdateView.js | 67 ++++++++++--------- 2 files changed, 94 insertions(+), 32 deletions(-) diff --git a/application/models/person/Profil_update_model.php b/application/models/person/Profil_update_model.php index ffb04b7e7..141044a2c 100644 --- a/application/models/person/Profil_update_model.php +++ b/application/models/person/Profil_update_model.php @@ -118,13 +118,47 @@ class Profil_update_model extends DB_Model $parameters = []; $query = " SELECT - profil_update_id, tbl_profil_update.uid, (tbl_person.vorname || ' ' || tbl_person.nachname) AS name , topic, requested_change, tbl_profil_update.updateamum, tbl_profil_update.updatevon, tbl_profil_update.insertamum, tbl_profil_update.insertvon, status, public.tbl_profil_update_status.bezeichnung_mehrsprachig[(" . $lang . ")] as status_translated, status_timestamp, status_message, attachment_id + profil_update_id, + tbl_profil_update.uid, + (tbl_person.vorname || ' ' || tbl_person.nachname) AS name , + topic, + requested_change, + tbl_profil_update.updateamum, + tbl_profil_update.updatevon, + tbl_profil_update.insertamum, + tbl_profil_update.insertvon, + status, + public.tbl_profil_update_status.bezeichnung_mehrsprachig[(" . $lang . ")] as status_translated, + status_timestamp, + status_message, + 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 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 JOIN public.tbl_benutzer ON public.tbl_benutzer.uid = public.tbl_student.student_uid JOIN public.tbl_person ON public.tbl_benutzer.person_id=public.tbl_person.person_id JOIN public.tbl_studiengang ON public.tbl_studiengang.studiengang_kz=public.tbl_student.studiengang_kz + LEFT JOIN ( + select + pss.prestudent_id, COALESCE(sp.orgform_kurzbz, pss.orgform_kurzbz) as orgform_kurzbz + from ( + select + prestudent_id, max(insertamum) as insertamum + from + public.tbl_prestudentstatus + where + datum <= NOW() + group by + prestudent_id + ) mpss + join + public.tbl_prestudentstatus pss on pss.prestudent_id = mpss.prestudent_id and pss.insertamum = mpss.insertamum + left join + lehre.tbl_studienplan sp on pss.studienplan_id = sp.studienplan_id + ) of ON of.prestudent_id = public.tbl_student.prestudent_id Where public.tbl_studiengang.oe_kurzbz IN ? "; $parameters[] = $oe_berechtigung; if ($whereClause) { @@ -144,12 +178,33 @@ class Profil_update_model extends DB_Model } } if ($mitarbeiterBerechtigung) { - $this->addSelect(["profil_update_id", "tbl_profil_update.uid", "(tbl_person.vorname || ' ' || tbl_person.nachname) AS name", "topic", "requested_change", "tbl_profil_update.updateamum", "tbl_profil_update.updatevon", "tbl_profil_update.insertamum", "tbl_profil_update.insertvon", "status", "public.tbl_profil_update_status.bezeichnung_mehrsprachig[(" . $lang . ")] AS status_translated", "status_timestamp", "status_message", "attachment_id"]); + $this->addSelect([ + "profil_update_id", + "tbl_profil_update.uid", + "(tbl_person.vorname || ' ' || tbl_person.nachname) AS name", + "topic", + "requested_change", + "tbl_profil_update.updateamum", + "tbl_profil_update.updatevon", + "tbl_profil_update.insertamum", + "tbl_profil_update.insertvon", + "status", + "public.tbl_profil_update_status.bezeichnung_mehrsprachig[(" . $lang . ")] AS status_translated", + "status_timestamp", + "status_message", + "attachment_id", + "COALESCE(NULL) as studiengang", + "COALESCE(NULL) as orgform", + "oe.bezeichnung as oezuordnung" + ]); $this->addJoin('tbl_profil_update_status', 'tbl_profil_update_status.status_kurzbz=tbl_profil_update.status'); $this->addJoin('tbl_mitarbeiter', 'tbl_mitarbeiter.mitarbeiter_uid=tbl_profil_update.uid'); $this->addJoin('tbl_benutzer', 'tbl_benutzer.uid=tbl_profil_update.uid'); $this->addJoin('tbl_person', 'tbl_benutzer.person_id=tbl_person.person_id'); + $this->addJoin('tbl_benutzerfunktion bf', 'bf.uid = tbl_benutzer.uid AND bf.funktion_kurzbz = \'oezuordnung\' AND NOW() >= COALESCE(bf.datum_von, \'1970-01-01\'::date) AND NOW() <= COALESCE(bf.datum_bis, \'2170-12-31\'::date)', 'LEFT'); + $this->addJoin('tbl_organisationseinheit oe', 'oe.oe_kurzbz = bf.oe_kurzbz', 'LEFT'); $mitarbeiterRequests = $this->loadWhere($whereClause); + if (isError($mitarbeiterRequests)) return error("db error: " . getData($mitarbeiterRequests)); $mitarbeiterRequests = getData($mitarbeiterRequests) ?: []; diff --git a/public/js/components/Cis/ProfilUpdate/ProfilUpdateView.js b/public/js/components/Cis/ProfilUpdate/ProfilUpdateView.js index 3b056b042..53a6a5041 100644 --- a/public/js/components/Cis/ProfilUpdate/ProfilUpdateView.js +++ b/public/js/components/Cis/ProfilUpdate/ProfilUpdateView.js @@ -184,13 +184,13 @@ export default { }, height: 600, - layout: "fitColumns", + layout: "fitDataStretchFrozen", columns: [ { title: this.$p.t("profilUpdate", "UID"), field: "uid", - minWidth: 200, + minWidth: 100, resizable: true, headerFilter: true, //responsive:0, @@ -203,12 +203,40 @@ export default { headerFilter: true, //responsive:0, }, + { + title: this.$p.t("lehre", "studiengang") + ' (' + this.$p.t("profil", "studentIn") + ')', + field: "studiengang", + minWidth: 50, + resizable: true, + headerFilter: "list", + headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:"asc"}, + //responsive:0, + }, + { + title: this.$p.t("lehre", "organisationsform") + ' (' + this.$p.t("profil", "studentIn") + ')', + field: "orgform", + minWidth: 50, + resizable: true, + headerFilter: "list", + headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:"asc"}, + //responsive:0, + }, + { + title: this.$p.t("lehre", "organisationseinheit") + ' (' + this.$p.t("profil", "mitarbeiterIn") + ')', + field: "oezuordnung", + minWidth: 200, + resizable: true, + headerFilter: "list", + headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:"asc"}, + //responsive:0, + }, { title: this.$p.t("profilUpdate", "Topic"), field: "topic", resizable: true, minWidth: 200, - headerFilter: true, + headerFilter: "list", + headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:"asc"}, //responsive:0, }, { @@ -223,7 +251,8 @@ export default { title: this.$p.t("profilUpdate", "Status"), field: "status_translated", hozAlign: "center", - headerFilter: true, + headerFilter: "list", + headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:"asc"}, formatter: (cell, para) => { let iconClasses = ""; let status = cell.getRow().getData().status; @@ -248,20 +277,11 @@ export default { { title: this.$p.t("profilUpdate", "actions"), headerSort: false, + frozen: true, formatter: (cell, params) => { - let STATUS_PENDING = - cell.getRow().getData().status == - this.profilUpdateStates["Pending"]; - + let details = this.$p.t('global', 'details'); let html = `
- - ${ - STATUS_PENDING ? - ` - ` - : - `` - } +
`; // Convert the HTML string to an HTML node @@ -276,19 +296,6 @@ export default { this.showAcceptDenyModal(cell.getRow().getData()); }); - if (STATUS_PENDING) { - node - .querySelector("#acceptButton") - .addEventListener("click", () => { - this.acceptProfilUpdate(cell.getRow().getData()); - }); - node - .querySelector("#denyButton") - .addEventListener("click", () => { - this.denyProfilUpdate(cell.getRow().getData()); - }); - } - return node; }, minWidth: 200, @@ -382,7 +389,7 @@ export default { }, }, created() { - this.$p.loadCategory("profilUpdate").then(() => { + this.$p.loadCategory(["profilUpdate", "lehre", "profil", "global"]).then(() => { this.categoryLoaded = true; }); }, From a1d616ff033710795ea8ddb98aacc4ecacec4681 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Mon, 6 Oct 2025 18:27:19 +0200 Subject: [PATCH 3/5] alter profilupdate api if heimatadresse is updated create new adress, readd missing isMitarbeiter info in frontend an provide/inject it --- .../api/frontend/v1/ProfilUpdate.php | 31 ++++++++++++++++--- application/libraries/ProfilLib.php | 2 +- .../Cis/Profil/MitarbeiterProfil.js | 2 +- .../Cis/Profil/ProfilModal/EditProfil.js | 5 +++ .../EditProfilComponents/EditAdresse.js | 6 +--- .../Profil/ProfilModal/EditProfilSelect.js | 7 +++-- 6 files changed, 38 insertions(+), 15 deletions(-) diff --git a/application/controllers/api/frontend/v1/ProfilUpdate.php b/application/controllers/api/frontend/v1/ProfilUpdate.php index 6752c805a..d0eb26858 100644 --- a/application/controllers/api/frontend/v1/ProfilUpdate.php +++ b/application/controllers/api/frontend/v1/ProfilUpdate.php @@ -825,12 +825,33 @@ class ProfilUpdate extends FHCAPI_Controller } //! UPDATE else { - $requested_change['updateamum'] = "NOW()"; - $requested_change['updatevon'] = getAuthUID(); - $update_adresse_id = $this->AdresseModel->update($adresse_id, $requested_change); - $update_adresse_id = $this->getDataOrTerminateWithError($update_adresse_id, $this->p->t('profilUpdate', 'profilUpdate_updateAdresse_error')); - $this->handleDupplicateZustellAdressen($requested_change['zustelladresse'], $update_adresse_id, $personID); + $curadresse_res = $this->AdresseModel->load($adresse_id); + $curadresse = ($this->getDataOrTerminateWithError($curadresse_res))[0]; + if($curadresse->heimatadresse) + { + $tmpadresse = array_merge((array) $curadresse, $requested_change); + unset($tmpadresse["adresse_id"]); + $tmpadresse['insertamum'] = "NOW()"; + $tmpadresse['insertvon'] = getAuthUID(); + $tmpadresse['person_id'] = $personID; + unset($tmpadresse["heimatadresse"]); + unset($tmpadresse["updateamum"]); + unset($tmpadresse["updatevon"]); + + $tmpadresse_res = $this->AdresseModel->insert($tmpadresse); + $tmpadresse_id = $this->getDataOrTerminateWithError($tmpadresse_res, $this->p->t('profilUpdate', 'profilUpdate_insertAdresse_error')); + $this->handleDupplicateZustellAdressen($requested_change['zustelladresse'], $tmpadresse_id, $personID); + } + else + { + $requested_change['updateamum'] = "NOW()"; + $requested_change['updatevon'] = getAuthUID(); + + $update_adresse_id = $this->AdresseModel->update($adresse_id, $requested_change); + $update_adresse_id = $this->getDataOrTerminateWithError($update_adresse_id, $this->p->t('profilUpdate', 'profilUpdate_updateAdresse_error')); + $this->handleDupplicateZustellAdressen($requested_change['zustelladresse'], $update_adresse_id, $personID); + } } return $insertID ?? null; } diff --git a/application/libraries/ProfilLib.php b/application/libraries/ProfilLib.php index 6e93a0943..e4bbf5a25 100644 --- a/application/libraries/ProfilLib.php +++ b/application/libraries/ProfilLib.php @@ -196,7 +196,7 @@ class ProfilLib{ private function getAdressenInfo($pid) { $this->ci->load->model("person/Adresse_model","AdresseModel"); - $adresse_res = $this->ci->AdresseModel->addSelect(["adresse_id", "strasse", "tbl_adressentyp.bezeichnung as typ", "plz", "ort", "zustelladresse", "gemeinde", "nation"]); + $adresse_res = $this->ci->AdresseModel->addSelect(["adresse_id", "strasse", "tbl_adressentyp.bezeichnung as typ", "plz", "ort", "heimatadresse", "zustelladresse", "gemeinde", "nation"]); $adresse_res = $this->ci->AdresseModel->addOrder("zustelladresse", "DESC"); $adresse_res = $this->ci->AdresseModel->addJoin("tbl_adressentyp", "typ=adressentyp_kurzbz"); diff --git a/public/js/components/Cis/Profil/MitarbeiterProfil.js b/public/js/components/Cis/Profil/MitarbeiterProfil.js index bf3c4cf49..559006a1b 100644 --- a/public/js/components/Cis/Profil/MitarbeiterProfil.js +++ b/public/js/components/Cis/Profil/MitarbeiterProfil.js @@ -328,7 +328,7 @@ export default { }, template: /*html*/ `
- +

{{item.title}}

@@ -156,7 +157,7 @@ export default {
- +
From b681ca29c17929bd7bfd85dbde11444d99234261 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Tue, 7 Oct 2025 15:13:07 +0200 Subject: [PATCH 4/5] add info alert for heimatadresse, tune duplicate zustellkontakt handling --- .../api/frontend/v1/ProfilUpdate.php | 12 +++-- .../models/person/Profil_update_model.php | 1 + public/js/components/Cis/Profil/Profil.js | 20 +++++--- .../Cis/Profil/ProfilComponents/Adresse.js | 2 +- .../EditProfilComponents/EditAdresse.js | 6 +-- .../EditProfilComponents/EditKontakt.js | 29 +++++------ .../Profil/ProfilModal/EditProfilSelect.js | 22 +++++++-- system/phrasesupdate.php | 48 +++++++++++++++++-- 8 files changed, 103 insertions(+), 37 deletions(-) diff --git a/application/controllers/api/frontend/v1/ProfilUpdate.php b/application/controllers/api/frontend/v1/ProfilUpdate.php index d0eb26858..e5129b678 100644 --- a/application/controllers/api/frontend/v1/ProfilUpdate.php +++ b/application/controllers/api/frontend/v1/ProfilUpdate.php @@ -873,7 +873,7 @@ class ProfilUpdate extends FHCAPI_Controller $insert_kontakt_id = $insertID; $insert_kontakt_id = $this->getDataOrTerminateWithError($insert_kontakt_id, $this->p->t('profilUpdate', 'profilUpdate_insertKontakt_error')); if ($insert_kontakt_id) { - $this->handleDupplicateZustellKontakte($requested_change['zustellung'], $insert_kontakt_id, $personID); + $this->handleDupplicateZustellKontakte($requested_change['zustellung'], $insert_kontakt_id, $requested_change['kontakttyp'], $personID); } } //! DELETE @@ -890,7 +890,7 @@ class ProfilUpdate extends FHCAPI_Controller $update_kontakt_id = $this->KontaktModel->update($kontakt_id, $requested_change); $update_kontakt_id = $this->getDataOrTerminateWithError($update_kontakt_id, $this->p->t('profilUpdate', 'profilUpdate_updateKontakt_error')); if ($update_kontakt_id) { - $this->handleDupplicateZustellKontakte($requested_change['zustellung'], $update_kontakt_id, $personID); + $this->handleDupplicateZustellKontakte($requested_change['zustellung'], $update_kontakt_id, $requested_change['kontakttyp'], $personID); } } return isset($insertID) ? $insertID : null; @@ -925,12 +925,16 @@ class ProfilUpdate extends FHCAPI_Controller } } - private function handleDupplicateZustellKontakte($zustellung, $kontakt_id, $person_id) + private function handleDupplicateZustellKontakte($zustellung, $kontakt_id, $kontakttyp, $person_id) { if ($zustellung) { $this->PersonModel->addSelect("public.tbl_kontakt.kontakt_id"); $this->PersonModel->addJoin("public.tbl_kontakt", "public.tbl_kontakt.person_id = public.tbl_person.person_id"); - $zustellKontakteArray = $this->PersonModel->loadWhere(["public.tbl_person.person_id" => $person_id, "zustellung" => TRUE]); + $zustellKontakteArray = $this->PersonModel->loadWhere([ + "public.tbl_person.person_id" => $person_id, + "zustellung" => TRUE, + "kontakttyp" => $kontakttyp + ]); if (!isSuccess($zustellKontakteArray)) { return error($this->p->t('profilUpdate', 'profilUpdate_loadingZustellkontakte_error')); } diff --git a/application/models/person/Profil_update_model.php b/application/models/person/Profil_update_model.php index 141044a2c..36f53ff75 100644 --- a/application/models/person/Profil_update_model.php +++ b/application/models/person/Profil_update_model.php @@ -63,6 +63,7 @@ class Profil_update_model extends DB_Model $this->addSelect(["public.tbl_profil_update.*", "public.tbl_person.vorname"]); $this->addJoin("public.tbl_benutzer", "public.tbl_benutzer.uid = public.tbl_profil_update.uid"); $this->addJoin("public.tbl_person", "public.tbl_person.person_id = public.tbl_benutzer.person_id"); + $this->db->order_by('COALESCE(public.tbl_profil_update.updateamum, public.tbl_profil_update.insertamum)', 'DESC', false); $res = $this->loadWhere($whereClause); if (isError($res)) { return $res; diff --git a/public/js/components/Cis/Profil/Profil.js b/public/js/components/Cis/Profil/Profil.js index 8ca2cfe8e..da205816d 100644 --- a/public/js/components/Cis/Profil/Profil.js +++ b/public/js/components/Cis/Profil/Profil.js @@ -120,10 +120,10 @@ export const Profil = { }, sortProfilUpdates: (ele1, ele2) => { let result = 0; - if (ele1.status === "pending") { + if (ele1.status.toLowerCase() === "pending") { result = -1; - } else if (ele1.status === "accepted") { - result = ele2.status === "rejected" ? -1 : 1; + } else if (ele1.status.toLowerCase() === "accepted") { + result = ele2.status.toLowerCase() === "rejected" ? -1 : 1; } else { result = 1; } @@ -226,10 +226,13 @@ export const Profil = { kontakteArray = kontakteArray.concat( this.data.profilUpdates .filter((update) => { - return update.requested_change.zustellung; + return update.status === 'Pending' && update.requested_change.zustellung; }) .map((kontant) => { - return kontant.requested_change.kontakt_id; + return { + kontakt_id: kontant.requested_change.kontakt_id, + kontakttyp: kontant.requested_change.kontakttyp + }; }) ); } @@ -241,7 +244,7 @@ export const Profil = { .every((kontakt) => this.data.profilUpdates.some( (update) => - update.requested_change.kontakt_id == kontakt.kontakt_id + update.status === 'Pending' && update.requested_change.kontakt_id == kontakt.kontakt_id ) ) ) { @@ -251,7 +254,10 @@ export const Profil = { return kontakt.zustellung; }) .map((kon) => { - return kon.kontakt_id; + return { + kontakt_id: kon.kontakt_id, + kontakttyp: kon.kontakttyp + }; }) ); } diff --git a/public/js/components/Cis/Profil/ProfilComponents/Adresse.js b/public/js/components/Cis/Profil/ProfilComponents/Adresse.js index 5ba2f1fe7..7ec1213e2 100644 --- a/public/js/components/Cis/Profil/ProfilComponents/Adresse.js +++ b/public/js/components/Cis/Profil/ProfilComponents/Adresse.js @@ -4,7 +4,7 @@ export default { view:String, withZustelladresse:{ type:Boolean, - default:false, + default:true, }, }, data(){ diff --git a/public/js/components/Cis/Profil/ProfilModal/EditProfilComponents/EditAdresse.js b/public/js/components/Cis/Profil/ProfilModal/EditProfilComponents/EditAdresse.js index 76e08b974..8f0724f9c 100644 --- a/public/js/components/Cis/Profil/ProfilModal/EditProfilComponents/EditAdresse.js +++ b/public/js/components/Cis/Profil/ProfilModal/EditProfilComponents/EditAdresse.js @@ -160,10 +160,8 @@ export default {
-
-
+
{{$p.t('profilUpdate','zustell_adressen_warning')}} -
@@ -173,7 +171,7 @@ export default {
diff --git a/public/js/components/Cis/Profil/ProfilModal/EditProfilComponents/EditKontakt.js b/public/js/components/Cis/Profil/ProfilModal/EditProfilComponents/EditKontakt.js index 4f978f636..b484c9dd5 100644 --- a/public/js/components/Cis/Profil/ProfilModal/EditProfilComponents/EditKontakt.js +++ b/public/js/components/Cis/Profil/ProfilModal/EditProfilComponents/EditKontakt.js @@ -30,12 +30,15 @@ export default { // if the kontakt is already a zustellungskontakt when the user is editing the kontakt, then no warning is shown and the zustellung will be overwritten if (JSON.parse(this.originalValue).zustellung) { return false; - } + } + const kontakteOfSelectedType = this.zustellKontakteCount.filter((element) => { + return element.kontakttyp === this.data?.kontakttyp + }); // if zustellKontakteCount is not 0 and the own kontakt has the flag zustellung set to true - if (!this.zustellKontakteCount.includes(this.data.kontakt_id)) { - return this.data.zustellung && this.zustellKontakteCount.length; + if (!this.zustellKontakteCount.some((element) => element.kontakt_id === this.data.kontakt_id)) { + return this.data.zustellung && kontakteOfSelectedType.length; } - return this.zustellKontakteCount.length >= 2 && this.data.zustellung; + return this.kontakteOfSelectedType.length >= 2 && this.data.zustellung; }, isChanged: function () { //? returns true if the original passed data object was changed @@ -57,16 +60,6 @@ export default {
- -
-
-
- {{$p.t('profilUpdate','zustell_kontakte_warning')}} -
-
-
- -
@@ -108,6 +101,14 @@ export default {
+ +
+
+ {{$p.t('profilUpdate','zustell_kontakte_warning')}} +
+
+ +
{{$p.t('profilUpdate','zustellungsKontakt')}} diff --git a/public/js/components/Cis/Profil/ProfilModal/EditProfilSelect.js b/public/js/components/Cis/Profil/ProfilModal/EditProfilSelect.js index 60dd759b3..921758ae0 100644 --- a/public/js/components/Cis/Profil/ProfilModal/EditProfilSelect.js +++ b/public/js/components/Cis/Profil/ProfilModal/EditProfilSelect.js @@ -148,16 +148,32 @@ export default {