From 5140d9de31fae5b5b63595823f5933ddb478eedf Mon Sep 17 00:00:00 2001 From: ma0068 Date: Mon, 16 Jun 2025 15:38:56 +0200 Subject: [PATCH] refactor Accepting and Unaccepting Documents, new Error Message if more than one document per type, refactor List Accepted Documents --- .../api/frontend/v1/stv/Dokumente.php | 35 +++++++++---------- .../Details/Dokumente/List/Accepted.js | 21 +++++++++++ .../Details/Dokumente/List/Unaccepted.js | 23 ++++++++++++ system/phrasesupdate.php | 20 +++++++++++ 4 files changed, 81 insertions(+), 18 deletions(-) diff --git a/application/controllers/api/frontend/v1/stv/Dokumente.php b/application/controllers/api/frontend/v1/stv/Dokumente.php index eca3d02ad..686094620 100644 --- a/application/controllers/api/frontend/v1/stv/Dokumente.php +++ b/application/controllers/api/frontend/v1/stv/Dokumente.php @@ -94,33 +94,29 @@ class Dokumente extends FHCAPI_Controller if (hasData($result)) { $data = getData($result); - array_push($arrayAccepted, current($data)); + foreach ($data as $value) + { + array_push($arrayAccepted, $value); + } } } - //Merge with Data of Akte + //Array for total list of accepted documents $newDataMap = []; - //helper, lookupArray foreach ($arrayAccepted as $item) { - $newDataMap[$item->dokument_kurzbz] = $item; + $newDataMap[] = (array)$item; } - //add Data of Akte to PrestudentData - foreach ($resultPreDoc as $obj) { - if (isset($newDataMap[$obj->dokument_kurzbz])) { - $obj->akte_id = $newDataMap[$obj->dokument_kurzbz]->akte_id; - $obj->hochgeladenamum = $newDataMap[$obj->dokument_kurzbz]->hochgeladenamum; - $obj->titel_intern = $newDataMap[$obj->dokument_kurzbz]->titel_intern; - $obj->nachgereicht = $newDataMap[$obj->dokument_kurzbz]->nachgereicht; - $obj->akzeptiertamum = $newDataMap[$obj->dokument_kurzbz]->akzeptiertamum; - $obj->dms_id = $newDataMap[$obj->dokument_kurzbz]->dms_id; - $obj->infotext = $newDataMap[$obj->dokument_kurzbz]->infotext; - $obj->anmerkung_intern = $newDataMap[$obj->dokument_kurzbz]->anmerkung_intern; - $obj->nachgereicht_am = $newDataMap[$obj->dokument_kurzbz]->nachgereicht_am; - $obj->vorhanden = $newDataMap[$obj->dokument_kurzbz]->vorhanden; + $listExistingKurzbz = array_column($newDataMap, 'dokument_kurzbz'); + + foreach ($resultPreDoc as $item) + { + if (!in_array($item->dokument_kurzbz, $listExistingKurzbz)) + { + $newDataMap[] = (array)$item; } } - $this->terminateWithSuccess($resultPreDoc); + $this->terminateWithSuccess($newDataMap); } public function deleteZuordnung($prestudent_id, $dokument_kurzbz) @@ -215,6 +211,9 @@ class Dokumente extends FHCAPI_Controller $uid = getAuthUid(); + //check if more than 1 dokumentkurzbz + //if() + $result = $this->DokumentprestudentModel->insert( [ 'prestudent_id' => $prestudent_id, diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Dokumente/List/Accepted.js b/public/js/components/Stv/Studentenverwaltung/Details/Dokumente/List/Accepted.js index eea3c3b48..742d01360 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Dokumente/List/Accepted.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Dokumente/List/Accepted.js @@ -237,6 +237,27 @@ export default { }); }, deleteZuordnung(selected) { + + //Check if more than one document per dokument_kurzbz should be unaccepted + const counts = {}; + for (const item of selected) + { + const value = item.dokument_kurzbz; + if (!counts[value]) { + counts[value] = 1; + } + else { + counts[value]++; + } + + if (counts[value] > 1) { + { + this.$fhcAlert.alertError(this.$p.t('dokumente', 'error_duplicateDokument_kurzbz')); + return; + } + } + } + Promise.allSettled( selected.map(e => this.$api diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Dokumente/List/Unaccepted.js b/public/js/components/Stv/Studentenverwaltung/Details/Dokumente/List/Unaccepted.js index 3ca9bc136..8a0a24667 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Dokumente/List/Unaccepted.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Dokumente/List/Unaccepted.js @@ -234,6 +234,27 @@ export default { this.$refs.modalEdit.open(akte_id); }, acceptDocuments(selected){ + + //Check if more than one document per dokument_kurzbz should be accepted + const counts = {}; + for (const item of selected) + { + const value = item.dokument_kurzbz; + if (!counts[value]) { + counts[value] = 1; + } + else { + counts[value]++; + } + + if (counts[value] > 1) { + { + this.$fhcAlert.alertError(this.$p.t('dokumente', 'error_duplicateDokument_kurzbz')); + return; + } + } + } + Promise .allSettled( selected.map(e => @@ -318,6 +339,8 @@ export default { @click:new="actionUploadFile" >