Files
FHC-Core/public/dist/js/apps/Cis/ProfilUpdateRequests.js
Harald Bamberger d89191b7f7 update bundles
2026-03-12 16:28:48 +01:00

7 lines
123 KiB
JavaScript

import t from"../../../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js";import e from"../../../../../index.ci.php/public/js/components/primevue/toast/toast.esm.min.js";import n from"../../../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js";import i from"../../../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js";const r={emits:["dataFetched"],props:{refresh:{type:Boolean},apiFunction:{required:!0,type:Function},apiFunctionParameters:{}},watch:{refresh:function(t,e){this.fetchData()}},data:function(){return{loading:!1,error:!1,errorMessage:null}},created:function(){this.fetchData()},methods:{fetchData:function(){if(this.loading=!0,this.error=!1,this.errorMessage=null,"function"==typeof this.apiFunction){let t=this.apiFunction(this.apiFunctionParameters);t instanceof Promise?t.then(this.successHandler).catch(this.errorHandler).finally(this.finallyHandler):this.setError("The called apiFunction does not return a Promise")}else this.setError("Property apiFunction is not a function")},setError:function(t){this.loading=!1,this.error=!0,this.errorMessage=t},successHandler:function(t){this.$emit("dataFetched",t?t.data:void 0)},errorHandler:function(t){t.response?.data?.retval?this.setError(t.response.data.retval):t.data?.message?this.setError(t.data.message):this.setError(t.message)},finallyHandler:function(){this.loading=!1}},template:'\n\t\t<slot v-if="loading" name="loading">\n\t\t\t<div class="fetch-loader">Loading...</div>\n\t\t</slot>\n\t\t<slot v-else-if="error" name="error" :error-message="errorMessage">\n\t\t\t<div class="fetch-error">{{ errorMessage }}</div>\n\t\t</slot>\n\t\t<slot v-else></slot>\n\t'},s="Filter Component New Filter";var a={props:{filters:{type:Array,default:[]},columns:{type:Array,default:[]},fields:{type:Array,default:[]}},emits:{switchFilter:["filterId"],applyFilterConfig:["filterFields"],saveCustomFilter:["customFilterName"]},data:function(){return{currentFields:[]}},computed:{types(){return this.columns.reduce((t,e)=>{let n=e.type.toLowerCase();return n.indexOf("int")>=0?t[e.name]="Numeric":n.indexOf("varchar")>=0||n.indexOf("text")>=0||n.indexOf("bpchar")>=0?t[e.name]="Text":n.indexOf("timestamp")>=0||n.indexOf("date")>=0?t[e.name]="Date":t[e.name]="",t},{})}},watch:{fields(t){this.currentFields=t}},methods:{switchFilter(t){this.$emit("switchFilter",t.currentTarget.value)},applyFilterConfig(){const t=this.currentFields.filter(t=>t.name!=s);t.filter(t=>""==t.condition).length?alert("Please fill all the filter options"):this.$emit("applyFilterConfig",t)},addField(t){this.currentFields.push({name:s})},removeField(t){this.currentFields.splice(t,1)}},template:'\n\t<div class="filter-config">\n\t\t<div class="card">\n\t\t\t<div class="card-body">\n\t\t\t\t<div v-if="filters.length" class="mb-4">\n\t\t\t\t\t<select class="form-select" @change="switchFilter">\n\t\t\t\t\t\t<option value="">Bitte auswählen...</option>\n\t\t\t\t\t\t<option v-for="filter in filters" :value="filter.id">\n\t\t\t\t\t\t\t{{ filter.description }}\n\t\t\t\t\t\t</option>\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<button class="btn btn-outline-dark" type="button" @click=addField>\n\t\t\t\t\t\t<span class="fa-solid fa-plus" aria-hidden="true"></span> Neuer Filter\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div class="filter-config-fields my-3">\n\t\t\t\t\t<div v-for="(filterField, index) in currentFields" class="filter-config-field row">\n\n\t\t\t\t\t\t<div class="col-5">\n\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t<span class="input-group-text">Filter {{ index + 1 }}</span>\n\t\t\t\t\t\t\t\t<select\n\t\t\t\t\t\t\t\t\tclass="form-select"\n\t\t\t\t\t\t\t\t\tv-model="filterField.name"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<option value="">Feld zum Filter hinzufügen...</option>\n\t\t\t\t\t\t\t\t\t<option v-for="col in columns" :value="col.name">\n\t\t\t\t\t\t\t\t\t\t{{ col.title }}\n\t\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\x3c!-- Numeric --\x3e\n\t\t\t\t\t\t<template v-if="types[filterField.name] == \'Numeric\'">\n\t\t\t\t\t\t\t<div class="col-2">\n\t\t\t\t\t\t\t\t<select class="form-select" v-model="filterField.operation">\n\t\t\t\t\t\t\t\t\t<option value="equal">Gleich</option>\n\t\t\t\t\t\t\t\t\t<option value="nequal">Nicht gleich</option>\n\t\t\t\t\t\t\t\t\t<option value="gt">Größer als</option>\n\t\t\t\t\t\t\t\t\t<option value="lt">Weniger als</option>\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col-3">\n\t\t\t\t\t\t\t\t<input type="number" class="form-control" v-model="filterField.condition">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\n\t\t\t\t\t\t\x3c!-- Text --\x3e\n\t\t\t\t\t\t<template v-if="types[filterField.name] == \'Text\'">\n\t\t\t\t\t\t\t<div class="col-2">\n\t\t\t\t\t\t\t\t<select class="form-select" v-model="filterField.operation">\n\t\t\t\t\t\t\t\t\t<option value="equal">Gleich</option>\n\t\t\t\t\t\t\t\t\t<option value="nequal">Nicht gleich</option>\n\t\t\t\t\t\t\t\t\t<option value="contains">Enthält</option>\n\t\t\t\t\t\t\t\t\t<option value="ncontains">Enthält nicht</option>\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col-3">\n\t\t\t\t\t\t\t\t<input type="text" class="form-control" v-model="filterField.condition">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\n\t\t\t\t\t\t\x3c!-- Timestamp and date --\x3e\n\t\t\t\t\t\t<template v-if="types[filterField.name] == \'Date\'">\n\t\t\t\t\t\t\t<div class="col-2">\n\t\t\t\t\t\t\t\t<select class="form-select" v-model="filterField.operation">\n\t\t\t\t\t\t\t\t\t<option value="gt">Größer als</option>\n\t\t\t\t\t\t\t\t\t<option value="lt">Weniger als</option>\n\t\t\t\t\t\t\t\t\t<option value="set">Eingestellt ist</option>\n\t\t\t\t\t\t\t\t\t<option value="nset">Eingestellt nicht ist</option>\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col-1">\n\t\t\t\t\t\t\t\t<input type="number" class="form-control" v-model="filterField.condition">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col-2">\n\t\t\t\t\t\t\t\t<select class="form-select" v-model="filterField.option">\n\t\t\t\t\t\t\t\t\t<option value="minutes">Minuten</option>\n\t\t\t\t\t\t\t\t\t<option value="hours">Stunden</option>\n\t\t\t\t\t\t\t\t\t<option value="days">Tage</option>\n\t\t\t\t\t\t\t\t\t<option value="months">Monate</option>\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\n\t\t\t\t\t\t<div class="col text-end">\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tclass="btn btn-outline-dark"\n\t\t\t\t\t\t\t\ttype="button"\n\t\t\t\t\t\t\t\t@click="removeField(index)"\n\t\t\t\t\t\t\t\ttitle="Filter entfernen"\n\t\t\t\t\t\t\t\taria-title="Filter entfernen"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span class="fa-solid fa-minus" aria-hidden="true"></span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\x3c!-- Filter save options --\x3e\n\t\t\t\t<div class="row">\n\t\t\t\t\t<div class="col-7">\n\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t<input ref="filterName" type="text" class="form-control" placeholder="Filternamen eingeben...">\n\t\t\t\t\t\t\t<button type="button" class="btn btn-outline-secondary" @click="$emit(\'saveCustomFilter\', $refs.filterName.value)">Filter speichern</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col">\n\t\t\t\t\t\t<button type="button" class="btn btn-outline-dark" @click="applyFilterConfig">Filter anwenden</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t'},o={props:{fields:Array,selected:{type:Array,default:[]},names:{type:Object,default:{}}},emits:{hide:["fieldName"],show:["fieldName"]},data:function(){return{selectedFields:[]}},watch:{selected(t){this.selectedFields=t}},methods:{toggle(t){-1!=this.selectedFields.indexOf(t)?(this.selectedFields.splice(this.selectedFields.indexOf(t),1),this.$emit("hide",t)):(this.selectedFields.push(t),this.$emit("show",t))}},template:'\n\t<div class="filter-columns">\n\t\t<div class="card">\n\t\t\t<div class="d-flex flex-wrap gap-2 p-3 justify-content-center">\n\t\t\t\t<div\n\t\t\t\t\tv-for="fieldToDisplay in fields"\n\t\t\t\t\tclass="btn"\n\t\t\t\t\t:class="selectedFields.indexOf(fieldToDisplay) != -1 ? \'btn-dark\' : \'btn-outline-dark\' "\n\t\t\t\t\t@click="toggle(fieldToDisplay)"\n\t\t\t\t>\n\t\t\t\t\t{{ names[fieldToDisplay] || fieldToDisplay }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t'};const l={jsonLines:"fa-file-lines",xlsx:"fa-file-excel",pdf:"fa-file-pdf",html:"fa-file-code",json:"fa-file",csv:"fa-file-csv"},d={jsonLines:"Download as JSONLINES",xlsx:"Download as XLSX",pdf:"Download as PDF",html:"Download as HTML",json:"Download as JSON",csv:"Download as CSV "};var p={props:{tabulator:Object,config:{type:[Boolean,String,Function,Array,Object],default:!1},iconClass:[String,Array,Object]},computed:{currentConfig(){if(!this.config)return!1;let t=this.config;if(t instanceof Function)return[t];if(null===t)return[];if(!0===this.config&&(t=["csv"]),"[object String]"===Object.prototype.toString.call(t)&&(t=t.split(",")),"object"==typeof t&&!Array.isArray(t)){let r=[];for(var e in t){var n,i=t[e];i&&("[object String]"===Object.prototype.toString.call(i)?null!==(n=this.stringToFileFormatter(i))?r.push({icon:"fa-solid "+l[n],label:i===e?d[n]:e,formatter:n}):null!==(n=this.stringToFileFormatter(e))?r.push({icon:"fa-solid "+l[n],label:i,formatter:n}):alert("neither "+e+" nor "+i+" are supported download file types"):"object"!=typeof i||Array.isArray(i)?null!==(n=this.stringToFileFormatter(e))?r.push({icon:"fa-solid "+l[n],label:d[n],formatter:n}):alert(e+" is not a supported download file type"):null!==(n=this.stringToFileFormatter(e))?(void 0===i.formatter&&(i.formatter=n),void 0===i.label&&(i.label=d[n]),void 0===i.icon&&(i.icon=l[n]),r.push(i)):(void 0===i.label&&(i.label=e),r.push(i)))}t=r}if(Array.isArray(t)){if(t=t.map(t=>{if("[object String]"===Object.prototype.toString.call(t)){let e=this.stringToFileFormatter(t);return null===e?null:{icon:"fa-solid "+l[e],label:d[e],formatter:e}}if(t instanceof Function)return{formatter:t};if("object"==typeof t&&!Array.isArray(t)&&null!==t){if(t.formatter instanceof Function)return t;if(this.validateFileFormatter(t.formatter))return t}return null}).filter(t=>null!==t),t.length<2)return t;if(t.filter(t=>t.label||t.icon).length==t.length)return t;alert("Config not valid")}return[]}},methods:{stringToFileFormatter(t){let e=t.toLowerCase();return"jsonlines"==e?"jsonLines":["xlsx","pdf","html","json","csv"].includes(e)?e:null},validateFileFormatter(t){let e=this.stringToFileFormatter(t);if(!e)return alert(t+" is not a supported file formatter"),!1;if("xlsx"==e&&!window.XLSX)return alert("XLSX Library not loaded"),!1;if("pdf"==e){if(!window.jspdf)return alert("jsPDF Library not loaded"),!1;if(!new jspdf.jsPDF({}).autoTable)return alert("jsPDF-AutoTable Plugin not loaded"),!1}return!0},download(t){this.tabulator.download(t.formatter,t.file,t.options)}},template:'\n\t<template v-if="currentConfig">\n\t\t<template v-if="currentConfig.length == 1">\n\t\t\t<a\n\t\t\t\thref="#"\n\t\t\t\tclass="table-download"\n\t\t\t\tv-bind="$attrs"\n\t\t\t\ttitle="Download"\n\t\t\t\taria-title="Download"\n\t\t\t\t@click.prevent="download(currentConfig[0])"\n\t\t\t>\n\t\t\t\t<span :class="iconClass || \'fa-solid fa-xl fa-download\'" aria-hidden="true"></span>\n\t\t\t</a>\n\t\t</template>\n\t\t<div v-else class="dropdown d-inline">\n\t\t\t<a\n\t\t\t\thref="#"\n\t\t\t\tclass="table-download"\n\t\t\t\tv-bind="$attrs"\n\t\t\t\ttitle="Download"\n\t\t\t\taria-title="Download"\n\t\t\t\trole="button"\n\t\t\t\tdata-bs-toggle="dropdown"\n\t\t\t\taria-expanded="false"\n\t\t\t>\n\t\t\t\t<span :class="iconClass || \'fa-solid fa-xl fa-download\'" aria-hidden="true"></span>\n\t\t\t</a>\n\t\t\t<ul class="dropdown-menu dropdown-menu-end">\n\t\t\t\t<li v-for="(conf, i) in currentConfig" :key="i">\n\t\t\t\t\t<a class="dropdown-item" href="#" @click.prevent="download(conf)">\n\t\t\t\t\t\t<span v-if="conf.icon" :class="conf.icon" aria-hidden="true"></span>\n\t\t\t\t\t\t{{conf.label}}\n\t\t\t\t\t</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\t</template>\n\t'};const u=new WeakMap;var c={mounted(t,e){let n=!1;u.set(t,e=>{if(!n)return;if(t.contains(e.target))return;const i=bootstrap.Collapse.getInstance(t);i&&i.hide()}),t.addEventListener("shown.bs.collapse",()=>{n=!0}),t.addEventListener("hide.bs.collapse",()=>{n=!1}),document.addEventListener("click",u.get(t),!0)},beforeUnmount(t,e){document.removeEventListener("click",u.get(t)),delete t.collapsibleAutoHideFunc}};window.Tabulator?.extendModule("layout","modes",{fitDataStretchFrozen(t,e){var n=0,i=this.table.rowManager.element.clientWidth,r=0,s=!1;t.forEach((t,e)=>{t.widthFixed||t.reinitializeWidth(),(this.table.options.responsiveLayout?t.modules.responsive.visible:t.visible&&!t.definition.frozen)&&(s=t),t.visible&&(n+=t.getWidth())}),s?(r=i-n+s.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(s.setWidth(0),this.table.modules.responsiveLayout.update()),r>0?s.setWidth(r):s.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()}});var f={saveCustomFilter:t=>({method:"post",url:"/api/frontend/v1/filter/saveCustomFilter",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,customFilterName:t.customFilterName}}),removeCustomFilter:t=>({method:"post",url:"/api/frontend/v1/filter/removeCustomFilter",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterId:t.filterId}}),applyFilterFields:t=>({method:"post",url:"/api/frontend/v1/filter/applyFilterFields",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterFields:t.filterFields}}),addFilterField:t=>({method:"post",url:"/api/frontend/v1/filter/addFilterField",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterField:t.filterField}}),removeFilterField:t=>({method:"post",url:"/api/frontend/v1/filter/removeFilterField",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterField:t.filterField}}),getFilterById:t=>({method:"get",url:"/api/frontend/v1/filter/getFilter",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterId:t.filterId}}),getFilter:t=>({method:"get",url:"/api/frontend/v1/filter/getFilter",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType}})},h=0;const g={components:{CoreFetchCmpt:r,FilterConfig:a,FilterColumns:o,TableDownload:p},directives:{collapseAutoClose:c},emits:["nwNewEntry","click:new","tableBuilt","uuidDefined","headerFilterOn"],props:{onNwNewEntry:Function,title:String,description:String,sideMenu:{type:Boolean,default:!0},filterType:{type:String},tabulatorOptions:Object,tabulatorEvents:Array,tableOnly:Boolean,noColumnFilter:Boolean,reload:Boolean,reloadBtnInfotext:String,download:{type:[Boolean,String,Function,Array,Object],default:!1},newBtnShow:Boolean,newBtnClass:[String,Array,Object],newBtnDisabled:Boolean,newBtnLabel:String,uniqueId:String,idField:String,parentIdField:String,countOnly:Boolean,useSelectionSpan:{type:Boolean,default:!0}},data:function(){return{uuid:0,filterName:null,filterActive:!1,fields:null,dataset:null,datasetMetadata:null,selectedFields:null,filterFields:null,availableFilters:null,selectedFilter:null,fetchCmptRefresh:!1,fetchCmptApiFunction:null,fetchCmptApiFunctionParams:null,fetchCmptDataFetched:null,fetchResult:null,tabulator:null,tableBuilt:!1,tabulatorHasSelector:!1,selectedData:[],persistence:{sort:!0,columns:!0,filter:!1,headerFilter:!1,group:!1,page:!1}}},computed:{notSelectedFields(){return this.fields&&this.selectedFields?this.fields.filter(t=>-1===this.selectedFields.indexOf(t)):null},filteredData(){return this.dataset?JSON.parse(JSON.stringify(this.dataset)):[]},filteredColumns(){let t=JSON.parse(JSON.stringify(this.fields))||[],e=JSON.parse(JSON.stringify(this.selectedFields))||[],n=null;if(this.tabulatorOptions&&this.tabulatorOptions.hasOwnProperty("columns")&&(n=this.tabulatorOptions.columns),!Array.isArray(n)||Array.isArray(n)&&n.length<t.length){n=[];for(let i of t){let t={title:i,field:i};t.visible=e.indexOf(i)>=0,n.push(t)}}else for(let i of n)i.visible=e.indexOf(i.field)>=0||-1==t.indexOf(i.field),i.hasOwnProperty("resizable")&&(i.resizable=i.visible);return n},fieldIdsForVisibilty(){return this.tableBuilt?this.tabulator.getColumns().filter(t=>{let e=t.getDefinition();return!e.frozen&&e.title&&"responsiveCollapse"!=e.formatter}).map(t=>t.getField()):[]},fieldNames(){return this.tableBuilt?this.tabulator.getColumns().reduce((t,e)=>(t[e.getField()]=e.getDefinition().title,t),{}):{}},idExtra(){return this.uuid?"-"+this.uuid:""},columnsForFilter(){if(!this.filteredColumns||!this.datasetMetadata)return[];const t=this.filteredColumns.reduce((t,e)=>(t[e.field]=e.title,t),{});return this.datasetMetadata.map(e=>({...e,title:t[e.name]}))}},methods:{reloadTable(){this.tableOnly?this.tabulator.setData():this.getFilter()},async initTabulator(){let t="< Phrasen Plugin not loaded! >";this.$p&&(await this.$p.loadCategory("ui"),t=this.$p.t("ui/keineDatenVorhanden")),this.tableOnly||await new Promise(t=>{const e=window.location.hash?window.location.hash.slice(1):null,n=e=>{this.setRenderData(e),t()};null===e?this.startFetchCmpt(t=>this.$api.call(f.getFilter(t)),null,n):this.startFetchCmpt(t=>this.$api.call(f.getFilterById(t)),{filterId:e},n)});let e={layout:"fitDataStretchFrozen",movableColumns:!0,columnDefaults:{tooltip:!0},placeholder:t,persistence:this.persistence,...this.tabulatorOptions||{}};if(void 0===e.height&&void 0===e.minHeight&&void 0===e.maxHeight&&(e.height=500),this.tableOnly?e.columns.forEach(t=>{void 0===t.visible&&(t.visible=!0)}):(e.data=this.filteredData,e.columns=this.filteredColumns),(e.selectable||e.selectableRows||e.columns&&e.columns.filter(t=>"rowSelection"==t.formatter).length)&&(this.tabulatorHasSelector=!0),this.idField&&(this.parentIdField&&(e.dataTree=!0),e.index=this.idField),this.tabulator=new Tabulator(this.$refs.table,e),Array.isArray(this.tabulatorEvents)&&this.tabulatorEvents.length>0)for(let t of this.tabulatorEvents)this.tabulator.on(t.event,t.handler);this.tabulator.on("tableBuilt",()=>{this.tableBuilt=!0,this.$emit("tableBuilt")}),this.tabulator.on("rowSelectionChanged",t=>{this.selectedData=t}),this.parentIdField&&this.idField&&this.tabulator.on("dataLoading",t=>{let e=[];for(let n=0;n<t.length;n++){let i=t[n];i[this.parentIdField]&&this.appendChild(t,i)&&e.push(n)}for(let n=0;n<e.length;n++)t.splice(e[n]-n,1)}),this.tableOnly&&this.tabulator.on("tableBuilt",()=>{const t=this.tabulator.getColumns();this.fields=t.map(t=>t.getField()),this.selectedFields=t.filter(t=>t.isVisible()).map(t=>t.getField()),this.tabulator.options.persistence.headerFilter&&this._setHeaderFilter()}),this.tabulator.on("dataFiltered",t=>{this.filterActive=t.length>0,this.$emit("headerFilterOn",this.filterActive)})},updateTabulator(){this.tabulator&&(this.tableBuilt?this._updateTabulator():this.tabulator.on("tableBuilt",this._updateTabulator))},_updateTabulator(){this.tabulatorHasSelector=this.tabulatorOptions.selectable||this.tabulatorOptions.selectableRows||this.filteredColumns.filter(t=>"rowSelection"==t.formatter).length,this.tabulator.setColumns(this.filteredColumns),this.tabulator.setData(this.filteredData),this._setHeaderFilter()},clearFilters(){this.tabulator.getHeaderFilters().forEach(t=>{this.tabulator.setHeaderFilterValue(t.field,"")}),this.tabulator.clearFilter(),this.filterActive=!1},_setHeaderFilter(){this.tabulator.getHeaderFilters().forEach(t=>{this.tabulator.setHeaderFilterValue(t.field,t.value)})},getFilter(){null===this.selectedFilter?this.startFetchCmpt(t=>this.$api.call(f.getFilter(t)),null,this.render):this.startFetchCmpt(t=>this.$api.call(f.getFilterById(t)),{filterId:this.selectedFilter},this.render)},setRenderData(t){this.fetchResult=t,this.filterName=t.filterName,this.dataset=t.dataset,this.datasetMetadata=t.datasetMetadata,this.fields=t.fields,this.selectedFields=t.selectedFields,this.filterFields=[];for(let e=0;e<t.datasetMetadata.length;e++)for(let n=0;n<t.filters.length;n++)if(t.datasetMetadata[e].name==t.filters[n].name){let i=t.filters[n];i.type=t.datasetMetadata[e].type,this.filterFields.push(i)}},render(t){let e=t;this.setRenderData(e),!0===this.sideMenu?this.setSideMenu(e):this.setDropDownMenu(e),this.updateTabulator()},setSideMenu(t){let e=t.sideMenu.filters,n=t.sideMenu.personalFilters,i=[];for(let t=0;t<e.length;t++){let n=e[t].link;null==n&&(n="#"),i[i.length]={id:e[t].filter_id,link:n+e[t].filter_id,description:e[t].desc,sort:t,onClickCall:this.handlerGetFilterById}}for(let t=0;t<n.length;t++){let e=n[t].link;null==e&&(e="#"),i[i.length]={id:n[t].filter_id,link:e+n[t].filter_id,description:n[t].desc,subscriptDescription:n[t].subscriptDescription,subscriptLinkClass:n[t].subscriptLinkClass,subscriptLinkValue:n[t].subscriptLinkValue,sort:t,onClickCall:this.handlerGetFilterById,onClickSubscriptCall:this.handlerRemoveCustomFilter}}this.availableFilters=i,this.$emit("nwNewEntry",{link:"#",description:"Filters",icon:"filter",children:i})},setDropDownMenu(t){let e=t.sideMenu.filters,n=t.sideMenu.personalFilters,i=[];for(let t=0;t<e.length;t++)e[t].link,i[i.length]={id:e[t].filter_id,option:e[t].filter_id,description:e[t].desc};for(let t=0;t<n.length;t++)n[t].link,i[i.length]={id:n[t].filter_id,option:n[t].filter_id,description:n[t].desc};this.availableFilters=i},startFetchCmpt(t,e,n){this.fetchCmptApiFunction=t,null==e&&(e={}),e.filterUniqueId=FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method,e.filterType=this.filterType,this.uniqueId&&(e.filterUniqueId+="_"+this.uniqueId),this.fetchCmptApiFunctionParams=e,this.fetchCmptDataFetched=n,!0===this.fetchCmptRefresh?this.fetchCmptRefresh=!1:this.fetchCmptRefresh=!0},handlerSaveCustomFilter(t){this.selectedFilter=null,this.startFetchCmpt(t=>this.$api.call(f.saveCustomFilter(t)),{customFilterName:t},this.getFilter)},handlerRemoveCustomFilter(t){let e=t.currentTarget.getAttribute("href").substring(1);e===this.selectedFilter&&(this.selectedFilter=null),this.startFetchCmpt(t=>this.$api.call(f.removeCustomFilter(t)),{filterId:e},this.getFilter)},handlerGetFilterById:function(t){let e=null,n=t.currentTarget.getAttribute("href");e=null==n?t.currentTarget.value:n.substring(1),this.switchFilter(e)},switchFilter(t){this.selectedFilter=t,this.getFilter()},applyFilterConfig(t){this.selectedFilter=null,this.startFetchCmpt(t=>this.$api.call(f.applyFilterFields(t)),{filterFields:t},this.getFilter)},appendChild(t,e){let n=e[this.parentIdField];for(let i=0;i<t.length;i++){let r=t[i];if(r[this.idField]==n)return r._children||(r._children=[]),r._children.includes(e)||r._children.push(e),!0;r._children&&this.appendChild(r._children,e)}return!1}},beforeCreate(){!this.tableOnly==!this.filterType&&alert("You can not have a filter-type in table-only mode!")},created(){!this.sideMenu||this.$props.onNwNewEntry&&this.$props.onNwNewEntry instanceof Function||alert('"nwNewEntry" listener is mandatory when sideMenu is true'),this.uuid=h++,this.$emit("uuidDefined",this.uuid)},mounted(){this.initTabulator().then(()=>{this.tableOnly||(this.selectedFilter=window.location.hash?window.location.hash.slice(1):null,this.render(this.fetchResult))})},template:'\n\t\t\x3c!-- Load filter data --\x3e\n\t\t<core-fetch-cmpt\n\t\t\tv-if="!tableOnly && fetchCmptApiFunction"\n\t\t\tv-bind:api-function="fetchCmptApiFunction"\n\t\t\tv-bind:api-function-parameters="fetchCmptApiFunctionParams"\n\t\t\tv-bind:refresh="fetchCmptRefresh"\n\t\t\t@data-fetched="fetchCmptDataFetched">\n\t\t</core-fetch-cmpt>\n\n\t\t<div class="row" v-if="title != null && title != \'\'">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<h3 class="page-header mt-1 mb-4">\n\t\t\t\t\t{{ title }}\n\t\t\t\t</h3>\n\t\t\t</div>\n\t\t</div>\n\t\t<div :id="\'filterCollapsables\' + idExtra">\n\n\t\t\t<div class="d-flex flex-row justify-content-between flex-wrap">\n\t\t\t\t<div v-if="newBtnShow || reload || $slots.search || $slots.actions" class="d-flex gap-2 align-items-baseline flex-wrap">\n\t\t\t\t\t<button v-if="newBtnShow" class="btn btn-primary" :class="newBtnClass" :title="newBtnLabel ? undefined : \'New\'" :aria-label="newBtnLabel ? undefined : \'New\'" @click="$emit(\'click:new\', $event)" :disabled="newBtnDisabled">\n\t\t\t\t\t\t<span class="fa-solid fa-plus" aria-hidden="true"></span>\n\t\t\t\t\t\t{{ newBtnLabel }}\n\t\t\t\t\t</button>\n\t\t\t\t\t<button v-if="reload" class="btn btn-outline-secondary" aria-label="Reload" @click="reloadTable">\n\t\t\t\t\t\t<span class="fa-solid fa-rotate-right" aria-hidden="true" :title="reloadBtnInfotext ? reloadBtnInfotext : \'Reload\'" ></span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<span v-if="$slots.actions && tabulatorHasSelector && useSelectionSpan">\n\t\t\t\t\t\t<span v-if="countOnly">{{ selectedData.length }} ausgewählt</span>\n\t\t\t\t\t\t<span v-else id="selected-info-text"> Mit {{ selectedData.length }} ausgewählten:</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<slot name="actions" v-bind="{selected: tabulatorHasSelector ? selectedData : []}"></slot>\n\t\t\t\t\t<slot name="search"></slot>\n\t\t\t\t</div>\n\t\t\t\t<div class="d-flex gap-1 align-items-baseline flex-grow-1 justify-content-end">\n\t\t\t\t\t<span v-if="!tableOnly">[ {{ filterName }} ]</span>\n\t\t\t\t\t<span v-else-if="description" v-html="description"></span>\n\t\t\t\t\t<a aria-label="filter" v-if="!tableOnly || $slots.filter" href="#" class="btn btn-link px-0 fhc-text" data-bs-toggle="collapse" :data-bs-target="\'#collapseFilters\' + idExtra">\n\t\t\t\t\t\t<span class="fa-solid fa-xl fa-filter"></span>\n\t\t\t\t\t</a>\n\t\t\t\t\t<a aria-label="filter" v-if="filterActive" class="btn btn-link px-0 fhc-text" :title="$p.t(\'ui\',\'filterdelete\')" @click="clearFilters">\n\t\t\t\t\t\t<span class="fa-solid fa-xl fa-filter-circle-xmark"></span>\n\t\t\t\t\t</a>\n\t\t\t\t\t<a aria-label="filter" href="#" class="btn btn-link px-0 fhc-text" data-bs-toggle="collapse" :data-bs-target="\'#collapseColumns\' + idExtra">\n\t\t\t\t\t\t<span class="fa-solid fa-xl fa-table-columns"></span>\n\t\t\t\t\t</a>\n\t\t\t\t\t<table-download class="btn btn-link px-0 fhc-text" :tabulator="tabulator" :config="download"></table-download>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<filter-columns\n\t\t\t\t:id="\'collapseColumns\' + idExtra"\n\t\t\t\tclass="card-body collapse"\n\t\t\t\t:data-bs-parent="\'#filterCollapsables\' + idExtra"\n\t\t\t\t:fields="fieldIdsForVisibilty"\n\t\t\t\t:selected="selectedFields"\n\t\t\t\t:names="fieldNames"\n\t\t\t\t@hide="tabulator.hideColumn($event)"\n\t\t\t\t@show="tabulator.showColumn($event)"\n\t\t\t\tv-collapse-auto-close\n\t\t\t></filter-columns>\n\n\t\t\t<filter-config\n\t\t\t\tv-if="!tableOnly"\n\t\t\t\t:id="\'collapseFilters\' + idExtra"\n\t\t\t\tclass="card-body collapse"\n\t\t\t\t:data-bs-parent="\'#filterCollapsables\' + idExtra"\n\t\t\t\t:filters="!sideMenu ? (availableFilters || []) : []"\n\t\t\t\t:columns="columnsForFilter"\n\t\t\t\t:fields="filterFields || []"\n\t\t\t\t@switch-filter="switchFilter"\n\t\t\t\t@apply-filter-config="applyFilterConfig"\n\t\t\t\t@save-custom-filter="handlerSaveCustomFilter"\n\t\t\t\tv-collapse-auto-close\n\t\t\t></filter-config>\n\t\t\t<div\n\t\t\t\tv-else-if="$slots.filter"\n\t\t\t\t:id="\'collapseFilters\' + idExtra"\n\t\t\t\tclass="card-body collapse"\n\t\t\t\t:data-bs-parent="\'#filterCollapsables\' + idExtra"\n\t\t\t\tv-collapse-auto-close\n\t\t\t\t>\n\t\t\t\t<slot name="filter"></slot>\n\t\t\t</div>\n\t\t</div>\n\n\t\t\x3c!-- Tabulator --\x3e\n\t\t<div ref="table" :id="\'filterTableDataset\' + idExtra" class="filter-table-dataset"></div>\n\t'};var v={name:"BootstrapModal",data:()=>({modal:null,fullscreen:!1}),props:{backdrop:{type:[Boolean,String],default:!0,validator:t=>["static",!0,!1].includes(t)},focus:{type:Boolean,default:!0},keyboard:{type:Boolean,default:!0},noCloseBtn:Boolean,dialogClass:[String,Array,Object],headerClass:{type:[String,Array,Object],default:""},bodyClass:{type:[String,Array,Object],default:"px-4 py-5"},footerClass:{type:[String,Array,Object],default:""},allowFullscreenExpand:{type:Boolean,default:!1}},emits:["hideBsModal","hiddenBsModal","hidePreventedBsModal","showBsModal","shownBsModal","toggleFullscreen"],methods:{dispose(){return this.modal.dispose()},handleUpdate(){return this.modal.handleUpdate()},hide(){return this.modal.hide()},show(t){return this.modal.show(t)},toggle(){return this.modal.toggle()},toggleFullscreen(){this.fullscreen=!this.fullscreen,this.$emit("toggleFullscreen")}},mounted(){this.$refs.modal&&(this.modal=new bootstrap.Modal(this.$refs.modal,{backdrop:this.backdrop,focus:this.focus,keyboard:this.keyboard}))},popup(t,e,n,i){const r=this,s={};void 0!==t&&(s.default=()=>t),void 0!==n&&(s.title=()=>n),void 0!==i&&(s.footer=()=>i);let a=!1;return"undefined"!=typeof primevue&&(a=!0),new Promise((t,n)=>{const i=Vue.createApp({name:"ModalTmpApp",setup:()=>()=>Vue.h(r,{class:"fade",...e,ref:"modal","onHidden.bs.modal":i.unmount},s),mounted(){this.$refs.modal.show()},beforeUnmount(){this.$refs.modal&&(!1!==this.$refs.modal.result?t(this.$refs.modal.result):n())},unmounted(){o.parentElement.removeChild(o)}}),o=document.createElement("div");a&&i.use(primevue.config.default,{zIndex:{overlay:9999}}),Promise.resolve().then(function(){return pt}).then(t=>{i.use(t.default),i.mount(o),document.body.appendChild(o)})})},template:'<div ref="modal" class="bootstrap-modal modal" tabindex="-1" @[`hide.bs.modal`]="$emit(\'hideBsModal\')" @[`hidden.bs.modal`]="$emit(\'hiddenBsModal\')" @[`hidePrevented.bs.modal`]="$emit(\'hidePreventedBsModal\')" @[`show.bs.modal`]="$emit(\'showBsModal\')" @[`shown.bs.modal`]="$emit(\'shownBsModal\')">\n\t\t<div class="modal-dialog" :class="fullscreen ? \'modal-fullscreen\' : dialogClass">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div v-if="$slots.title" class="modal-header" :class="headerClass">\n\t\t\t\t\t<h5 class="modal-title"><slot name="title"/></h5>\n\t\t\t\t\t<div class="d-flex align-items-center ms-auto gap-2">\n\t\t\t\t\t\t<button \n\t\t\t\t\t\t\ttype="button" \n\t\t\t\t\t\t\tclass="btn mb-1" \n\t\t\t\t\t\t\tv-if="allowFullscreenExpand" \n\t\t\t\t\t\t\t@click="toggleFullscreen"\n\t\t\t\t\t\t\t:aria-label="fullscreen ? \'Exit Fullscreen\' : \'Enter Fullscreen\'"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<i v-if="!fullscreen" class="fa-solid fa-expand"></i>\n\t\t\t\t\t\t\t<i v-else class="fa-solid fa-compress"></i>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<button v-if="!noCloseBtn" type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<slot name="modal-header-content"></slot>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body" :class="bodyClass">\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\t\t\t\t<div v-if="$slots.footer" class="modal-footer" :class="footerClass">\n\t\t\t\t\t<slot name="footer"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>'},m={props:{view:String,data:Object},data:()=>({}),created(){},template:'\n\t<template v-if="data.kontakt">\n <div class="gy-2 row align-items-center justify-content-center">\n <div class="col-1 text-center" >\n <i class="fa-solid fhc-link-color" :class="{...(data.kontakt.includes(\'@\')?{\'fa-envelope\':true}:{\'fa-phone\':true})}" ></i>\n </div>\n <div :class="{...(data.anmerkung? {\'col-11\':true, \'col-md-6\':true, \'col-xl-11\':true, \'col-xxl-6\':true} : {\'col-10\':true, \'col-xl-9\':true, \'col-xxl-10\':true})}">\n \x3c!-- rendering KONTAKT emails --\x3e\n <div class="form-underline ">\n <div class="form-underline-titel">{{$p.t(\'profil\',data.kontakttyp.toUpperCase())}}</div>\n <a v-if="data.kontakt.includes(\'@\')" role="link" :aria-disabled="view?true:false" :href="!view?(\'mailto:\'+data.kontakt):null" class="form-underline-content">{{data.kontakt}} </a>\n <a v-else role="link" :aria-disabled="view?true:false" :href="!view?(\'tel:\'+data.kontakt):null" class="form-underline-content">{{data.kontakt}} </a>\n </div>\n </div>\n <div v-if="data?.anmerkung" class="offset-1 offset-md-0 offset-xl-1 offset-xxl-0 order-2 order-sm-1 col-10 col-md-4 col-xl-9 col-xxl-4 ">\n <div class="form-underline ">\n <div class="form-underline-titel">{{$p.t(\'global\',\'anmerkung\')}}</div>\n <span class="form-underline-content">{{data.anmerkung}} </span>\n </div>\n </div>\n <div class="text-center col-1 col-sm-1 order-2 order-lg-1 col-xl-2 col-xxl-1 allign-middle">\n <i v-if="data.zustellung" class="fa-solid fa-check"></i>\n <i v-else="data.zustellung" class="fa-solid fa-xmark"></i>\n </div>\n </div>\n\t</template>\n'},A={props:{data:Object,view:String,withZustelladresse:{type:Boolean,default:!0}},data:()=>({}),created(){},template:'\n \n <div class="gy-2 row justify-content-center align-items-center">\n \n \x3c!-- column 1 in the address row --\x3e\n <div class="col-1 text-center">\n <i class="fa fa-location-dot fa-lg fhc-link-color" ></i>\n </div>\n \n <div class="col-11 col-sm-8 col-xl-11 col-xxl-8 order-1">\n <div class="form-underline ">\n <div class="form-underline-titel">{{$p.t(\'person\',\'strasse\')}}</div>\n <span class="form-underline-content">{{data.strasse}} </span>\n </div>\n </div>\n \n \x3c!-- column 2 in the address row --\x3e\n <div class="offset-1 offset-sm-0 offset-xl-1 offset-xxl-0 order-2 order-sm-4 order-xl-2 order-xxl-4 col-11 col-sm-5 col-xl-11 col-xxl-5">\n <div class="form-underline ">\n <div class="form-underline-titel">{{$p.t(\'global\',\'typ\')}}</div>\n <span class="form-underline-content">{{data.typ}} </span>\n </div>\n </div>\n \n <div class="offset-1 order-3 order-sm-3 col-11 col-sm-6 col-xl-7 col-xxl-6"> \n <div class="form-underline ">\n <div class="form-underline-titel">{{$p.t(\'person\',\'ort\')}}</div>\n <span class="form-underline-content">{{data.ort}} </span>\n </div>\n </div>\n <div class=" offset-1 offset-sm-0 order-4 order-sm-2 order-xl-4 order-xxl-2 col-11 col-sm-3 col-xl-4 col-xxl-3">\n <div class="form-underline">\n <div class="form-underline-titel">{{$p.t(\'person\',\'plz\')}}</div>\n <span class="form-underline-content">{{data.plz}} </span>\n </div>\n </div>\n\n <div v-if="withZustelladresse" class="order-5 offset-1 col-11">\n <div class="form-underline">\n <div class="form-underline-titel">{{$p.t(\'person\',\'zustelladresse\')}}</div>\n <div class="ms-2 form-check ">\n <input class="form-check-input" type="checkbox" @click.prevent :checked="data.zustelladresse" >\n </div>\n </div>\n </div>\n </div>\n'},b={
//! API calls for profil update requests
getStatus:()=>({method:"get",url:"/api/frontend/v1/ProfilUpdate/getStatus"}),getTopic:()=>({method:"get",url:"/api/frontend/v1/ProfilUpdate/getTopic"}),acceptProfilRequest:({profil_update_id:t,uid:e,status_message:n,topic:i,requested_change:r})=>({method:"post",url:"/api/frontend/v1/ProfilUpdate/acceptProfilRequest",params:{profil_update_id:t,uid:e,status_message:n,topic:i,requested_change:r}}),denyProfilRequest:({profil_update_id:t,uid:e,topic:n,status_message:i})=>({method:"post",url:"/api/frontend/v1/ProfilUpdate/denyProfilRequest",params:{profil_update_id:t,uid:e,topic:n,status_message:i}}),insertFile:(t,e=null)=>({method:"post",url:`/api/frontend/v1/ProfilUpdate/insertFile/${e}`,params:t}),updateProfilbild:t=>({method:"post",url:"/api/frontend/v1/ProfilUpdate/updateProfilbild",params:t}),getProfilUpdateWithPermission:t=>({method:"get",url:"/api/frontend/v1/ProfilUpdate/getProfilUpdateWithPermission"+(""!==t?"/"+encodeURIComponent(t):"")}),getProfilRequestFiles:t=>({method:"get",url:`/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${t}`}),selectProfilRequest:(t=null,e=null)=>({method:"get",url:"/api/frontend/v1/ProfilUpdate/selectProfilRequest",params:{...t?{uid:t}:{},...e?{id:e}:{}}}),insertProfilRequest:(t,e,n=null)=>({method:"post",url:"/api/frontend/v1/ProfilUpdate/insertProfilRequest",params:{topic:t,payload:e,...n?{fileID:n}:{}}}),updateProfilRequest:(t,e,n,i=null)=>({method:"post",url:"/api/frontend/v1/ProfilUpdate/updateProfilRequest",params:{topic:t,payload:e,ID:n,...i?{fileID:i}:{}}}),deleteProfilRequest:t=>({method:"post",url:"/api/frontend/v1/ProfilUpdate/deleteProfilRequest",params:{requestID:t}})},y={components:{BsModal:v,Kontakt:m,Adresse:A},inject:["profilUpdateStates"],mixins:[v],props:{title:{type:String},value:{type:Object},setLoading:{type:Function},onHideBsModal:Function,onHiddenBsModal:Function,onHidePreventedBsModal:Function,onShowBsModal:Function,onShownBsModal:Function},data(){return{data:this.value,loading:!1,result:!1,info:null,files:null}},methods:{getProfilStatus:async function(){return FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/Cis/ProfilUpdate/show/${dms_id}`},getDocumentLink:function(t){return FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/Cis/ProfilUpdate/show/${t}`},handleRequest:function(t){this.loading=!0,this.setLoading(!0),this.$api.call(b["accept"==t.toLowerCase()?"acceptProfilRequest":"denyProfilRequest"](this.data)).then(t=>{this.result=!0}).catch(t=>this.$fhcAlert.handleSystemError).finally(()=>{this.setLoading(!1),this.loading=!1,this.hide()})}},computed:{getComponentView:function(){return this.data.topic.toLowerCase().includes("kontakt")?"kontakt":this.data.topic.toLowerCase().includes("adresse")?"adresse":"text_input"}},created(){this.value.attachment_id&&this.$api.call(b.getProfilRequestFiles(this.data.profil_update_id)).then(t=>{this.files=t.data})},mounted(){this.modal=this.$refs.modalContainer.modal},popup(t){return v.popup.bind(this)(null,t)},template:'\n\n <bs-modal\n\t\tv-show="!loading"\n\t\tref="modalContainer"\n\t\tv-bind="$props"\n\t\theader-class="bg-light"\n\t\tfooter-class="bg-light"\n\t\tbody-class=""\n\t\tdialog-class="modal-lg"\n\t\tclass="bootstrap-alert"\n\t\t:backdrop="false"\n\t>\n \n <template v-slot:title>\n {{title}} \n </template>\n\n\n <template v-slot:default>\n \n <div class="row">\n <div class="form-underline mb-2 col-12 col-sm-6">\n <div class="form-underline-titel">{{$p.t(\'global\',\'status\')}}: </div>\n\n <span class="form-underline-content" >{{data.status}}</span>\n </div>\n\n\n <div v-if="data.status!==profilUpdateStates[\'Pending\']" class="form-underline mb-2 col-12 col-sm-6">\n <div class="form-underline-titel">{{$p.t(\'profilUpdate\',\'statusDate\')}}: </div>\n \x3c!-- only status timestamp and status message can be null in the database --\x3e\n <span class="form-underline-content" >{{data.status_timestamp?data.status_timestamp:\'-\'}}</span>\n </div>\n\n\n \n <div class="form-underline mb-2 col-12 col-sm-6">\n <div class="form-underline-titel">{{$p.t(\'profilUpdate\',\'userID\')}}: </div>\n\n <span class="form-underline-content" >{{data.uid}}</span>\n </div>\n\n <div class="form-underline mb-2 col-12 col-sm-6">\n <div class="form-underline-titel">{{$p.t(\'global\',\'name\')}}: </div>\n\n <span class="form-underline-content" >{{data.name}}</span>\n </div>\n\n <div class="form-underline mb-2 col-12 col-sm-6">\n <div class="form-underline-titel">{{$p.t(\'profilUpdate\',\'anfrageThema\')}}: </div>\n\n <span class="form-underline-content" >{{data.topic}}</span>\n </div>\n\n\n\n\n <div class="form-underline mb-2 col-12 col-sm-6">\n <div class="form-underline-titel">{{$p.t(\'profilUpdate\',\'anfrageDatum\')}}:</div>\n\n <span class="form-underline-content" >{{data.insertamum}}</span>\n </div>\n\n </div>\n\n \x3c!-- Row with the status message is only visible if the request is not pending and the message is not empty --\x3e\n <div v-if="data.status !== profilUpdateStates[\'Pending\'] && data.status_message" class="row">\n <div class="col">\n <div class="form-underline mb-2 ">\n <div class="form-underline-titel">{{$p.t(\'profilUpdate\',\'statusMessage\')}}</div>\n <textarea class="form-control" rows="4" disabled>{{data.status_message}} </textarea>\n </div>\n </div>\n </div>\n\n <div class="row my-4">\n <div class="col ">\n <div class="card">\n <div class="card-header">{{$p.t(\'profilUpdate\',\'update\')}}</div>\n <div class="card-body">\n <template v-if="getComponentView===\'text_input\'">\n <div class="form-underline mb-2">\n <div class="form-underline-titel">{{data.topic}}</div>\n\n <span class="form-underline-content" >{{data.requested_change.value}}</span>\n </div>\n </template>\n\n\n <component v-else :is="getComponentView" :withZustelladresse="getComponentView===\'adresse\'?true:false" :data="data.requested_change"></component>\n\n </div>\n </div>\n\n\t\t<div v-if="files?.length" class="card mt-3">\n\t\t\t<div class="card-header">{{$p.t(\'profilUpdate\',\'nachweisdokumente\')}}</div>\n\t\t\t<div class="card-body">\n\t\t\t\t<a v-for="file in files" target="_blank" :href="getDocumentLink(file.dms_id)" >{{file.name}}</a>\n\t\t\t</div>\n\t\t</div>\n\n </div>\n </div>\n \n </template>\n \n\n <template v-if="data.status === profilUpdateStates[\'Pending\']" v-slot:footer>\n <div class="flex-fill">\n <div>{{$p.t(\'global\',\'nachricht\')}}</div>\n\n <div class="d-flex flex-row gap-2">\n <input class="form-control " v-model="data.status_message" />\n <button @click="handleRequest(\'accept\')" class="text-nowrap btn btn-success">{{$p.t(\'profilUpdate\',\'accept\')}} <i class="fa fa-check"></i></button>\n <button @click="handleRequest(\'deny\')" class="text-nowrap btn btn-danger">{{$p.t(\'profilUpdate\',\'deny\')}} <i class="fa fa-xmark"></i></button>\n </div>\n </div>\n \n </template>\n \n </bs-modal>'},_={components:{BsModal:v},props:{timeout:{type:Number,default:300}},data:()=>({t:null,state:0}),methods:{show(){switch(this.state){case 0:return this.timeout?(this.state=1,void(this.t=window.setTimeout(()=>this.$refs.modal.show(),this.timeout))):this.$refs.modal.show();case 4:return window.setTimeout(()=>this.show(),1)}},hide(){switch(this.state){case 1:return window.clearTimeout(this.t);case 2:return window.setTimeout(()=>this.hide(),1);case 3:this.$refs.modal.hide()}}},mounted(){this.$refs.modal.$refs.modal.addEventListener("show.bs.modal",()=>{this.state=2}),this.$refs.modal.$refs.modal.addEventListener("shown.bs.modal",()=>{this.state=3}),this.$refs.modal.$refs.modal.addEventListener("hide.bs.modal",()=>{this.state=4}),this.$refs.modal.$refs.modal.addEventListener("hidden.bs.modal",()=>{this.state=0})},template:'\n\t<bs-modal ref="modal" class="fade text-center" dialog-class="modal-dialog-centered" backdrop="static" :keyboard="false">\n\t\tLoading...\n\t</bs-modal>'};function $(t,e,n){let i=document.createElement("div"),r=null,s=t.getValue();if(Array.isArray(s)){const t=s[0]?new Date(s[0]):null,e=s[1]?new Date(s[1]):null;r=[t,e]}return Vue.createApp({components:{PrimevueCalendar:primevue.calendar},data:()=>({val:r}),watch:{val(t){n(t)}},template:'<primevue-calendar \n\t\t\t\t\tv-model="val" \n\t\t\t\t\tselection-mode="range" \n\t\t\t\t\t:manual-input="false" \n\t\t\t\t\tshow-button-bar \n\t\t\t\t\t:showIcon="true"\n\t\t\t\t\tdateFormat="dd.mm.yy">\n\t\t\t\t </primevue-calendar>'}).use(primevue.config.default).mount(i),i}primevue||console.error("PrimeVue not loaded!"),Tabulator.extendModule("filter","filters",{dates:(t,e)=>{if(!t)return!0;let n=new Date(e);if(Array.isArray(t)){let e=new Date(t[0]);if(t[1]){let i=new Date(t[1]);return i.setHours(23,59,59,999),n>=e&&n<=i}return n.toDateString()===e.toDateString()}let i=new Date(t);return n.toDateString()===i.toDateString()}});var F={components:{CoreFilterCmpt:g,Loading:_,AcceptDenyUpdate:y},inject:["profilUpdateStates"],props:{id:{type:String}},data(){return{categoryLoaded:!1,showModal:!1,modalData:null,loading:!1,filter:"Pending",profil_update_id:Number(this.id)}},computed:{profilUpdateEvents:function(){return[{event:"dataProcessed",handler:this.handleDataProcessed}]},profilUpdateOptions:function(){return{persistence:{columns:["width","visible","frozen"]},persistenceID:"cis-profilupdate-2025121702",ajaxURL:"dummy",ajaxRequestFunc:(t,e,n)=>this.$api.call(b.getProfilUpdateWithPermission(n.filter)),ajaxParams:()=>{let t="";switch(this.filter){case this.profilUpdateStates.Pending:t=this.profilUpdateStates.Pending;break;case this.profilUpdateStates.Accepted:t=this.profilUpdateStates.Accepted;break;case this.profilUpdateStates.Rejected:t=this.profilUpdateStates.Rejected;break;default:t=""}return{filter:t}},ajaxResponse:(t,e,n)=>(n?.data&&n.data.sort((t,e)=>((t,e,n)=>{let i=0;return i=t.status===n.profilUpdateStates.Pending||t.status===n.profilUpdateStates.Accepted&&e.status===n.profilUpdateStates.Rejected?-1:1,t.status===e.status&&(i=new Date(e.insertamum.split(".").reverse().join("-"))-new Date(t.insertamum.split(".").reverse().join("-"))),i})(t,e,this)),n.data),columnDefaults:{tooltip:(t,e,n)=>{let i=e.getData().status_message,r=e.getData().status_timestamp,s=e.getData().status;if(!i)return null;let a=document.createElement("div");a.classList.add("border","border-dark");let o=document.createElement("span");o.classList.add("d-block","mb-1"),o.innerHTML="Request was "+s+" on "+r;let l=document.createElement("span");return l.innerHTML="Status message: "+i,a.appendChild(o),a.appendChild(l),a}},rowContextMenu:(t,e)=>{let n=[];return e.getData().status===this.profilUpdateStates.Pending?n.push({label:`<i class='fa fa-check'></i> ${this.$p.t("profilUpdate","acceptUpdate")}`,action:(t,e)=>{this.$api.call(b.acceptProfilRequest(e.getData())).then(t=>{this.$refs.UpdatesTable.tabulator.setData()}).catch(t=>this.$fhcAlert.handleSystemError)}},{separator:!0},{label:` <i style='width:16px' class='text-center fa fa-xmark'></i> ${this.$p.t("profilUpdate","denyUpdate")}`,action:(t,e)=>{this.$api.call(b.denyProfilRequest(e.getData())).then(t=>{this.$refs.UpdatesTable.tabulator.setData()}).catch(t=>this.$fhcAlert.handleSystemError)}},{separator:!0},{label:`<i class='fa fa-eye'></i> ${this.$p.t("profilUpdate","showRequest")}`,action:(t,e)=>{this.showAcceptDenyModal(e.getData())}}):n.push({label:`<i class='fa fa-eye'></i> ${this.$p.t("profilUpdate","showRequest")}`,action:(t,e)=>{this.showAcceptDenyModal(e.getData())}}),n},height:600,layout:"fitDataStretchFrozen",columns:[{title:this.$p.t("profilUpdate","UID"),field:"uid",minWidth:100,resizable:!0,headerFilter:!0},{title:this.$p.t("profilUpdate","Name"),field:"name",minWidth:200,resizable:!0,headerFilter:!0},{title:this.$p.t("profil","stg_short")+" ("+this.$p.t("profil","studentIn")+")",field:"studiengang",minWidth:50,resizable:!0,headerFilter:"list",headerFilterParams:{valuesLookup:!0,listOnEmpty:!0,autocomplete:!0,sort:"asc"}},{title:this.$p.t("profil","sem_short")+" ("+this.$p.t("profil","studentIn")+")",field:"semester",headerFilter:"list",headerFilterParams:{valuesLookup:!0,listOnEmpty:!0,autocomplete:!0,sort:"asc"}},{title:this.$p.t("profil","orgform_short")+" ("+this.$p.t("profil","studentIn")+")",field:"orgform",minWidth:50,resizable:!0,headerFilter:"list",headerFilterParams:{valuesLookup:!0,listOnEmpty:!0,autocomplete:!0,sort:"asc"}},{title:this.$p.t("profil","orgeinheit_short")+" ("+this.$p.t("profil","mitarbeiterIn")+")",field:"oezuordnung",minWidth:200,resizable:!0,headerFilter:"list",headerFilterParams:{valuesLookup:!0,listOnEmpty:!0,autocomplete:!0,sort:"asc"}},{title:this.$p.t("profilUpdate","Topic"),field:"topic",resizable:!0,minWidth:200,headerFilter:"list",headerFilterParams:{valuesLookup:!0,listOnEmpty:!0,autocomplete:!0,sort:"asc"}},{title:this.$p.t("profilUpdate","insertamum"),field:"insertamum_iso",resizable:!0,headerFilterFunc:"dates",headerFilter:$,minWidth:200,formatter:"datetime",formatterParams:this.datetimeFormatterParams()},{title:this.$p.t("profilUpdate","Status"),field:"status_translated",hozAlign:"center",headerFilter:"list",headerFilterParams:{valuesLookup:!0,listOnEmpty:!0,autocomplete:!0,sort:"asc"},formatter:(t,e)=>{let n="";switch(t.getRow().getData().status){case this.profilUpdateStates.Pending:n+="fa fa-lg fa-circle-info text-info ";break;case this.profilUpdateStates.Accepted:n+="fa fa-lg fa-circle-check text-success ";break;case this.profilUpdateStates.Rejected:n+="fa fa-lg fa-circle-xmark text-danger "}return`<div class='row justify-content-center'><div class='col-2'><i class='${n}'></i></div> <div class='col-4'><span>${t.getValue()}</span></div></div>`},resizable:!0,minWidth:200},{title:this.$p.t("profilUpdate","actions"),headerSort:!1,frozen:!0,formatter:(t,e)=>{let n=`<div class="d-flex justify-content-evenly align-items-center">\n <button class="btn btn-secondary" id="showButton">${this.$p.t("global","details")}</button>\n </div>`;const i=(new DOMParser).parseFromString(n,"text/html").body.firstChild;return i.querySelector("#showButton").addEventListener("click",()=>{this.showAcceptDenyModal(t.getRow().getData())}),i},minWidth:200,resizable:!0,hozAlign:"center"}]}}},methods:{denyProfilUpdate:function(t){this.$api.call(b.denyProfilRequest(t)).then(t=>{}).catch(t=>this.$fhcAlert.handleSystemError).finally(()=>{this.$refs.UpdatesTable.tabulator.setData()})},acceptProfilUpdate:function(t){this.$api.call(b.acceptProfilRequest(t)).then(t=>{}).catch(t=>this.$fhcAlert.handleSystemError).finally(()=>{this.$refs.UpdatesTable.tabulator.setData()})},setLoading:function(t){this.loading=t},hideAcceptDenyModal:function(){this.$refs.AcceptDenyModal.result&&this.$refs.UpdatesTable.tabulator.setData(),this.showModal=!1,this.modalData=null},showAcceptDenyModal(t){this.modalData=t,this.modalData&&(this.showModal=!0,Vue.nextTick(()=>{this.$refs.AcceptDenyModal.show()}))},updateData:function(t){this.$refs.UpdatesTable.tabulator.setData(),sessionStorage.setItem("filter",t.target.value)},handleDataProcessed:function(){if(this.profil_update_id){const t=this.$refs.UpdatesTable.tabulator.getData().filter(t=>t.profil_update_id===this.profil_update_id);t.length&&this.showAcceptDenyModal(t[0])}},datetimeFormatterParams:function(){return{inputFormat:"yyyy-MM-dd",outputFormat:"dd.MM.yyyy",invalidPlaceholder:"(invalid date)",timezone:FHC_JS_DATA_STORAGE_OBJECT.timezone}}},watch:{loading:function(t,e){t?this.$refs.loadingModalRef.show():this.$refs.loadingModalRef.hide()}},created(){this.$p.loadCategory(["profilUpdate","lehre","profil","global"]).then(()=>{this.categoryLoaded=!0})},mounted(){sessionStorage.getItem("filter")&&(this.filter=sessionStorage.getItem("filter"))},template:'\n <div>\n\t\t<accept-deny-update :title="$p.t(\'profilUpdate\',\'profilUpdateRequest\')" v-if="showModal" ref="AcceptDenyModal" @hideBsModal="hideAcceptDenyModal" :value="JSON.parse(JSON.stringify(modalData))" :setLoading="setLoading" ></accept-deny-update>\n\t\t<h3>{{$p.t(\'profilUpdate\', \'profilUpdateRequests\')}}</h3>\n\t\t<loading ref="loadingModalRef" :timeout="0"></loading>\n\n\t\t<core-filter-cmpt\n\t\t\tv-if="profilUpdateStates && categoryLoaded"\n\t\t\tref="UpdatesTable"\n\t\t\t:tabulatorEvents="profilUpdateEvents"\n\t\t\t:tabulator-options="profilUpdateOptions"\n\t\t\ttable-only\n\t\t\t:sideMenu="false">\n\t\t\t\t <template #actions>\n\t\t\t\t\t<div style="width: 94vw;" class="d-flex justify-content-end">\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t <select class="mb-4 form-select" v-model="filter" @change="updateData" aria-label="Profil updates display selection">\n\t\t\t\t\t\t\t<option :selected="true" :value="profilUpdateStates[\'Pending\']" >{{$p.t(\'profilUpdate\',\'pendingRequests\')}}</option>\n\t\t\t\t\t\t\t<option :value="profilUpdateStates[\'Accepted\']">{{$p.t(\'profilUpdate\',\'acceptedRequests\')}}</option>\n\t\t\t\t\t\t\t<option :value="profilUpdateStates[\'Rejected\']">{{$p.t(\'profilUpdate\',\'rejectedRequests\')}}</option>\n\t\t\t\t\t\t\t<option :value="\'Alle\'">{{$p.t(\'profilUpdate\',\'allRequests\')}}</option>\n\t\t\t\t\t\t </select>\n\t\t\t\t\t\t </div>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t</core-filter-cmpt>\n\n\t</div>'},S={search(t,e){return this.$fhcApi.post("/api/frontend/v1/searchbar/search",t,e)},searchAdvanced(t,e){return this.$fhcApi.post("/api/frontend/v1/searchbar/searchAdvanced",t,e)},searchdummy(t){return this.$fhcApi.post("public/js/apps/api/dummyapi.php/Search",t)}},C={loadCategory(t){return this.$fhcApi.get("/api/frontend/v1/phrasen/loadModule/"+t)},setLanguage(t,e){const n={categories:t,language:e};return this.$fhcApi.post("/api/frontend/v1/phrasen/setLanguage",n)},getLanguage(){return this.$fhcApi.get("/api/frontend/v1/phrasen/getLanguage",{})},getActiveDbLanguages(){return this.$fhcApi.get("/api/frontend/v1/phrasen/getAllLanguages",{})}},P={getHeader(t){return this.$fhcApi.get("/api/frontend/v1/navigation/header",{navigation_page:t})},getMenu:function(t){return this.$fhcApi.get("/api/frontend/v1/navigation/menu",{navigation_page:t})}},T={saveCustomFilter(t){return this.$fhcApi.post("/api/frontend/v1/filter/saveCustomFilter",{filterUniqueId:t.filterUniqueId,filterType:t.filterType,customFilterName:t.customFilterName})},removeCustomFilter(t){return this.$fhcApi.post("/api/frontend/v1/filter/removeCustomFilter",{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterId:t.filterId})},applyFilterFields(t){return this.$fhcApi.post("/api/frontend/v1/filter/applyFilterFields",{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterFields:t.filterFields})},addFilterField(t){return this.$fhcApi.post("/api/frontend/v1/filter/addFilterField",{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterField:t.filterField})},removeFilterField(t){return this.$fhcApi.post("/api/frontend/v1/filter/removeFilterField",{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterField:t.filterField})},getFilterById(t){return this.$fhcApi.get("/api/frontend/v1/filter/getFilter",{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterId:t.filterId})},getFilter(t){return this.$fhcApi.get("/api/frontend/v1/filter/getFilter",{filterUniqueId:t.filterUniqueId,filterType:t.filterType})}},k={abmeldung:{getDetails(t,e){const n="/api/frontend/v1/studstatus/abmeldung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e);return this.$fhcApi.get(n)},create(t,e,n){return this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/createAntrag",{studiensemester:t,prestudent_id:e,grund:n},{errorHandling:"strict"})},cancel(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/cancelAntrag",{antrag_id:t.studierendenantrag_id},{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/cancelAntrag",{antrag_id:t})}},unterbrechung:{getDetails(t,e){const n="/api/frontend/v1/studstatus/unterbrechung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e);return this.$fhcApi.get(n)},create(t,e,n,i,r){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/createAntrag",{studiensemester:t,prestudent_id:e,grund:n,datum_wiedereinstieg:i,attachment:r},{errorHandling:"strict"})},cancel(t){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/cancelAntrag",{antrag_id:t},{errorHandling:"strict"})}},wiederholung:{getDetails(t){const e="/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/"+t;return this.$fhcApi.get(e)},getLvs(t){const e="/api/frontend/v1/studstatus/wiederholung/getLvs/"+t;return this.$fhcApi.get(e)},create(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/createAntrag",{prestudent_id:t,studiensemester:e},{errorHandling:"strict"})},cancel(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/cancelAntrag",{prestudent_id:t,studiensemester:e},{errorHandling:"strict"})},saveLvs(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/saveLvs",{forbiddenLvs:t,mandatoryLvs:e})}},leitung:{getStgs(){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getActiveStgs")},getAntraege(t,e,n){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getAntraege/"+t).then(t=>t.data)},getHistory(t){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getHistory/"+t)},getPrestudents(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/getPrestudents",{query:t},{signal:e,timeout:3e4})},approve(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveAntrag",t)},reject(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/rejectAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/rejectAntrag",t)},reopen(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/reopenAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/reopenAntrag",t)},pause(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/pauseAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/pauseAntrag",t)},unpause(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/unpauseAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/unpauseAntrag",t)},object(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/objectAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/objectAntrag",t)},approveObjection(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveObjection",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveObjection",t)},denyObjection(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/denyObjection",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/denyObjection",t)}}},z={getView:function(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/Profil/getView/${t}`,{})},fotoSperre:function(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/Profil/fotoSperre/${t}`,{})},isStudent:function(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Profil/isStudent",{uid:t})},isMitarbeiter:function(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/Profil/isMitarbeiter/${t}`,{})},getZustellAdresse:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Profil/getZustellAdresse",{})},getZustellKontakt:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Profil/getZustellKontakt",{})},getGemeinden:function(t,e){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/Profil/getGemeinden/${t}/${e}`,{})},getAllNationen:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Profil/getAllNationen",{})}},E={
//! API calls for profil update requests
getStatus:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/getStatus",{})},getTopic:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/getTopic",{})},acceptProfilRequest:function({profil_update_id:t,uid:e,status_message:n,topic:i,requested_change:r}){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/acceptProfilRequest",{profil_update_id:t,uid:e,status_message:n,topic:i,requested_change:r})},denyProfilRequest:function({profil_update_id:t,uid:e,topic:n,status_message:i}){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/denyProfilRequest",{profil_update_id:t,uid:e,topic:n,status_message:i})},insertFile:function(t,e=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/ProfilUpdate/insertFile/${e}`,t)},getProfilRequestFiles:function(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${t}`,{})},selectProfilRequest:function(t=null,e=null){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/selectProfilRequest",{...t?{uid:t}:{},...e?{id:e}:{}})},insertProfilRequest:function(t,e,n=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/insertProfilRequest",{topic:t,payload:e,...n?{fileID:n}:{}})},updateProfilRequest:function(t,e,n,i=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/updateProfilRequest",{topic:t,payload:e,ID:n,...i?{fileID:i}:{}})},deleteProfilRequest:function(t){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/deleteProfilRequest",{requestID:t})}},w={getRoomInfo(t,e,n){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getRoomplan",{ort_kurzbz:t,start_date:e,end_date:n})},getStunden(){return this.$fhcApi.get("/api/frontend/v1/LvPlan/Stunden",{})},getOrtReservierungen(t,e,n){return this.$fhcApi.post(`/api/frontend/v1/LvPlan/getReservierungen/${t}`,{start_date:e,end_date:n})},getLvPlanReservierungen(t,e){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getReservierungen",{start_date:t,end_date:e})},getLehreinheitStudiensemester(t){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${t}`,{})},studiensemesterDateInterval(t){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${t}`,{})},LvPlanEvents(t,e,n){return this.$fhcApi.get("/api/frontend/v1/LvPlan/LvPlanEvents",{start_date:t,end_date:e,lv_id:n})}},D={verband:{get(){return this.$fhcApi.get("api/frontend/v1/stv/verband")},favorites:{get(){return this.$fhcApi.get("api/frontend/v1/stv/favorites")},set(t){return this.$fhcApi.post("api/frontend/v1/stv/favorites/set",{favorites:t})}}},students:{uid(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/uid/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},prestudent(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/prestudent/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},person(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/person/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},verband(t){return this.$fhcApi.getUri("api/frontend/v1/stv/students/"+t)}},filter:{getStg(){return this.$fhcApi.get("api/frontend/v1/stv/filter/getStg")},setStg(t){return this.$fhcApi.post("api/frontend/v1/stv/filter/setStg",{studiengang_kz:t})}},konto:{tabulatorConfig(t,e){return t.ajaxURL="api/frontend/v1/stv/konto/get",t.ajaxParams=()=>({person_id:e.modelValue.person_id||e.modelValue.map(t=>t.person_id),only_open:e.filter,studiengang_kz:e.studiengang_kz_intern?e.stg_kz:""}),t.ajaxRequestFunc=(t,e,n)=>this.$fhcApi.post(t,n,e),t.ajaxResponse=(t,e,n)=>n.data,t},checkDoubles(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/checkDoubles",e,{confirmErrorHandler:t=>!0})},insert(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/insert",e)},counter(t){return this.$fhcApi.post("api/frontend/v1/stv/konto/counter",t)},edit(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/update",e)},delete(t){return this.$fhcApi.post("api/frontend/v1/stv/konto/delete",{buchungsnr:t})},getBuchungstypen(){return this.$fhcApi.get("api/frontend/v1/stv/konto/getBuchungstypen")}},group:{getGruppen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/Gruppen/getGruppen/"+n.id)},deleteGroup(t){return this.$fhcApi.post("api/frontend/v1/stv/Gruppen/deleteGruppe/",t)}},kontakt:{getAdressen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressen/"+n.id)},addNewAddress(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewAddress/"+e,n)},loadAddress(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadAddress/",{address_id:t})},updateAddress(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateAddress/"+e,n)},deleteAddress(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteAddress/",{address_id:t})},getPlaces(t){return this.$fhcApi.get("api/frontend/v1/stv/address/getPlaces/"+t)},getFirmen(t){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getFirmen/"+t)},getNations(){return this.$fhcApi.get("api/frontend/v1/stv/address/getNations/")},getAdressentypen(){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressentypen/")},getBankverbindung(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getBankverbindung/"+n.id)},addNewBankverbindung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewBankverbindung/"+e,n)},loadBankverbindung(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadBankverbindung/",{bankverbindung_id:t})},updateBankverbindung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateBankverbindung/"+e,n)},deleteBankverbindung(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteBankverbindung/",{bankverbindung_id:t})},getKontakte(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakte/"+n.id)},addNewContact(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewContact/"+e,n)},loadContact(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadContact/",{kontakt_id:t})},updateContact(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateContact/"+e,n)},deleteContact(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteContact/",{kontakt_id:t})},getStandorteByFirma(t){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getStandorteByFirma/"+t)},getKontakttypen(){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakttypen/")}},prestudent:{get(t,e){return this.$fhcApi.post("api/frontend/v1/stv/prestudent/get/"+encodeURIComponent(t)+"/"+encodeURIComponent(e))},updatePrestudent(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/prestudent/updatePrestudent/"+e,n)},getBezeichnungZGV(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungZGV/")},getBezeichnungMZgv(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungMZgv/")},getBezeichnungDZgv(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungDZgv/")},getStgs(){return this.$fhcApi.get("api/frontend/v1/stv/lists/getStgs/")},getAusbildung(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getAusbildung/")},getAufmerksamdurch(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getAufmerksamdurch/")},getBerufstaetigkeit(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBerufstaetigkeit/")},getTypenStg(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getTypenStg/")},getBisstandort(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBisstandort/")},getHistoryPrestudent(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/status/getHistoryPrestudent/"+n.id)},getMaxSem(t){return this.$fhcApi.post("api/frontend/v1/stv/status/getMaxSemester/",{studiengang_kzs:t})},advanceStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:i}){return this.$fhcApi.post("api/frontend/v1/stv/status/advanceStatus/"+t+"/"+e+"/"+n+"/"+i)},confirmStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:i}){return this.$fhcApi.post("api/frontend/v1/stv/status/confirmStatus/"+t+"/"+e+"/"+n+"/"+i)},isLastStatus(t){return this.$fhcApi.get("api/frontend/v1/stv/status/isLastStatus/"+t)},deleteStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:i}){return this.$fhcApi.post("api/frontend/v1/stv/status/deleteStatus/"+t+"/"+e+"/"+n+"/"+i)},getLastBismeldestichtag(){return this.$fhcApi.get("api/frontend/v1/stv/status/getLastBismeldestichtag/")},getHistoryPrestudents(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getHistoryPrestudents/"+n.id)}},status:{insertStatus(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/status/insertStatus/"+e,n)},loadStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:i}){return this.$fhcApi.post("api/frontend/v1/stv/status/loadStatus/"+t+"/"+e+"/"+n+"/"+i)},updateStatus(t,{prestudent_id:e,status_kurzbz:n,studiensemester_kurzbz:i,ausbildungssemester:r},s){return this.$fhcApi.post(t,"api/frontend/v1/stv/status/updateStatus/"+e+"/"+n+"/"+i+"/"+r,s)},getStudienplaene(t){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getStudienplaene/"+t)},getStudiengang(t){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getStudiengang/"+t)},getStatusgruende(){return this.$fhcApi.get("api/frontend/v1/stv/status/getStatusgruende/")},getStati(){return this.$fhcApi.get("api/frontend/v1/stv/lists/getStati/")},addStudent(t,e){return this.$fhcApi.post("api/frontend/v1/stv/status/addStudent/"+t,e,{errorHeader:t})},changeStatus(t,e){return this.$fhcApi.post("api/frontend/v1/stv/status/changeStatus/"+t,e,{errorHeader:t})},getStatusarray(){return this.$fhcApi.get("api/frontend/v1/stv/status/getStatusarray/")}},details:{get(t,e){let n="api/frontend/v1/stv/student/get/"+encodeURIComponent(t)+"/"+encodeURIComponent(e);return this.$fhcApi.post(n)},save(t,e,n,i){let r="api/frontend/v1/stv/student/save/"+encodeURIComponent(e)+"/"+encodeURIComponent(n);return this.$fhcApi.post(t,r,i)}},exam:{getPruefungen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getPruefungen/"+n.id)},loadPruefung(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/loadPruefung/"+t)},getTypenPruefungen(){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getTypenPruefungen")},getAllLehreinheiten(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/getAllLehreinheiten/",t)},getLvsByStudent(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsByStudent/"+t)},getLvsandLesByStudent(t,e){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsandLesByStudent/"+t+"/"+e)},getLvsAndMas(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsAndMas/"+t)},getMitarbeiterLv(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getMitarbeiterLv/"+t)},getNoten(){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getNoten")},checkZeugnisnoteLv(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/",t)},addPruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/pruefung/insertPruefung/",e)},updatePruefung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/pruefung/updatePruefung/"+e,n)},deletePruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/deletePruefung/"+t)}},abschlusspruefung:{getAbschlusspruefung(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/"+n.id)},addNewAbschlusspruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/",e)},loadAbschlusspruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/",{id:t})},updateAbschlusspruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/",e)},deleteAbschlusspruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/",{id:t})},getTypenAbschlusspruefung(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/")},getTypenAntritte(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/")},getBeurteilungen(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/")},getAkadGrade(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/getAkadGrade/",{studiengang_kz:t})},getTypStudiengang(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/",{studiengang_kz:t})},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/"+t)},getPruefer(t){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getPruefer/"+t)},getNoten(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getNoten/")},checkForExistingExams(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/",{uids:t})}},grades:{list(){return this.$fhcApi.get("api/frontend/v1/stv/grades/list")},getCertificate(t,e){let n="api/frontend/v1/stv/grades/getCertificate/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},getTeacherProposal(t,e){let n="api/frontend/v1/stv/grades/getTeacherProposal/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},getRepeaterGrades(t,e){let n="api/frontend/v1/stv/grades/getRepeaterGrades/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},updateCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,note:i,lehrveranstaltung_bezeichnung:r}){return this.$fhcApi.post("api/frontend/v1/stv/grades/updateCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,note:i},{errorHeader:r})},deleteCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,lehrveranstaltung_bezeichnung:i}){return this.$fhcApi.post("api/frontend/v1/stv/grades/deleteCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n},{errorHeader:i})},copyTeacherProposalToCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,lehrveranstaltung_bezeichnung:i}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyTeacherProposalToCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n},{errorHeader:i})},copyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id:t,lv_bezeichnung:e}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate",{studierendenantrag_lehrveranstaltung_id:t},{errorHeader:e})},getGradeFromPoints(t,e,n,i){const r=i?{errorHandling:!1}:{};return this.$fhcApi.post("api/frontend/v1/stv/grades/getGradeFromPoints",{points:t,lehrveranstaltung_id:e,studiensemester_kurzbz:n},r)}},mobility:{getMobilitaeten(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getMobilitaeten/"+n.id)},getProgramsMobility(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getProgramsMobility/")},addNewMobility(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/mobility/insertMobility/",e)},loadMobility(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/loadMobility/"+t)},updateMobility(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/mobility/updateMobility/",e)},deleteMobility(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobility/"+t)},getLVList(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getLVList/"+t)},getAllLehreinheiten(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/getAllLehreinheiten/",t)},getLvsandLesByStudent(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getLvsandLesByStudent/"+t)},getPurposes(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getPurposes/"+n.id)},getSupports(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getSupports/"+n.id)},getListPurposes(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getListPurposes/")},getListSupports(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getListSupports/")},deleteMobilityPurpose(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobilityPurpose/"+t.bisio_id,t)},addMobilityPurpose(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/addMobilityPurpose/"+t.bisio_id,t)},deleteMobilitySupport(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobilitySupport/"+t.bisio_id,t)},addMobilitySupport(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/addMobilitySupport/"+t.bisio_id,t)}},archiv:{tabulatorConfig(t,e){return t.ajaxURL="api/frontend/v1/stv/archiv/get",t.ajaxParams=()=>({person_id:e.modelValue.person_id||e.modelValue.map(t=>t.person_id)}),t.ajaxRequestFunc=(t,e,n)=>this.$fhcApi.post(t,n,e),t.ajaxResponse=(t,e,n)=>n.data,t},getArchivVorlagen(){return this.$fhcApi.post("api/frontend/v1/stv/archiv/getArchivVorlagen")},archive(t){return this.$fhcApi.post("api/frontend/v1/documents/archive",t)},archiveSigned(t){return this.$fhcApi.post("api/frontend/v1/documents/archiveSigned",t)},update(t){return this.$fhcApi.post("api/frontend/v1/stv/archiv/update",t)},delete({akte_id:t,studiengang_kz:e}){return this.$fhcApi.post("api/frontend/v1/stv/archiv/delete",{akte_id:t,studiengang_kz:e})}},documents:{getDocumentsUnaccepted(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/"+n.id+"/"+n.studiengang_kz)},getDocumentsAccepted(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsAccepted/"+n.id+"/"+n.studiengang_kz)},deleteZuordnung(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/deleteZuordnung/"+t.prestudent_id+"/"+t.dokument_kurzbz)},createZuordnung(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/createZuordnung/"+t.prestudent_id+"/"+t.dokument_kurzbz)},loadAkte(t){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/loadAkte/"+t)},getDoktypen(){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDoktypen/")},updateFile(t,e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/updateAkte/"+t,e)},deleteFile(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/deleteAkte/"+t)},uploadFile(t,e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/uploadDokument/"+t,e)}},exemptions:{getAnrechnungen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getAnrechnungen/"+n.id)},getLehrveranstaltungen(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/"+t)},getBegruendungen(){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getBegruendungen/")},getLvsKompatibel(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLvsKompatibel/"+t)},getLektoren(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLektoren/"+t)},addNewAnrechnung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/anrechnungen/insertAnrechnung/",e)},loadAnrechnung(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/loadAnrechnung/"+t)},editAnrechnung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/anrechnungen/updateAnrechnung/",e)},deleteAnrechnung(t){return this.$fhcApi.post("api/frontend/v1/stv/anrechnungen/deleteAnrechnung/"+t)}},jointstudies:{getStudies(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudien/"+n.id)},getTypenMobility(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getTypenMobility/")},getStudiensemester(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudiensemester/")},getStudyprograms(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudienprogramme/")},getListPartner(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getPartnerfirmen/")},getStatiPrestudent(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStatiPrestudent/")},loadStudy(t){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/loadStudie/"+t)},insertStudy(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/GemeinsameStudien/insertStudie/",e)},updateStudy(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/GemeinsameStudien/updateStudie/",e)},deleteStudy(t){return this.$fhcApi.post("api/frontend/v1/stv/GemeinsameStudien/deleteStudie/"+t)}},courselist:{getCourselist(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/LvTermine/getStundenplan/"+n.student_uid+"/"+n.start_date+"/"+n.end_date+"/"+n.group_consecutiveHours+"/"+n.dbStundenplanTable)},getStudiensemester(){return this.$fhcApi.get("api/frontend/v1/stv/LvTermine/getStudiensemester/")}},configStudent(){return this.$fhcApi.get("api/frontend/v1/stv/config/student")},configStudents(){return this.$fhcApi.get("api/frontend/v1/stv/config/students")}},O={getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getUid/")},addNewNotiz(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/notiz/notizPerson/addNewNotiz/"+e,n)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/notiz/notizPerson/updateNotiz/"+e,n)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getMitarbeiter/"+t)},isBerechtigt(t,e){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/isBerechtigt/")}},x={getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizPrestudent/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizPrestudent/getUid/")},addNewNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizPrestudent/addNewNotiz/"+t,e)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizPrestudent/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizPrestudent/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizPrestudent/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizPrestudent/updateNotiz/"+t,e)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizPrestudent/getMitarbeiter/"+t)}},R={getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizMitarbeiter/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizMitarbeiter/getUid/")},addNewNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizMitarbeiter/addNewNotiz/"+t,e)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizMitarbeiter/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizMitarbeiter/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizMitarbeiter/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizMitarbeiter/updateNotiz/"+t,e)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizMitarbeiter/getMitarbeiter/"+t)}},B={getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/NotizProjekt/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/NotizProjekt/getUid/")},addNewNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/NotizProjekt/addNewNotiz/"+t,e)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/NotizProjekt/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/NotizProjekt/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/NotizProjekt/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/NotizProjekt/updateNotiz/"+t,e)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/NotizProjekt/getMitarbeiter/"+t)}},N={person:O,prestudent:x,mitarbeiter:R,anrechnung:{getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizAnrechnung/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizAnrechnung/getUid/")},addNewNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizAnrechnung/addNewNotiz/"+t,e)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizAnrechnung/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizAnrechnung/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizAnrechnung/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizAnrechnung/updateNotiz/"+t,e)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizAnrechnung/getMitarbeiter/"+t)}},bestellung:{getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizBestellung/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizBestellung/getUid/")},addNewNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizBestellung/addNewNotiz/"+t,e)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizBestellung/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizBestellung/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizBestellung/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizBestellung/updateNotiz/"+t,e)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizBestellung/getMitarbeiter/"+t)}},lehreinheit:{getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizLehreinheit/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizLehreinheit/getUid/")},addNewNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizLehreinheit/addNewNotiz/"+t,e)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizLehreinheit/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizLehreinheit/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizLehreinheit/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizLehreinheit/updateNotiz/"+t,e)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizLehreinheit/getMitarbeiter/"+t)}},projekt:B,projektphase:{getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizProjektphase/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizProjektphase/getUid/")},addNewNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjektphase/addNewNotiz/"+t,e)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjektphase/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjektphase/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjektphase/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjektphase/updateNotiz/"+t,e)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizProjektphase/getMitarbeiter/"+t)}},projekttask:{getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizProjekttask/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizProjekttask/getUid/")},addNewNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjekttask/addNewNotiz/"+t,e)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjekttask/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjekttask/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjekttask/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjekttask/updateNotiz/"+t,e)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizProjekttask/getMitarbeiter/"+t)}}},U={person:{getAllBetriebsmittel(t,e,n){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/"+n.type+"/"+n.id)},addNewBetriebsmittel(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/"+e,n)},loadBetriebsmittel(t){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/"+t)},updateBetriebsmittel(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/"+e,n)},deleteBetriebsmittel(t){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/"+t)},getTypenBetriebsmittel(){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/")},loadInventarliste(t){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/"+t)}}},L={updatePersonUnrulyStatus(t,e){try{const n={person_id:t,unruly:e},i="/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus";return this.$fhcApi.post(i,n,null)}catch(t){throw t}},filterPerson(t,e=""){try{const n=e+"/api/frontend/v1/checkperson/CheckPerson/filterPerson";return axios.post(n,t)}catch(t){throw t}}},M={getContentID(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/ContentID",{ort_kurzbz:t})},getRooms(t,e,n,i,r=0){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/getRooms",{datum:t,von:e,bis:n,typ:i,personenanzahl:r})},getRoomTypes(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/getTypes")}},j={content(t,e=null,n=null,i=null){return this.$fhcApi.get("/api/frontend/v1/Cms/content",{content_id:t,...e?{version:e}:{},...n?{sprache:n}:{},...i?{sichtbar:i}:{}})},getNews(t=1,e=10,n){return this.$fhcApi.get("/api/frontend/v1/Cms/getNews",{page:t,page_size:e,sprache:n})},news(t){return this.$fhcApi.get("/api/frontend/v1/Cms/news",{limit:t})},getNewsRowCount:function(){return this.$fhcApi.get("/api/frontend/v1/Cms/getNewsRowCount",{})},getNewsExtra:function(){return this.$fhcApi.get("/api/frontend/v1/Cms/getStudiengangInfoForNews",{})}},H={getStudentenMail(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Lehre/lvStudentenMail",{lehreinheit_id:t})},getLvInfo(t,e){return this.$fhcApi.get(`/api/frontend/v1/Lehre/LV/${t}/${e}`,{})},getStudentPruefungen(t){return this.$fhcApi.get(`/api/frontend/v1/Lehre/Pruefungen/${t}`,{})}},J={getLvMenu(t,e){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/LvMenu/getLvMenu/${t}/${e}`,{})}},I={person:{getMessages(t,e,n){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMessages/"+n.id+"/"+n.type+"/"+n.size+"/"+n.page)},getVorlagen(){return this.$fhcApi.get("api/frontend/v1/messages/messages/getVorlagen/")},getMsgVarsLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/")},getMessageVarsPerson(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMessageVarsPerson/"+t.id+"/"+t.type_id)},getMsgVarsPrestudent(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMsgVarsPrestudent/"+t.id+"/"+t.type_id)},getPersonId(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getPersonId/"+t.id+"/"+t.type_id)},getUid(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getUid/"+t.id+"/"+t.type_id)},getDataVorlage(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getDataVorlage/"+t)},getNameOfDefaultRecipient(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getNameOfDefaultRecipient/"+t.id+"/"+t.type_id)},getPreviewText(t,e){return this.$fhcApi.post("api/frontend/v1/messages/messages/getPreviewText/"+t.id+"/"+t.type_id,e)},getReplyData(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getReplyData/"+t)},sendMessageFromModalContext(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/messages/messages/sendMessage/"+e,n)},sendMessage(t,e){return this.$fhcApi.post("api/frontend/v1/messages/messages/sendMessage/"+t,e)},deleteMessage(t){return this.$fhcApi.post("api/frontend/v1/messages/messages/deleteMessage/"+t)}}},q={getVorlagen(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagen/")},getVorlagenByLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/")}},G={getStudiensemester:function(){return this.$fhcApi.get("/components/Cis/Mylv/Studiensemester",{})},getAllStudienSemester:function(t=void 0,e=void 0,n=void 0,i=void 0){return this.$fhcApi.get("/api/frontend/v1/Studium/getStudienAllSemester",{studiensemester:t,studiengang:e,semester:n,studienplan:i})},getStudiengaengeForStudienSemester:function(t){return this.$fhcApi.get(`/api/frontend/v1/Studium/getStudiengaengeForStudienSemester/${t}`,{})},getStudienplaeneBySemester:function(t,e){return this.$fhcApi.get("/api/frontend/v1/Studium/getStudienplaeneBySemester",{studiengang:t,studiensemester:e})},getLvPlanForStudiensemester:function(t,e){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/getLvPlanForStudiensemester/${t}/${e}`,{})},getLvEvaluierungInfo:function(t,e){return this.$fhcApi.get(`/api/frontend/v1/Studium/getLvEvaluierungInfo/${t}/${e}`,{})}},V={search:S,phrasen:C,navigation:P,dashboard:{async getViewData(){return this.$fhcApi.get("/api/frontend/v1/Cis4FhcApi/getViewData",null,null)}},filter:T,studstatus:k,profil:z,profilUpdate:E,lvPlan:w,bookmark:{getBookmarks:function(){return this.$fhcApi.get("/api/frontend/v1/Bookmark/getBookmarks",{})},delete:function(t){return this.$fhcApi.get(`/api/frontend/v1/Bookmark/delete/${t}`,{})},update:function({bookmark_id:t,url:e,title:n,tag:i=null}){return this.$fhcApi.post(`/api/frontend/v1/Bookmark/update/${t}`,{url:e,title:n})},insert:function({url:t,title:e,tag:n}){return this.$fhcApi.post("/api/frontend/v1/Bookmark/insert",{url:t,title:e,tag:n})}},stv:D,notiz:N,betriebsmittel:U,checkperson:L,ampeln:{open:function(){return this.$fhcApi.get("/api/frontend/v1/Ampeln/open",{})},all:function(){return this.$fhcApi.get("/api/frontend/v1/Ampeln/all",{})},confirm:function(t){return this.$fhcApi.get(`/api/frontend/v1/Ampeln/confirm/${t}`,{})}},ort:M,cms:j,lehre:H,addons:J,messages:I,vorlagen:q,addons:J,studiengang:{studiengangInformation:function(){return this.$fhcApi.get("/api/frontend/v1/Studgang/getStudiengangInfo",{})},getStudiengangByKz:function(t){return this.$fhcApi.get("/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz",{studiengang_kz:t})}},menu:{getMenu:function(){return this.$fhcApi.get("/api/frontend/v1/CisMenu/getMenu",{})}},authinfo:{getAuthUID(){return this.$fhcApi.get("/api/frontend/v1/AuthInfo/getAuthUID",{})},getAuthInfo(){return this.$fhcApi.get("/api/frontend/v1/AuthInfo/getAuthInfo",{})}},vertraege:{person:{getAllVertraege(t,e,n){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getAllVertraege/"+n.person_id)},getAllContractsNotAssigned(t,e,n){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getAllContractsNotAssigned/"+n.person_id)},getAllContractsAssigned(t,e,n){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getAllContractsAssigned/"+n.person_id+"/"+n.vertrag_id)},getAllContractsNotAssigned2(t){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getAllContractsNotAssigned/"+t)},getStatiOfContract(t,e,n){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getStatiOfContract/"+n.vertrag_id)},getAllContractTypes(){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getAllContractTypes/")},getAllContractStati(){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getAllContractStati/")},addNewContract(t,e){return this.$fhcApi.post(t,"api/frontend/v1/vertraege/vertraege/addNewContract/",e)},loadContract(t){return this.$fhcApi.post("api/frontend/v1/vertraege/vertraege/loadContract/"+t)},updateContract(t,e){return this.$fhcApi.post(t,"api/frontend/v1/vertraege/vertraege/updateContract/",e)},deleteContract(t){return this.$fhcApi.post("api/frontend/v1/vertraege/vertraege/deleteContract/"+t)},loadContractStatus(t){return this.$fhcApi.post("api/frontend/v1/vertraege/vertraege/loadContractStatus/"+t.vertrag_id,t)},insertContractStatus(t,e){return this.$fhcApi.post(t,"api/frontend/v1/vertraege/vertraege/insertContractStatus/"+e.vertrag_id,e)},updateContractStatus(t,e){return this.$fhcApi.post(t,"api/frontend/v1/vertraege/vertraege/updateContractStatus/"+e.vertrag_id,e)},deleteContractStatus(t){return this.$fhcApi.post("api/frontend/v1/vertraege/vertraege/deleteContractStatus/"+t.vertrag_id,t)},deleteLehrauftrag(t){return this.$fhcApi.post("api/frontend/v1/vertraege/vertraege/deleteLehrauftrag/"+t.vertrag_id,t)},deleteBetreuung(t){return this.$fhcApi.post("api/frontend/v1/vertraege/vertraege/deleteBetreuung/"+t.vertrag_id,t)},getMitarbeiter(t){return this.$fhcApi.post("api/frontend/v1/vertraege/vertraege/getMitarbeiter/")},getHeader(t){return this.$fhcApi.post("api/frontend/v1/vertraege/vertraege/getHeader/"+t)},getPersonAbteilung(t){return this.$fhcApi.post("api/frontend/v1/vertraege/vertraege/getPersonAbteilung/"+t)},getLeitungOrg(t){return this.$fhcApi.post("api/frontend/v1/vertraege/vertraege/getLeitungOrg/"+t)},getMitarbeiterUid(t){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getMitarbeiterUid/"+t)}},configPrintDocument(){return this.$fhcApi.get("api/frontend/v1/vertraege/config/printDocument")}},studium:G,language:{getAll(){return this.$fhcApi.get("/api/frontend/v1/language/get")}}},W={install:(t,e)=>{if(t.config.globalProperties.$fhcApi)return void(e?.factory&&(console.warn("$fhcApi is DEPRECATED!"),t.config.globalProperties.$fhcApi.factory.addEndpoints(e.factory)));function n(t,e,n,i){if("string"==typeof t&&void 0===i)[e,n,i]=[t,e,n],t=void 0;else if(t){if("object"!=typeof t)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===e&&void 0===n&&void 0===i&&(i=t,t=void 0)}if(t){if(!t.clearValidation||!t.setFeedback)throw new TypeError("'form' is not a Form Component");t={clearValidation:t.clearValidation,setFeedback:t.setFeedback},i?i.form=t:i={form:t}}return[e,n,i]}function i(t){const e=t.data;return delete t.data,e.meta?e.meta.response=t:e.meta={response:t},e}FHC_JS_DATA_STORAGE_OBJECT.app_root,FHC_JS_DATA_STORAGE_OBJECT.ci_router;const r=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});r.interceptors.request.use(t=>{if("post"!=t.method||!t.data)return t;if(t.data instanceof FormData)return t;if(!Object.values(t.data).every(t=>!(t instanceof FileList)&&(!Array.isArray(t)||t.every(t=>!(t instanceof File))))){const e=Object.entries(t.data).reduce((t,[e,n])=>{if(n instanceof FileList)for(const i of n)t.FormData.append(e+(n.length>1?"[]":""),i);else Array.isArray(n)?n.every(t=>!(t instanceof File))?t.jsondata[e]=n:n.forEach(i=>t.FormData.append(e+(n.length>1?"[]":""),i)):t.jsondata[e]=n;return t},{FormData:new FormData,jsondata:{}});e.FormData.append("_jsondata",JSON.stringify(e.jsondata)),t.data=e.FormData}return t}),r.interceptors.response.use(e=>("off"==e.config?.errorHandling||!1===e.config?.errorHandling||"fail"==e.config?.errorHandling||e.data.errors&&(e.data.errors=e.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$fhcApi._defaultErrorHandlers[n.type])(n,e.config))),i(e)),e=>"ERR_CANCELED"==e.code?Promise.reject({handled:!0,...e}):"off"==e.config?.errorHandling||!1===e.config?.errorHandling||"success"==e.config?.errorHandling?Promise.reject(e):e.response?404==e.response.status?(t.config.globalProperties.$fhcAlert.alertDefault("error",e.message,e.request.responseURL,!0),Promise.reject({handled:!0,...e})):(e.response.data.errors=e.response.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$fhcApi._defaultErrorHandlers[n.type])(n,e.config)),e.response.data.errors.length?Promise.reject(e):Promise.reject({handled:!0,...e})):e.request?(t.config.globalProperties.$fhcAlert.alertDefault("error",e.message,e.request.responseURL),Promise.reject({handled:!0,...e})):(t.config.globalProperties.$fhcAlert.alertError(e.message),Promise.reject({handled:!0,...e}))),t.config.globalProperties.$fhcApi={getUri:t=>(console.warn("$fhcApi.getUri is DEPRECATED! Use $api.getUri instead."),r.getUri({url:t})),get:(t,e,i,s)=>(console.warn("$fhcApi.get is DEPRECATED! Use $api.get instead."),[e,i,s]=n(t,e,i,s),i&&(s?s.params=i:s={params:i}),r.get(e,s)),post:(t,e,i,s)=>(console.warn("$fhcApi.post is DEPRECATED! Use $api.post instead."),[e,i,s]=n(t,e,i,s),r.post(e,i,s)),_defaultErrorHandlers:{validation(e,n){const i=t.config.globalProperties.$fhcAlert;return n?.form?(n.form.clearValidation(),n.form.setFeedback(!1,e.messages),!1):Array.isArray(e.messages)?(e.messages.forEach(i.alertError),!1):"object"!=typeof e.messages||(n?.errorHeader?Object.values(e.messages).forEach(e=>i.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e,!0)):Object.entries(e.messages).forEach(([t,e])=>i.alertDefault("error",t,e,!0)),!1)},general(e,n){const i=t.config.globalProperties.$fhcAlert;n?.form?n.form.setFeedback(!1,e.message):n?.errorHeader?i.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e.message,!0):i.alertError(e.message)},php(e){const n=t.config.globalProperties.$fhcAlert;var i="";switch(i+="Message: "+e.message+"\n\n",i+="Filename: "+e.filename+"\n",i+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(i+="\nBacktrace: ",e.backtrace.forEach(t=>{i+="\n\tFile: "+t.file+"\n",i+="\tLine: "+t.line+"\n",i+="\tFunction: "+t.function+"\n"})),e.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":n.alertDefault("warn","PHP "+e.severity,i,!0);break;case"Notice":case"User Notice":case"Runtime Notice":n.alertDefault("info","PHP "+e.severity,i,!0);break;default:i="Type: PHP "+e.severity+"\n\n"+i,n.alertSystemError(i)}},exception(e){const n=t.config.globalProperties.$fhcAlert;var i="";i+="Type: "+e.class+"\n\n",i+="Message: "+e.message+"\n\n",i+="Filename: "+e.filename+"\n",i+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(i+="\nBacktrace: ",e.backtrace.forEach(t=>{i+="\n\tFile: "+t.file+"\n",i+="\tLine: "+t.line+"\n",i+="\tFunction: "+t.function+"\n"})),n.alertSystemError(i)},db(e){const n=t.config.globalProperties.$fhcAlert;var i="";void 0!==e.heading&&(i+=e.heading+"\n\n"),void 0!==e.code&&(i+="Code: "+e.code+"\n\n"),void 0!==e.sql&&(i+="SQL: "+e.sql+"\n\n"),void 0!==e.message?i+="Message: "+e.message+"\n\n":void 0!==e.messages&&(i+="Messages: "+e.messages.join("\n\t")+"\n\n"),void 0!==e.filename&&(i+="Filename: "+e.filename+"\n"),void 0!==e.line&&(i+="Line Number: "+e.line+"\n"),n.alertSystemError(i)},auth(e,n){const i=t.config.globalProperties.$fhcAlert;var r="";r+="Controller name: "+e.controller+"\n",r+="Method name: "+e.method+"\n",r+="Required permissions: "+e.required_permissions,n?.errorHeader?i.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e.message,!0):i.alertDefault("error",e.message,r)}}};class s{constructor(e,n){void 0===n?(this.$fhcApi={getUri:e=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.getUri(e)),get:(e,n,i,r)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.get(e,n,i,r)),post:(e,n,i,r)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.post(e,n,i,r))},Object.defineProperty(this.$fhcApi,"factory",{get:()=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.factory)}),t.config.globalProperties.$fhcApi.factory=this):Object.defineProperty(this,"$fhcApi",{get(){return(n||this).$fhcApi}}),this.addEndpoints(e,!0)}addEndpoints(t,e){Object.keys(t).forEach(e=>{Object.defineProperty(this,e,{get(){return"function"==typeof t[e]?t[e].bind(this):new s(t[e],this.$fhcApi.factory)}})}),e||console.warn("$fhcApi.factory.addEndpoints() is DEPRECATED!")}}const a=new s(V);e?.factory&&(console.warn("$fhcApi is DEPRECATED!"),a.addEndpoints(e.factory)),t.config.globalProperties.$fhcApi.factory=a,t.provide("$fhcApi",t.config.globalProperties.$fhcApi)}};const Z="error",K="retval",X={get:function(t,e,n=null){return X._axiosCall(t,e,"get",n)},post:function(t,e,n=null){return X._axiosCall(t,e,"post",n)},isSuccess:function(t){return!("object"!=typeof t||!t.hasOwnProperty(Z)||!t.hasOwnProperty(K)||0!=t.error)},isError:function(t){return!X.isSuccess(t)},hasData:function(t){return!(!X.isSuccess(t)||!("object"==typeof t[K]&&Object.keys(t[K]).length>0||"array"==typeof t[K]&&t[K].length>0||"string"==typeof t[K]&&""!=t[K].trim()||"number"==typeof t[K]))},getData:function(t){return X.hasData(t)?t[K]:null},getError:function(t){return"object"==typeof t&&Object.keys(t).length>0&&t.hasOwnProperty(K)?t[K]:"Generic error"},getErrorCode:function(t){return"object"==typeof t&&t.hasOwnProperty(Z)?t[Z]:1},_generateRouterURI:function(t){var e=null;return"undefined"!=typeof FHC_JS_DATA_STORAGE_OBJECT&&(e=FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"+t),e},_printDebug:function(t,e,n){},_axiosCall:function(t,e,n,i){let r={method:n,url:X._generateRouterURI(t),timeout:5e3};if("get"==n?r.params=e:r.data=e,"object"==typeof i)for(var s in i)r[s]=i[s];return axios(r)}},Q=document.createElement("div"),Y=Vue.createApp({name:"FhcAlertApp",components:{PvToast:e,PvConfirm:n},methods:{mailToUrl:t=>"mailto:"+FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto+"?subject=Meldung%20Systemfehler&body="+("\n\t\t\t\tDanke, dass Sie uns den Fehler melden. %0D%0A %0D%0A\n\t\t\t\tBitte beschreiben Sie uns ausführlich das Problem.%0D%0A\n\t\t\t\tBsp: Ich habe X ausgewählt und Y angelegt. Beim Speichern erhielt ich die Fehlermeldung. [Optional: Ich habe den Browser Z verwendet.]%0D%0A\n\t\t\t\t-----------------------------------------------------------------------------------------------------------------------------------%0D%0A\n\t\t\t\tPROBLEM: ... %0D%0A %0D%0A %0D%0A\n\n\t\t\t\t-----------------------------------------------------------------------------------------------------------------------------------%0D%0A\n\t\t\t\tFehler URL: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method+"%0D%0A\n\t\t\t\tFehler Meldung: "+t.message.detail+"%0D%0A\n\t\t\t\t-----------------------------------------------------------------------------------------------------------------------------------%0D%0A %0D%0A\n\t\t\t\tWir kümmern uns um eine rasche Behebung des Problems!"),openMessagecard(t){bootstrap.Collapse.getOrCreateInstance(t.target.getAttribute("href")).toggle()}},unmounted(){Q.parentElement.removeChild(Q)},computed:{showmaillink:function(){return""!==FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto}},template:'\n\t<pv-toast ref="toast" class="fhc-alert" :base-z-index="99999">\n\t\t<template #message="{ message }">\n\t\t\t\x3c!--span :class="slotProps.iconClass"></span--\x3e\n\t\t\t<div class="p-toast-message-text">\n\t\t\t\t<span class="p-toast-summary">{{ message.summary }}</span>\n\t\t\t\t<div v-if="message.detail && message.html" class="p-toast-detail" v-html="message.detail"></div>\n\t\t\t\t<div v-else-if="message.detail" class="p-toast-detail">{{ message.detail }}</div>\n\t\t\t</div>\n\t\t</template>\n\t</pv-toast>\n\t<pv-toast ref="alert" class="fhc-alert" :base-z-index="99999" position="center">\n\t\t<template #message="slotProps">\n\t\t\t<i class="fa fa-circle-exclamation fa-2xl mt-3"></i>\n\t\t\t<div class="p-toast-message-text">\n\t\t\t\t<span class="p-toast-summary">{{slotProps.message.summary}}</span>\n\t\t\t\t<div class="p-toast-detail my-3">Sorry! Ein interner technischer Fehler ist aufgetreten.</div>\n\t\t\t\t<div class="d-flex justify-content-between align-items-center">\n\t\t\t\t\t<a\n\t\t\t\t\t\tclass="align-bottom flex-fill me-2"\n\t\t\t\t\t\tdata-bs-toggle="collapse"\n\t\t\t\t\t\t:href="\'#fhcAlertCollapseMessageCard\' + slotProps.message.id"\n\t\t\t\t\t\trole="button"\n\t\t\t\t\t\taria-expanded="false"\n\t\t\t\t\t\t:aria-controls="\'fhcAlertCollapseMessageCard\' + slotProps.message.id"\n\t\t\t\t\t\t@click="openMessagecard"\n\t\t\t\t\t\t>\n\t\t\t\t\t\tFehler anzeigen\n\t\t\t\t\t</a>\n\t\t\t\t\t<a\n\t\t\t\t\t\tv-if="showmaillink"\n\t\t\t\t\t\tclass="btn btn-primary flex-fill"\n\t\t\t\t\t\ttarget="_blank"\n\t\t\t\t\t\t:href="mailToUrl(slotProps)"\n\t\t\t\t\t\t>\n\t\t\t\t\t\tFehler melden\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t\t<div ref="messageCard" :id="\'fhcAlertCollapseMessageCard\' + slotProps.message.id" class="collapse mt-3">\n\t\t\t\t\t<div class="card card-body text-body small alertCollapseText">\n\t\t\t\t\t\t{{slotProps.message.detail}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\t</pv-toast>\n\t<pv-confirm group="fhcAlertConfirm"></pv-confirm>'});Y.use(t),Y.use(i);const tt=Y.mount(Q);document.body.appendChild(Q);var et={install:(t,e)=>{t.config.globalProperties.$p||t.use(dt);const n={alertSuccess(t){if(Array.isArray(t))return t.forEach(this.alertSuccess);tt.$refs.toast.add({severity:"success",summary:"Info",detail:t,life:1e3})},alertInfo(t){if(Array.isArray(t))return t.forEach(this.alertInfo);tt.$refs.toast.add({severity:"info",summary:"Info",detail:t,life:3e3})},alertWarning(t){if(Array.isArray(t))return t.forEach(this.alertWarning);tt.$refs.toast.add({severity:"warn",summary:"Achtung",detail:t})},alertError(t){if(Array.isArray(t))return t.forEach(this.alertError);tt.$refs.toast.add({severity:"error",summary:"Achtung",detail:t})},alertSystemError(e){if(Array.isArray(e))return e.forEach(this.alertSystemError);tt.$refs.alert.add({severity:"error",summary:Vue.computed(()=>t.config.globalProperties.$p.t("alert/systemerror")),detail:e})},confirmDelete:()=>new Promise((e,n)=>{tt.$confirm.require({group:"fhcAlertConfirm",header:Vue.computed(()=>t.config.globalProperties.$p.t("alert/attention")),message:Vue.computed(()=>t.config.globalProperties.$p.t("alert/confirm_delete")),acceptLabel:Vue.computed(()=>t.config.globalProperties.$p.t("ui/loeschen")),acceptClass:"p-button-danger",rejectLabel:Vue.computed(()=>t.config.globalProperties.$p.t("ui/abbrechen")),rejectClass:"p-button-secondary",accept(){e(!0)},reject(){e(!1)}})}),confirm:e=>new Promise((n,i)=>{tt.$confirm.require({group:e?.group??"fhcAlertConfirm",header:e?.header??Vue.computed(()=>t.config.globalProperties.$p.t("alert/attention")),message:e?.message??"",acceptLabel:e?.acceptLabel??"Ok",acceptClass:e?.acceptClass??"btn btn-primary",rejectLabel:e?.rejectLabel??Vue.computed(()=>t.config.globalProperties.$p.t("ui/abbrechen")),rejectClass:e?.rejectClass??"btn btn-outline-secondary",accept(){n(!0)},reject(){n(!1)}})}),alertDefault(t,e,n,i=!1,r=!1){let s={severity:t,summary:e,detail:n,html:r};i||(s.life=3e3),tt.$refs.toast.add(s)},alertMultiple(t,e="info",n="Info",i=!1,r=!1){return!!t.every(t=>"string"==typeof t)&&(t.forEach(t=>this.alertDefault(e,n,t,i,r)),!0)},handleSystemError(t){if(!t.hasOwnProperty("name")||t.name.toLowerCase()!=="AbortError".toLowerCase()){if("string"==typeof t)return n.alertSystemError(t);if(Array.isArray(t)&&t.every(t=>"string"==typeof t))return t.every(n.alertSystemError);if(!t.hasOwnProperty("handled")||!t.handled){if("object"==typeof t&&null!==t){let e="";return t.hasOwnProperty("response")&&t.response?.data?.retval?e+="Error Message: "+(t.response.data.retval.message||t.response.data.retval)+"\r\n":t.hasOwnProperty("message")&&(e+="Error Message: "+t.message.toUpperCase()+"\r\n"),t.hasOwnProperty("config")&&t.config.hasOwnProperty("url")&&(e+="Error ConfigURL: "+t.config.url+"\r\n"),t.hasOwnProperty("stack")&&(e+="Error Stack: "+t.stack+"\r\n"),""==e&&(e="Error Message: "+JSON.stringify(t)+"\r\n"),e+="Error Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method,n.alertSystemError(e)}n.alertSystemError("alertSystemError throws Generic Error\r\nError Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method)}}},handleSystemMessage(t){if("string"==typeof t)return n.alertWarning(t);if(Array.isArray(t)){if(t.every(t=>"string"==typeof t))return t.every(n.alertWarning);if(t.every(t=>"object"==typeof t)&&null!==msg)return t.every(t=>{t.hasOwnProperty("data")&&t.data.hasOwnProperty("retval")?n.alertWarning(JSON.stringify(t.data.retval)):n.alertSystemError(JSON.stringify(t))})}"object"!=typeof t||null===t?n.alertSystemError("alertSystemError throws Generic Error\r\nError Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method):t.hasOwnProperty("data")&&t.data.hasOwnProperty("retval")?n.alertWarning(JSON.stringify(t.data.retval)):n.alertSystemError(JSON.stringify(t))},resetFormValidation(t){const e=new Event("fhc-form-reset");t.querySelectorAll(["[data-fhc-form-validate],[data-fhc-form-error]"]).forEach(t=>t.dispatchEvent(e))},handleFormValidation(t,e){if(void 0===e){if(t&&t.nodeType===Node.ELEMENT_NODE)return e=>n.handleFormValidation(e,t)}else if(400==t?.response?.status){let i=X.getError(t.response.data);"object"!=typeof i&&(i=t.response.data),n.resetFormValidation(e);const r=Object.entries(i).filter(([t,n])=>{const i=e.querySelector('[data-fhc-form-validate="'+t+'"]');return!i||(i.dispatchEvent(new CustomEvent("fhc-form-invalidate",{detail:n})),!1)}).map(t=>t[1]),s=e.querySelector("[data-fhc-form-error]");return void(s&&r.length?s.dispatchEvent(new CustomEvent("fhc-form-error",{detail:r})):r.forEach(n.alertError))}if(400==t?.response?.status){let e=X.getError(t.response.data);n.alertError("object"==typeof e?Object.values(e):e)}else n.handleSystemError(t)}};t.config.globalProperties.$fhcAlert=n,t.provide("$fhcAlert",t.config.globalProperties.$fhcAlert)}},nt={install:(t,e)=>{if(t.config.globalProperties.$api)return;function n(t,e){Array.isArray(t)?t.forEach(e):Object.entries(t).forEach(([t,n])=>n.forEach(n=>e(n,t)))}t.config.globalProperties.$fhcAlert||t.use(et);let i={success:!0,fail:!0,combine:{form:["validation","general"],toast:["validation","general","not_found","site_failed"]},handler:{form(t,e){t.clearValidation(),e.forEach(e=>t.setFeedback(!1,e.messages||e.message))},async toast(e){const n=t.config.globalProperties.$p;if(!n)return Promise.reject("Phrasen plugin not loaded!");async function i(t){t=t.reduce((t,e)=>{switch(e.type){case"not_found":case"site_failed":e.message?t[e.message]=[e.url]:t._default=[e.url];break;case"general":t._default||(t._default=[]),t._default.push(e.message);break;case"validation":Object.entries(e.messages).forEach(([e,n])=>{t[e]||(t[e]=[]),Array.isArray(n)?t[e].push(...n):t[e].push(n)})}return t},{});let e=0;const i=await Promise.all(Object.entries(t).sort((t,e)=>["_default"].indexOf(e[0])-["_default"].indexOf(t[0])).map(async([t,i])=>{if("_default"==t){await n.loadCategory("dashboard");t='<dt class="d-none">'+n.t("dashboard/general")+"</dt>"}else t="<dt>"+t+"</dt>";return e+=i.length,t+"<dd>"+i.join("</dd><dd>")+"</dd>"}));return{counter:e,msgs:i}}let r,s;Array.isArray(e)?({counter:r,msgs:s}=await i(e)):({counter:r,msgs:s}=await Object.entries(e).reduce(async(t,[e,n])=>{const r=await t,{counter:s,msgs:a}=await i(n);return r.counter+=s,r.msgs.push("<dt>"+e+"</dt><dd><dl>"+a.join("")+"</dl></dd>"),r},Promise.resolve({counter:0,msgs:[]}))),await n.loadCategory("ui");const a=n.t("ui/n_errors",{n:r});t.config.globalProperties.$fhcAlert.alertDefault("error",a,"<dl>"+s.join("")+"</dl>",!0,!0)},php(e){n(e,(e,n)=>{var i="";switch(i+="Message: "+e.message+"\n\n",i+="Filename: "+e.filename+"\n",i+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(i+="\nBacktrace: ",e.backtrace.forEach(t=>{i+="\n\tFile: "+t.file+"\n",i+="\tLine: "+t.line+"\n",i+="\tFunction: "+t.function+"\n"})),e.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":n?n+=": PHP "+e.severity:n="PHP "+e.severity,t.config.globalProperties.$fhcAlert.alertDefault("warn",n,i,!0);break;case"Notice":case"User Notice":case"Runtime Notice":n?n+=": PHP "+e.severity:n="PHP "+e.severity,t.config.globalProperties.$fhcAlert.alertDefault("info",n,i,!0);break;default:i="Type: PHP "+e.severity+"\n\n"+i,n&&(i=n+"\n\n"+i),t.config.globalProperties.$fhcAlert.alertSystemError(i)}})},exception(e){n(e,(e,n)=>{var i="";n&&(i+=n+"\n\n"),i+="Type: "+e.class+"\n\n",i+="Message: "+e.message+"\n\n",i+="Filename: "+e.filename+"\n",i+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(i+="\nBacktrace: ",e.backtrace.forEach(t=>{i+="\n\tFile: "+t.file+"\n",i+="\tLine: "+t.line+"\n",i+="\tFunction: "+t.function+"\n"})),t.config.globalProperties.$fhcAlert.alertSystemError(i)})},db(e){n(e,(e,n)=>{var i="";n&&(i+=n+"\n\n"),void 0!==e.heading&&(i+=e.heading+"\n\n"),void 0!==e.code&&(i+="Code: "+e.code+"\n\n"),void 0!==e.sql&&(i+="SQL: "+e.sql+"\n\n"),void 0!==e.message?i+="Message: "+e.message+"\n\n":void 0!==e.messages&&(i+="Messages: "+e.messages.join("\n\t")+"\n\n"),void 0!==e.filename&&(i+="Filename: "+e.filename+"\n"),void 0!==e.line&&(i+="Line Number: "+e.line+"\n"),t.config.globalProperties.$fhcAlert.alertSystemError(i)})},auth(e){n(e,(e,n)=>{n?n+=": "+e.message:n=e.message;var i="";i+="Controller name: "+e.controller+"\n",i+="Method name: "+e.method+"\n",i+="Required permissions: "+e.required_permissions,t.config.globalProperties.$fhcAlert.alertDefault("error",n,i,!0)})}}};function r(t,e,n,i){if("string"==typeof t&&void 0===i)[e,n,i]=[t,e,n],t=void 0;else if(t){if("object"!=typeof t)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===e&&void 0===n&&void 0===i&&(i=t,t=void 0)}if(t){if(!t.clearValidation||!t.setFeedback)throw new TypeError("'form' is not a Form Component");t={clearValidation:t.clearValidation,setFeedback:t.setFeedback},i?i.form=t:i={form:t}}return[e,n,i]}function s(t){if("string"==typeof t.data||t.data instanceof String)return s({data:t});const e=t.data;return delete t.data,e?(e.meta?e.meta.response=t:e.meta={response:t},e):{meta:{response:t},data:null}}function a(t){if(!1===t||"off"===t)return{...i,success:!1,fail:!1};if(!t||!0===t)return{...i};if("success"===t)return{...i,fail:!1};if("fail"===t)return{...i,success:!1};const{success:e,fail:n,handler:r,combine:s}=t;return t={...i},Object.entries({fail:n,success:e}).forEach(([e,n])=>{void 0!==n&&(t[e]=n)}),Object.entries({handler:r,combine:s}).forEach(([e,n])=>{void 0!==n&&(t[e]={...t[e],...n})}),t}function o(t){const e=a(t?.errorHandling);if(t?.form){const n=e.handler.form;e.handler={...e.handler,form:e=>n(t.form,e)}}else e.combine={...e.combine,form:[]};return e}function l(t){return t.response?404==t.response.status?[{type:"not_found",message:t.message,url:t.request.responseURL}]:null==t.response.data.errors?[]:t.response.data.errors:t.request?[{type:"site_failed",message:t.message,url:t.request.responseURL}]:[{type:"script",message:t.message}]}function d(t,e){const n={},i=[];if(null==e)return{};for(;e.length;)i.push(e.pop());for(var r of i){let i=r.type,a=null;for(var s in t.combine){let e=t.combine[s].includes(i),n=t.handler[s];if(e&&n&&(a=s,"form"==a))break}a&&(i=a);t.handler[i]?(n[i]||(n[i]=[]),Array.isArray(r)?n[i].push(...r):n[i].push(r)):e.push(r)}return n}void 0!==e?.errorHandling&&(i=a(e.errorHandling));const p=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});p.interceptors.request.use(t=>{if("post"!=t.method||!t.data)return t;if(t.data instanceof FormData)return t;if(!Object.values(t.data).every(t=>!(t instanceof FileList)&&(!Array.isArray(t)||t.every(t=>!(t instanceof File))))){const e=Object.entries(t.data).reduce((t,[e,n])=>{if(n instanceof FileList)for(const i of n)t.FormData.append(e+(n.length>1?"[]":""),i);else Array.isArray(n)?n.every(t=>!(t instanceof File))?t.jsondata[e]=n:n.forEach(i=>t.FormData.append(e+(n.length>1?"[]":""),i)):t.jsondata[e]=n;return t},{FormData:new FormData,jsondata:{}});e.FormData.append("_jsondata",JSON.stringify(e.jsondata)),t.data=e.FormData}return t}),p.interceptors.response.use(e=>("off"==e.config?.errorHandling||!1===e.config?.errorHandling||"fail"==e.config?.errorHandling||e.data.errors&&(e.data.errors=e.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$api._defaultErrorHandlers[n.type])(n,e.config))),s(e)),t=>{if("ERR_CANCELED"==t.code)return Promise.reject({handled:!0,...t});const e=o(t.config);if(!e.fail)return Promise.reject(t);const n=l(t),i=d(e,n);for(var r in i)e.handler[r](i[r]);return n.length?Promise.reject(t):Promise.reject({handled:!0,...t})}),t.config.globalProperties.$api={getUri:t=>p.getUri({url:t}),get:(t,e,n,i)=>([e,n,i]=r(t,e,n,i),n&&(i?i.params=n:i={params:n}),p.get(e,i)),post:(t,e,n,i)=>([e,n,i]=r(t,e,n,i),p.post(e,n,i)),call(e,n,i){if(Array.isArray(e)){const s=t.config.globalProperties.$api;return Promise.allSettled(e.map((t,e)=>(Array.isArray(t)||(t=["#"+e,t]),s.call(t[1],{errorHeader:t[0],errorHandling:!1})))).then(t=>{const[,,e]=r(i,void 0,void 0,n||{}),s=o(e);if(!s.success&&!s.fail)return t;const a={};for(var p of t){const[t,e]="fulfilled"===p.status?[s.success,p.value]:[s.fail,p.reason];if(!t)return;const n=d(s,l(e));for(var u in n)a[u]?a[u][e.config.errorHeader]=n[u]:a[u]={[e.config.errorHeader]:n[u]}}for(var c in a)s.handler[c](a[c]);return t})}let{method:s,url:a,params:p,config:u}=e;return void 0!==n&&(u=n),s||(s="get"),s.toLowerCase&&(s=s.toLowerCase()),"get"==s?this.get(i,a,p,u):"post"==s?this.post(i,a,p,u):void console.error("FhcApi: method not allowed:",s)},getErrorHandler:t=>o(t)},t.provide("$api",t.config.globalProperties.$api)}},it={loadCategory:t=>({method:"get",url:"/api/frontend/v1/phrasen/loadModule/"+t}),setLanguage:(t,e)=>({method:"post",url:"/api/frontend/v1/phrasen/setLanguage",params:{categories:t,language:e}}),getLanguage:()=>({method:"get",url:"/api/frontend/v1/phrasen/getLanguage"}),getActiveDbLanguages:()=>({method:"get",url:"/api/frontend/v1/phrasen/getAllLanguages"})};const rt=Vue.reactive({}),st={};let at=Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language),ot=Vue.computed(()=>at.value?FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(t=>t.sprache==at.value).LC_Time:null);const lt={user_language:at,user_locale:ot,setLanguage(t){const e=Object.keys(rt);return this.config.globalProperties.$api.call(it.setLanguage(e,t)).then(e=>(e.data.forEach(t=>{rt[t.category][t.phrase]=t.text}),at.value=t,e))},loadCategory(t){return Array.isArray(t)?Promise.all(t.map(this.config.globalProperties.$p.loadCategory)):(st[t]||(st[t]=this.config.globalProperties.$api.call(it.loadCategory(t)).then(e=>e?.data?function(t,e){return t.filter(t=>t.category==e).reduce((t,e)=>(t[e.phrase]||(t[e.phrase]=e.text),t),{})}(e.data,t):{}).then(e=>{rt[t]=e})),st[t])},t_ref(t,e,n){return console.warn("deprecated"),Vue.computed(()=>this.t(t,e,n))},t(t,e,n){if(void 0===n&&(Array.isArray(t)&&2==t.length||t.split&&2==t.split("/").length)&&(n=e,[t,e]=t.split?t.split("/"):t),void 0===e)return console.error("invalid input",t,e,n),"";let i=Vue.computed(()=>rt[t]?function(t,e,n){let i=rt[t][e];return i?(n&&(i=i.replace(/\{([^}]*)\}/g,(t,e)=>void 0===n[e]?t:n[e])),i):"<< PHRASE "+e+">>"}(t,e,n):"");return rt[t]||this.loadCategory(t),i.value}};var dt={install(t,e){t.config.globalProperties.$fhcApi||t.use(W),t.config.globalProperties.$api||t.use(nt),t.config.globalProperties.$p={t:lt.t,loadCategory:e=>lt.loadCategory.call(t,e),setLanguage:e=>lt.setLanguage.call(t,e),user_language:at,user_locale:ot,t_ref:lt.t_ref},t.provide("$p",t.config.globalProperties.$p)}},pt=Object.freeze({__proto__:null,default:dt,user_locale:ot});const ut=Vue.createApp({name:"ProfilUpdateRequestsApp",components:{"profil-update-view":F},data:()=>({profilUpdateStates:null}),provide(){return{profilUpdateStates:Vue.computed(()=>!!this.profilUpdateStates&&this.profilUpdateStates)}},methods:{},created(){this.$api.call(b.getStatus()).then(t=>{this.profilUpdateStates=t.data}).catch(t=>{console.error(t)})}});FhcApps.makeExtendable(ut),ut.use(dt).mount("#content");
//# sourceMappingURL=ProfilUpdateRequests.js.map