From ed83b5e6174fccc84dffa764b47c1d1a03f01c09 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Tue, 13 Oct 2026 07:56:59 +0200 Subject: [PATCH] zeitsperren: add Mailphrases, mailstatus handling backend and frontend --- .../api/frontend/v1/Zeitsperren.php | 52 +++++++++++----- .../components/Cis/Zeitsperren/Zeitsperren.js | 13 +++- system/phrasesupdate.php | 60 +++++++++++++++++++ 3 files changed, 108 insertions(+), 17 deletions(-) diff --git a/application/controllers/api/frontend/v1/Zeitsperren.php b/application/controllers/api/frontend/v1/Zeitsperren.php index a124a4ff2..aadc13958 100644 --- a/application/controllers/api/frontend/v1/Zeitsperren.php +++ b/application/controllers/api/frontend/v1/Zeitsperren.php @@ -181,7 +181,7 @@ class Zeitsperren extends FHCAPI_Controller if($zeitsperretyp_kurzbz == 'ZA') { - $res = $this->sendSanchoMailToVorgesetzten( + $this->sendSanchoMailToVorgesetzten( 'Sancho_Content_Zeitausgleich', array( 'beschreibung' =>$zeitsperretyp_kurzbz, @@ -330,7 +330,7 @@ class Zeitsperren extends FHCAPI_Controller if($zeitsperretyp_kurzbz == 'ZA') { - $res = $this->sendSanchoMailToVorgesetzten( + $this->sendSanchoMailToVorgesetzten( 'Sancho_Content_ZA_Aendern', array( 'beschreibung' =>$zeitsperretyp_kurzbz, @@ -424,26 +424,46 @@ class Zeitsperren extends FHCAPI_Controller $fullname = getData($this->PersonModel->getFullName($mauid)); $vorgesetzte = (array) getData($this->MitarbeiterModel->getVorgesetzte($mauid)); - $this->addMeta('bhvorgesetzte', $vorgesetzte); - $to = array(); $vorgesetzte_namen = array(); + $mailsent = false; + $msg = $this->p->t('zeitsperren', 'konnteKeinFreigabemailVersendetWerden'); - foreach($vorgesetzte as $vg) + if(count($vorgesetzte) > 0) { - $to[] = $vg->vorgesetzter .'@' . DOMAIN; - $vorgesetzter_fullname = getData($this->PersonModel->getFullName($vg->vorgesetzter)); - $vorgesetzte_namen[] = $vorgesetzter_fullname; + foreach($vorgesetzte as $vg) + { + $to[] = $vg->vorgesetzter .'@' . DOMAIN; + $vorgesetzter_fullname = getData($this->PersonModel->getFullName($vg->vorgesetzter)); + $vorgesetzte_namen[] = $vorgesetzter_fullname; + } + + $sancho_vorlage_data['vorgesetzter'] = implode(', ', $vorgesetzte_namen); + $sancho_vorlage_data['nameMitarbeiter'] = $fullname; + + $mailsent = sendSanchoMail( + $sancho_vorlage_kurzbz, + $sancho_vorlage_data, + implode(',', $to), + $subject + ); + + if($mailsent) + { + $msg = $this->p->t('zeitsperren', 'VorgesetzteInformiert', + array('vorgesetzte' => $sancho_vorlage_data['vorgesetzter'])); + } + else + { + $msg = $this->p->t('zeitsperren', 'fehlerBeimSendenAufgetreten', + array('vorgesetzte' => $sancho_vorlage_data['vorgesetzter'])); + } } - $sancho_vorlage_data['vorgesetzter'] = implode(', ', $vorgesetzte_namen); - $sancho_vorlage_data['nameMitarbeiter'] = $fullname; - - return sendSanchoMail( - $sancho_vorlage_kurzbz, - $sancho_vorlage_data, - implode(',', $to), - $subject + $res = (object) array( + 'mailsent' => $mailsent, + 'msg' => $msg ); + $this->addMeta('mailstatus', $res); } } diff --git a/public/js/components/Cis/Zeitsperren/Zeitsperren.js b/public/js/components/Cis/Zeitsperren/Zeitsperren.js index f08e61647..78822d75b 100644 --- a/public/js/components/Cis/Zeitsperren/Zeitsperren.js +++ b/public/js/components/Cis/Zeitsperren/Zeitsperren.js @@ -91,6 +91,15 @@ export default { .then(() => this.deleteZeitsperre(zeitsperre_id)) .catch(this.$fhcAlert.handleSystemError); }, + alertMailstatus(response) { + if(response?.meta?.mailstatus) { + if(response.meta.mailstatus.mailsent) { + this.$fhcAlert.alertInfo(response.meta.mailstatus.msg); + } else { + this.$fhcAlert.alertWarning(response.meta.mailstatus.msg); + } + } + }, saveZeitsperre(zeitsperreId = null) { const isNew = !zeitsperreId; @@ -109,8 +118,9 @@ export default { return this.$refs.dataZeitsperre .call(request) - .then(() => { + .then((response) => { this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave')); + this.alertMailstatus(response); this.reset(); this.reload(); @@ -122,6 +132,7 @@ export default { .call(ApiTimelocks.deleteZeitsperre(zeitsperre_id)) .then(response => { this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete')); + this.alertMailstatus(response); }) .catch(this.$fhcAlert.handleSystemError) .finally(()=> { diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 1769158af..51400ac1d 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -68138,6 +68138,66 @@ I have been informed that I am under no obligation to consent to the transmissio ) ) ), + array( + 'app' => 'core', + 'category' => 'zeitsperren', + 'phrase' => 'VorgesetzteInformiert', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Email wurde an {vorgesetzte} versandt', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Email was sent to {vorgesetzte}', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'zeitsperren', + 'phrase' => 'fehlerBeimSendenAufgetreten', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Fehler beim Senden des Freigabemails an {vorgesetzte}', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Error occured sending mail to {vorgesetzte}', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'zeitsperren', + 'phrase' => 'konnteKeinFreigabemailVersendetWerden', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Es konnte kein Freigabemail versendet werden, da kein Vorgesetzter eingetragen ist!', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'An approval mail could not be sent because the “Superior” field was left blank!', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), // Zeitsperren Sancho Subjects end );