diff --git a/application/controllers/api/frontend/v1/Zeitsperren.php b/application/controllers/api/frontend/v1/Zeitsperren.php index 96a76da31..b5ff1105b 100644 --- a/application/controllers/api/frontend/v1/Zeitsperren.php +++ b/application/controllers/api/frontend/v1/Zeitsperren.php @@ -9,6 +9,12 @@ class Zeitsperren extends FHCAPI_Controller parent::__construct([ 'getZeitsperrenUser' => self::PERM_LOGGED, 'getTypenZeitsperren' => self::PERM_LOGGED, + 'getTypenErreichbarkeit' => self::PERM_LOGGED, + 'getStunden' => self::PERM_LOGGED, + 'loadZeitsperre' => self::PERM_LOGGED, + 'add' => self::PERM_LOGGED, + 'update' => self::PERM_LOGGED, + 'delete' => self::PERM_LOGGED, ]); // Load Libraries @@ -24,6 +30,8 @@ class Zeitsperren extends FHCAPI_Controller // Load models $this->load->model('ressource/Zeitsperre_model', 'ZeitsperreModel'); $this->load->model('ressource/Zeitsperretyp_model', 'ZeitsperretypModel'); + $this->load->model('ressource/Erreichbarkeit_model', 'ErreichbarkeitModel'); + $this->load->model('ressource/Stunde_model', 'StundeModel'); } public function getZeitsperrenUser($uid) @@ -46,4 +54,119 @@ class Zeitsperren extends FHCAPI_Controller $this->terminateWithSuccess((getData($result) ?: [])); } + public function getTypenErreichbarkeit() + { + $result = $this->ErreichbarkeitModel->load(); + if (isError($result)) { + $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); + } + $this->terminateWithSuccess((getData($result) ?: [])); + } + + public function getStunden() + { + $this->StundeModel->addOrder('stunde', 'ASC'); + $result = $this->StundeModel->load(); + if (isError($result)) { + $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); + } + $this->terminateWithSuccess((getData($result) ?: [])); + } + + public function loadZeitsperre($zeitsperre_id) + { + $result = $this->ZeitsperreModel->addSelect( + 'campus.tbl_zeitsperre.*, typ.*, + ma.person_id AS ma_person_id, ma.vorname AS ma_vorname, ma.nachname AS ma_nachname, + ma.titelpre AS ma_titelpre, ma.titelpost AS ma_titelpost' + ); + $this->ZeitsperreModel->addJoin('campus.tbl_zeitsperretyp typ', 'ON (typ.zeitsperretyp_kurzbz = campus.tbl_zeitsperre.zeitsperretyp_kurzbz)'); + $this->ZeitsperreModel->addJoin('public.tbl_benutzer ben', 'ON (ben.uid = campus.tbl_zeitsperre.vertretung_uid)', 'LEFT'); + $this->ZeitsperreModel->addJoin('public.tbl_person ma', 'ON (ma.person_id = ben.person_id)', 'LEFT'); + $result = $this->ZeitsperreModel->loadWhere( + array('zeitsperre_id' => $zeitsperre_id) + ); + + if (isError($result)) { + $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); + } + $this->terminateWithSuccess((current(getData($result)) ?: [])); + } + + public function add($mitarbeiter_uid) + { + $this->form_validation->set_rules('zeitsperretyp_kurzbz', 'Grund Zeitsperre', 'required', [ + 'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Grund Zeitsperre']) + ]); + + $this->form_validation->set_rules('vondatum', 'VON-DATUM', 'required', [ + 'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'VON-DATUM']) + ]); + + $this->form_validation->set_rules('bisdatum', 'BIS-DATUM', 'required', [ + 'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'BIS-DATUM']) + ]); + + if ($this->form_validation->run() == false) + { + $this->terminateWithValidationErrors($this->form_validation->error_array()); + } + + $bezeichnung = $this->input->post('bezeichnung'); + $vondatum = $this->input->post('vondatum'); + $vonstunde = $this->input->post('vonstunde'); + $bisdatum = $this->input->post('bisdatum'); + $bisstunde = $this->input->post('bisstunde'); + //$vonIso = $this->input->post('vonISO'); //Timestamp für Stunde + //$bisIso = $this->input->post('bisISO'); //Timestamp für Stunde + $erreichbarkeit_kurzbz = $this->input->post('erreichbarkeit_kurzbz'); + $vertretung_uid = $this->input->post('vertretung_uid'); + $zeitsperretyp_kurzbz = $this->input->post('zeitsperretyp_kurzbz'); + + // $this->terminateWithError("for later: Stunden Timestamps: VON " . $vonIso . " BIS " . $bisIso, self::ERROR_TYPE_GENERAL); + + + $uid = getAuthUID(); + + $result = $this->ZeitsperreModel->insert( + [ + 'mitarbeiter_uid' => $mitarbeiter_uid, + 'bezeichnung' => $bezeichnung, + 'vondatum' => $vondatum, + 'vonstunde' => $vonstunde, + 'bisdatum' => $bisdatum, + 'bisstunde' => $bisstunde, + 'erreichbarkeit_kurzbz' => $erreichbarkeit_kurzbz, + 'zeitsperretyp_kurzbz' => $zeitsperretyp_kurzbz, + 'vertretung_uid' => $vertretung_uid, + 'insertvon' => $uid, + 'insertamum' => date('c'), + ] + ); + $data = $this->getDataOrTerminateWithError($result); + + $this->terminateWithSuccess($data); + } + + public function update() + { + + } + + public function delete($zeitsperre_id) + { + if (!is_numeric($zeitsperre_id) || (int)$zeitsperre_id <= 0) + { + $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id' => 'Zeitsperre_id']), self::ERROR_TYPE_GENERAL); + } + $result = $this->ZeitsperreModel->delete( + array('zeitsperre_id' => $zeitsperre_id) + ); + + if (isError($result)) { + $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); + } + $this->terminateWithSuccess((getData($result) ?: [])); + } + } diff --git a/application/models/ressource/Zeitsperre_model.php b/application/models/ressource/Zeitsperre_model.php index 25eee4b9a..aa90cab59 100644 --- a/application/models/ressource/Zeitsperre_model.php +++ b/application/models/ressource/Zeitsperre_model.php @@ -66,15 +66,12 @@ class Zeitsperre_model extends DB_Model * get Zeitsperren of a user * * @param $uid mitarbeiteruid + * @param $bisgrenze @true show only entries of actual business year (1.9.- 31.8.) + * * @return array */ public function getZeitsperrenUser($uid, $bisgrenze=true) { - //TODO(Manu) check if bisDate is needed -/* $parametersArray = array(); - array_push($parametersArray, $uid); - $parametersArray = [$uid];*/ - $qry = " SELECT tbl_zeitsperre.*, tbl_zeitsperretyp.*, tbl_erreichbarkeit.farbe AS erreichbarkeit_farbe, tbl_erreichbarkeit.beschreibung AS erreichbarkeit_beschreibung FROM (campus.tbl_zeitsperre JOIN campus.tbl_zeitsperretyp USING (zeitsperretyp_kurzbz)) diff --git a/application/views/CisRouterView/CisRouterView.php b/application/views/CisRouterView/CisRouterView.php index ab22fbb81..67200a1bb 100644 --- a/application/views/CisRouterView/CisRouterView.php +++ b/application/views/CisRouterView/CisRouterView.php @@ -23,6 +23,7 @@ $includesArray = array( 'public/css/components/FormUnderline.css', 'public/css/Cis4/Cms.css', 'public/css/Cis4/Studium.css', + 'public/css/Cis4/Zeitsperren.css', ), 'customJSs' => array( 'vendor/npm-asset/primevue/accordion/accordion.min.js', diff --git a/public/css/Cis4/Zeitsperren.css b/public/css/Cis4/Zeitsperren.css new file mode 100644 index 000000000..7ba9eae9e --- /dev/null +++ b/public/css/Cis4/Zeitsperren.css @@ -0,0 +1,29 @@ +/* Repositioning clear icon Datepicker for not being outside the textfield */ +/* Wrapper */ +.dp__input_wrap { + position: relative; +} + +/* calender-Icon left */ +.dp__input_icon { + position: absolute; + left: 10px; + right: auto; + top: 50%; + transform: translateY(-50%); +} + +/* Clear-Icon right */ +.dp__clear_icon { + position: absolute; + right: 10px; + left: auto; + top: 50%; + transform: translateY(-50%); +} + +/* padding for Icons */ +.dp__input { + padding-left: 36px !important; + padding-right: 36px !important; +} diff --git a/public/js/api/factory/cis/zeitsperren.js b/public/js/api/factory/cis/zeitsperren.js index bb8d4d891..ea37fc0e6 100644 --- a/public/js/api/factory/cis/zeitsperren.js +++ b/public/js/api/factory/cis/zeitsperren.js @@ -27,5 +27,38 @@ export default { method: 'get', url: '/api/frontend/v1/Zeitsperren/getTypenZeitsperren/' }; + }, + getTypenErreichbarkeit(){ + return { + method: 'get', + url: '/api/frontend/v1/Zeitsperren/getTypenErreichbarkeit/' + }; + }, + getStunden(){ + return { + method: 'get', + url: '/api/frontend/v1/Zeitsperren/getStunden/' + }; + }, + addZeitsperre(uid, params) { + return { + method: 'post', + url: '/api/frontend/v1/Zeitsperren/add/' + uid, + params + }; + }, + loadZeitsperre(zeitsperre_id) { + return { + method: 'get', + url: '/api/frontend/v1/Zeitsperren/loadZeitsperre/' + zeitsperre_id + }; + }, + deleteZeitsperre(zeitsperre_id) { + console.log("zeitsperre_id " + zeitsperre_id); + return { + method: 'post', + url: '/api/frontend/v1/Zeitsperren/delete/' + zeitsperre_id + }; } + }; \ No newline at end of file diff --git a/public/js/components/Cis/Zeitsperren/Zeitsperren.js b/public/js/components/Cis/Zeitsperren/Zeitsperren.js index e779bdbf6..a2829b4f8 100644 --- a/public/js/components/Cis/Zeitsperren/Zeitsperren.js +++ b/public/js/components/Cis/Zeitsperren/Zeitsperren.js @@ -1,35 +1,176 @@ import {CoreFilterCmpt} from "../../filter/Filter.js"; import FormForm from '../../Form/Form.js'; import FormInput from '../../Form/Input.js'; +import PvAutoComplete from '../../../../../index.ci.php/public/js/components/primevue/autocomplete/autocomplete.esm.min.js'; import ApiAuthinfo from '../../../api/factory/authinfo.js'; import ApiTimelocks from "../../../api/factory/cis/zeitsperren.js"; +import ApiStvAbschlusspruefung from "../../../api/factory/stv/abschlusspruefung"; export default { name: 'ZeitsperrenComponent', components: { CoreFilterCmpt, FormForm, - FormInput + FormInput, + PvAutoComplete }, data(){ return { uid: null, + timeRecordingLockedUntil: '2015-08-31', //TODO(Manu) check if needed + typesTimeLocks: ["Urlaub", "PflegeU", "ZA", "Krank", "DienstF", "DienstV", "CovidSB", "CovidKS"], + typesHideStunden: ["Urlaub", "ZA", "Krank", "DienstF", "DienstV", "CovidSB", "CovidKS"], listTypenZeitsperren: [], + listTypenErreichbarkeit: [], + listStunden: [], tabulatorOptions: null, tabulatorEvents: [], - zeitsperreData: {} + zeitsperreData: { + vondatum : new Date(), + bisdatum: new Date(), + vonISO : "00:00:00", //later + bisISO: "23:59:59", //later + erreichbarkeit_kurzbz: 'n', + zeitsperretyp_kurzbz: 'Arzt', + vonstunde: null, + bisstunde: null + }, + selectedVertretung: null, + filteredMitarbeiter: [], + abortController: { + mitarbeiter: null + }, }; }, + computed: { + dienstverhinderungen() { + return { + "Eheschließung": "a) " + this.$p.t('zeitsperren', 'eheschliessung'), + "Geburt eigenes Kind": "b) " + this.$p.t('zeitsperren', 'geburt'), + "Heirat Kind/Geschwister": "c) " + this.$p.t('zeitsperren', 'heirat'), + "Eigene Sponsion/Promotion": "d) " + this.$p.t('zeitsperren', 'sponsion'), + "Lebensbedr. Erkrankung P/K/E": "e) " + this.$p.t('zeitsperren', 'erkrankung_lebensbedr'), + "Ableben P/K/E": "f) " + this.$p.t('zeitsperren', 'ableben'), + "Bestattung G/S/G": "g) " + this.$p.t('zeitsperren', 'bestattung'), + "Wohnungswechsel": "h) " + this.$p.t('zeitsperren', 'umzug'), + "Bundesheer": "i) " + this.$p.t('zeitsperren', 'bundesheer'), + "Volksschultag": "j) " + this.$p.t('zeitsperren', 'volksschultag')}; + }, + }, methods: { actionNewZeitsperre(){ console.log("actionNewZeitsperre "); }, actionEditZeitsperre(zeitsperre_id){ console.log("actionEditZeitsperre " + zeitsperre_id); + return this.$api + .call(ApiTimelocks.loadZeitsperre(zeitsperre_id)) + .then(response => { + console.log(response); + this.zeitsperreData = response.data; + + //this.getMaData(this.zeitsperreData.mitarbeiter); + + this.selectedVertretung = { + label: this.getPersonLabel(this.zeitsperreData.ma_titelpre, this.zeitsperreData.ma_nachname, this.zeitsperreData.ma_vorname, this.zeitsperreData.ma_titelpost, this.zeitsperreData.vertretung_uid), + person_id: this.zeitsperreData.ma_person_id, + mitarbeiter_uid: this.zeitsperreData.vertretung_uid + }; + }) + .catch(this.$fhcAlert.handleSystemError); }, actionDeleteZeitsperre(zeitsperre_id){ - console.log("actionDeleteZeitsperre " + zeitsperre_id); + this.$fhcAlert + .confirmDelete() + .then(result => result + ? zeitsperre_id + : Promise.reject({ handled: true }) + ) + .then(() => this.deleteZeitsperre(zeitsperre_id)) + .catch(this.$fhcAlert.handleSystemError); + }, + addZeitsperre(){ + return this.$refs.dataZeitsperre + .call(ApiTimelocks.addZeitsperre(this.uid, this.zeitsperreData)) + .then(response => { + this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave')); + }) + .catch(this.$fhcAlert.handleSystemError) + .finally(() => { + this.reload(); + }); + }, + deleteZeitsperre(zeitsperre_id){ + return this.$api + .call(ApiTimelocks.deleteZeitsperre(zeitsperre_id)) + .then(response => { + this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete')); + }) + .catch(this.$fhcAlert.handleSystemError) + .finally(()=> { + this.reload(); + }); + }, + searchMitarbeiter(event) { + if (this.abortController.mitarbeiter) { + this.abortController.mitarbeiter.abort(); + } + + this.abortController.mitarbeiter = new AbortController(); + + return this.$api + .call(ApiStvAbschlusspruefung.getMitarbeiter(event.query)) + .then(result => { + this.filteredMitarbeiter = []; + for (let mitarbeiter of result.data.retval) { + this.filteredMitarbeiter.push( + { + label: this.getPersonLabel( + mitarbeiter.titelpre, + mitarbeiter.nachname, + mitarbeiter.vorname, + mitarbeiter.titelpost, + mitarbeiter.mitarbeiter_uid + ), + person_id: mitarbeiter.person_id, + mitarbeiter_uid: mitarbeiter.mitarbeiter_uid + } + ); + } + }); + }, + getPersonLabel(titelpre, nachname, vorname, titelpost, uid) { + if(!uid) + return ''; + return nachname + ' ' + vorname + (titelpre ? ' ' + titelpre : '') + (titelpost ? ' ' + titelpost : '') + (uid ? ' (' + uid + ')' : ''); + }, + reload() { + if (this.$refs.table) + this.$refs.table.reloadTable(); + }, + handleChangeVonStunde(){ + let stunde = this.zeitsperreData.vonstunde; + const result = this.listStunden.find(item => item.stunde === stunde); + if (!result) { + this.zeitsperreData.vonISO = '00:00:00'; + return; + } + this.zeitsperreData.vonISO = result.beginn; + }, + handleChangeBisStunde(){ + let stunde = this.zeitsperreData.bisstunde; + const result = this.listStunden.find(item => item.stunde === stunde); + if (!result) { + this.zeitsperreData.vonISO = '23:59:59'; + return; + } + this.zeitsperreData.bisISO = result.ende; + } + }, + watch: { + selectedVertretung(newVal) { + this.zeitsperreData.vertretung_uid = newVal?.mitarbeiter_uid || 'keine Vertretung'; }, }, created() { @@ -42,8 +183,8 @@ export default { this.$api.call(ApiTimelocks.getTimelocksUser(this.uid)), ajaxResponse: (url, params, response) => response.data, columns: [ - {title:"beschreibung", field:"beschreibung"}, - {title:"Grund", field:"zeitsperretyp_kurzbz"}, + {title:"bezeichnung", field:"bezeichnung"}, + {title:"Grund", field:"beschreibung"}, {title:"Von", field:"vondatum", formatter: function (cell) { const dateStr = cell.getValue(); @@ -73,7 +214,7 @@ export default { {title:"vonstunde", field:"vonstunde", visible: false}, {title:"bisstunde", field:"bisstunde", visible: false}, {title:"Vertretung", field:"vertretung_uid"}, - {title:"Erreichbarkeit", field:"erreichbarkeit_kurzbz"}, + {title:"Erreichbarkeit", field:"erreichbarkeit_beschreibung"}, {title:"zeitsperre_id", field:"zeitsperre_id", visible: false}, {title:"mitarbeiter_uid", field:"mitarbeiter_uid", visible: false}, {title: 'Aktionen', field: 'actions', @@ -85,19 +226,34 @@ export default { let button = document.createElement('button'); button.className = 'btn btn-outline-secondary btn-action'; button.innerHTML = ''; - button.title = this.$p.t('person', 'bankvb_edit'); + button.title = this.$p.t('ui', 'bearbeiten'); button.addEventListener('click', (event) => this.actionEditZeitsperre(cell.getData().zeitsperre_id) ); + if(cell.getData().zeitsperretyp_kurzbz == 'DienstV' || cell.getData().zeitsperretyp_kurzbz == 'ZVerfueg'){ + button.disabled = true; + } + //TODO(Manu) check if needed + if(this.typesTimeLocks.includes(cell.getData().zeitsperretyp_kurzbz) && (cell.getData().vondatum < this.timeRecordingLockedUntil)){ + button.disabled = true; + } container.append(button); button = document.createElement('button'); button.className = 'btn btn-outline-secondary btn-action'; button.innerHTML = ''; - button.title = this.$p.t('person', 'bankvb_delete'); + button.title = this.$p.t('ui', 'loeschen'); button.addEventListener('click', () => - this.actionDeleteZeitsperre(cell.getData().zeitsperre_id) + //this.deleteZeitsperre(cell.getData().zeitsperre_id) + this.actionDeleteZeitsperre(cell.getData().zeitsperre_id) //TODO(Manu) not working with prompt ); + if(cell.getData().zeitsperretyp_kurzbz == 'Urlaub' || cell.getData().zeitsperretyp_kurzbz == 'ZVerfueg'){ + button.disabled = true; + } + //TODO(Manu) check if needed + if(this.typesTimeLocks.includes(cell.getData().zeitsperretyp_kurzbz) && (cell.getData().vondatum < this.timeRecordingLockedUntil)){ + button.disabled = true; + } container.append(button); return container; @@ -115,6 +271,20 @@ export default { }) .catch(this.$fhcAlert.handleSystemError); + this.$api + .call(ApiTimelocks.getTypenErreichbarkeit()) + .then(result => { + this.listTypenErreichbarkeit = result.data; + }) + .catch(this.$fhcAlert.handleSystemError); + + this.$api + .call(ApiTimelocks.getStunden()) + .then(result => { + this.listStunden = result.data; + }) + .catch(this.$fhcAlert.handleSystemError); + }, /* created(){ @@ -138,121 +308,230 @@ export default { {title:"insertvon", field:"insertvon"}, {title:"freigabevon", field:"freigabevon"}, {title:"freigabeamum", field:"freigabeamum"}, + + {{zeitsperreData}}
+ {{listTypenErreichbarkeit}}person */ + template: /* html */`

Meine Zeitsperren ({{uid}})

- - {{zeitsperreData}} - - - -
- - -
- -
- - - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- +
+ - -
-
- - -
- -
-
- -
-
- - + +
+
+ +
+ + + + +
+
+ + +
+
+ +
+
+
+ + +
+ +
+ + + + +
+ + + +
+ +
+
+ + +
+ +
+ + + + +
+ + + +
+ +
+
+ + +
+
+ +
+
+ + + +
+ +
+ +
+
+ +
+ + + +
- 'core', + 'category' => 'zeitsperren', + 'phrase' => 'eheschliessung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Eigene Eheschließung oder Verpartnerung (3 Tage)', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Own marriage or civil partnership (3 days)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'zeitsperren', + 'phrase' => 'geburt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Geburt eines Kindes der Ehefrau/Lebensgefährtin (2 Tage)', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Birth of a child of the wife/partner (2 days)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'zeitsperren', + 'phrase' => 'heirat', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Eheschließung oder Verpartnerung eines Kindes/eigener Geschwister (1 Tag)', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Marriage or civil partnership of a child or own sibling (1 day)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'zeitsperren', + 'phrase' => 'sponsion', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Teilnahme an eigener Sponsion/Promotion (1 Tag)', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Participation in own graduation/promotion ceremony (1 day)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'zeitsperren', + 'phrase' => 'erkrankung_lebensbedr', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Lebensbedrohliche Erkrankung Partner/Kinder/Eltern (3 Tage)', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Life-threatening illness of partner/children/parents (3 days)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'zeitsperren', + 'phrase' => 'ableben', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ableben Partner/Kinder/Elternteil (3 Tage)', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Death of partner/children/parent (3 days)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'zeitsperren', + 'phrase' => 'bestattung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Teilnahme an Bestattung Geschwister/Schwiegereltern/eigener Großeltern (1 Tag)', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Attendance at the funeral of siblings/parents-in-law/own grandparents (1 day)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'zeitsperren', + 'phrase' => 'umzug', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Wohnungswechsel in eigenen Haushalt (2 Tage)', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Moving to your own home (2 days)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'zeitsperren', + 'phrase' => 'bundesheer', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Einberufung Bundesheer', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Conscription of the Austrian Armed Forces', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'zeitsperren', + 'phrase' => 'volksschultag', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'erster Volksschultag (1 Tag)', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'First day of primary school (1 day)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'zeitsperren', + 'phrase' => 'geburt222', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Eigene Eheschließung oder Verpartnerung (3 Tage)', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Own marriage or civil partnership (3 days)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + /// ### ZEITSPERREN END + );