diff --git a/angular.json b/angular.json index e5d939e..1d5eaee 100644 --- a/angular.json +++ b/angular.json @@ -43,12 +43,7 @@ }, "configurations": { "production": { - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.prod.ts" - } - ], + "fileReplacements": [], "optimization": true, "outputHashing": "all", "sourceMap": false, diff --git a/src/app/components/page-header-menu/page-header-menu.component.html b/src/app/components/page-header-menu/page-header-menu.component.html index e2aa7d5..8b45aff 100644 --- a/src/app/components/page-header-menu/page-header-menu.component.html +++ b/src/app/components/page-header-menu/page-header-menu.component.html @@ -39,6 +39,7 @@
|
+ |
+ |
+
+
+
+ |
|
|
\n \n BAE GmbH, Sitz: Coburg, Amtsgericht Coburg, HRB 6357. \n Gesch\xe4ftsf\xfchrer J\xfcrgen Kerscher, Michael H\xf6lzle \n Standorte BAE GROUP: Frankfurt, Berlin, M\xfcnchen, Coburg, Bamberg, Deggendorf, Sofia, Varna \n \n \n
bitte pr\xfcfen, ob du f\xfcr folgende Zeitr\xe4ume: ",N+='
Die Urlaubsvertretung f\xfcr mich \xfcbernehmen kannst. ",N+=" ",N+='Urlaub - Homeoffice - Planung jetzt \xf6ffnen',N+=" "+this.Pool.GetFilledSignatur(_,!0),V.push({emailAddress:{address:w.Email,name:w.Vorname+" "+w.Name}}),G?this.Graph.SendMail(V,L,N).then(()=>{console.log("Vertretungsanfrage wurde an "+w.Vorname+" "+w.Name+" gesendet."),H(D)}).catch(ie=>{K(ie)}):(console.log("Es wurde keine Vertretungsanfrage gesendet."),H(D))})}catch(L){this.Debug.ShowErrorMessage(L,"Database Urlaub","SendVertreteranfragen",this.Debug.Typen.Service)}}SendVertreterreminder(_){try{let D,w="Vertretungsanfragen in der Urlaubsplaner App",L=[];return new Promise((N,V)=>{D="Hallo "+_.Vorname+", es gibt neue Vertretungsanfragen f\xfcr dich. ",D+="Bitte pr\xfcfe die Anfragen in der App.",D+=" ",D+='Urlaub - Homeoffice - Planung jetzt \xf6ffnen',D+=" "+this.Pool.GetFilledSignatur(this.Pool.Mitarbeiterdaten,!0),L.push({emailAddress:{address:_.Email,name:_.Vorname+" "+_.Name}}),this.Graph.SendMail(L,w,D).then(()=>{console.log("Vertretungserinnerung wurde an "+_.Vorname+" "+_.Name+" gesendet."),N(!0)}).catch(G=>{V(G)})})}catch(w){this.Debug.ShowErrorMessage(w,"Database Urlaub","SendVertreterreminder",this.Debug.Typen.Service)}}SendFreigabereminder(_){try{let D,w="Urlaubsfreigaben Anfragen in der Urlaubsplaner App",L=[];return new Promise((N,V)=>{D="Hallo "+_.Vorname+", es gibt neue Anfragen f\xfcr Urlaubsfreigaben. ",D+="Bitte pr\xfcfe die Anfragen in der App.",D+=" ",D+='Urlaub - Homeoffice - Planung jetzt \xf6ffnen',D+=" "+this.Pool.GetFilledSignatur(this.Pool.Mitarbeiterdaten,!0),L.push({emailAddress:{address:_.Email,name:_.Vorname+" "+_.Name}}),this.Graph.SendMail(L,w,D).then(()=>{console.log("Freigebererinnerung wurde an "+_.Vorname+" "+_.Name+" gesendet."),N(!0)}).catch(G=>{V(G)})})}catch(w){this.Debug.ShowErrorMessage(w,"Database Urlaub","SendFreigabereminder",this.Debug.Typen.Service)}}SendHomeofficefreigabeanfrage(_,w,D){try{let L="Homeofficefreigabeanfrage von "+_.Vorname+" "+_.Name,N="",V=[],G=!1;return new Promise((R,k)=>{for(let A of w)N+="Hallo "+A.Vorname+", ";N+=" bitte folgende Homeofficetage freigeben: ",N+='
",N+='Urlaub - Homeoffice - Planung jetzt \xf6ffnen',N+=" "+this.Pool.GetFilledSignatur(_,!0);for(let A of w)V.push({emailAddress:{address:A.Email,name:A.Vorname+" "+A.Name}});G?this.Graph.SendMail(V,L,N).then(()=>{for(let A of w)console.log("Homeofficefreigabeanfrage wurde an "+A.Vorname+" "+A.Name+" gesendet.");R(D)}).catch(A=>{k(A)}):(console.log("Es wurden keine Homeofficefreigabeanfragen gesendet."),R(D))})}catch(L){this.Debug.ShowErrorMessage(L,"Database Urlaub","SendHomeofficefreigabeanfrage",this.Debug.Typen.Service)}}SendVertreterzusage(_,w){try{let L,R,D="Vertretungszusage von "+this.CurrentMitarbeiter.Vorname+" "+this.CurrentMitarbeiter.Name,N=[],V=!1,G=(0,i.default)().locale("de");return new Promise((k,A)=>{L="Hallo "+_.Vorname+", nachfolgende Urlaubsvertretungen kann ich gerne wahrnehmen: ",L+='
",L+='Urlaub - Homeoffice - Planung jetzt \xf6ffnen',L+=" "+this.Pool.GetFilledSignatur(this.CurrentMitarbeiter,!0),N.push({emailAddress:{address:_.Email,name:_.Vorname+" "+_.Name}}),!0===V?this.Graph.SendMail(N,D,L).then(()=>{console.log("Vertretungszusage wurde an "+_.Vorname+" "+_.Name+" gesendet."),k(w)}).catch(H=>{A(H)}):(console.log("Es wurde keine Vertretungszusage gesendet."),k(w))})}catch(D){this.Debug.ShowErrorMessage(D,"Database Urlaub","SendVertreterzusage",this.Debug.Typen.Service)}}SendHomeofficeFreigabeantworten(_,w){var D=this;return n(function*(){try{let L=c.cloneDeep(D.Pool.Mitarbeiterdaten);w=yield D.SendMitarbeiterHomeofficeFreigabeablehnung(_,L,w),w=yield D.SendMitarbeiterHomeofficeFreigabezusage(_,L,w);let N=c.findIndex(_.Urlaubsliste,{Jahr:D.CurrentJahr});_.Urlaubsliste[N]=w,_._id===D.CurrentMitarbeiter._id&&(D.CurrentMitarbeiter=_),yield D.DBMitarbeiter.UpdateMitarbeiterUrlaub(_)}catch(L){D.Debug.ShowErrorMessage(L,"Database Urlaub","SendHomeofficeFreigabeantworten",D.Debug.Typen.Service)}})()}UpdateFreigabenantworten(_,w){var D=this;return n(function*(){try{let V,L=1,N=(0,i.default)().locale("de");for(let R of w.Urlaubzeitspannen)R.Status===D.Urlaubstatusvarianten.Genehmigt&&!1===R.FreigabeantwortSended&&(L+=1),R.Status===D.Urlaubstatusvarianten.Abgelehnt&&!1===R.FreigabeantwortSended&&(L+=2);for(let R of w.Urlaubzeitspannen)(R.Status===D.Urlaubstatusvarianten.Genehmigt||R.Status===D.Urlaubstatusvarianten.Abgelehnt)&&(V=c.cloneDeep(D.Pool.Mitarbeiterdaten),R.Status===D.Urlaubstatusvarianten.Genehmigt&&(R.Planungmeldung=N.format("DD.MM.YYYY")+" Der Urlaub wurde durch "+V.Vorname+" "+V.Name+" genehmigt.",R.Freigabemeldung=N.format("DD.MM.YYYY")+" Urlaubsfreigabe wurde an "+_.Vorname+" "+_.Name+" gesendet.",R.Freigabemeldung+=" "+N.format("DD.MM.YYYY")+" Urlaubsfreigabe wurde an das Office gesendet."),R.Status===D.Urlaubstatusvarianten.Abgelehnt&&(R.Planungmeldung=N.format("DD.MM.YYYY")+" Der Urlaub wurde durch "+V.Vorname+" "+V.Name+" abgelehnt.",R.Freigabemeldung=N.format("DD.MM.YYYY")+" Urlaubsablehnung wurde an "+_.Vorname+" "+_.Name+" gesendet."));w=yield D.SendMitarbeiterFreigabeablehnung(_,V,w),w=yield D.SendMitarbeiterFreigabezusage(_,V,w),w=yield D.SendOfficeFreigabezusage(_,V,w);let G=c.findIndex(_.Urlaubsliste,{Jahr:D.CurrentJahr});_.Urlaubsliste[G]=w,D.CurrentUrlaub=w,yield D.DBMitarbeiter.UpdateMitarbeiterUrlaub(_)}catch(L){D.Debug.ShowErrorMessage(L,"Database Urlaub","UpdateFreigabenantworten",D.Debug.Typen.Service)}})()}SendVertreterabsage(_,w){try{let L,R,k,A,H,K,ie,D="Vertretungsabsage von "+this.CurrentMitarbeiter.Vorname+" "+this.CurrentMitarbeiter.Name,N=[],V=!1,G=(0,i.default)().locale("de");return new Promise((X,be)=>{L="Hallo "+_.Vorname+", nachfolgende Urlaubsvertretungen kann ich leider nicht wahrnehmen: ",L+='
",L+='Urlaub - Homeoffice - Planung jetzt \xf6ffnen',L+=" "+this.Pool.GetFilledSignatur(this.CurrentMitarbeiter,!0),N.push({emailAddress:{address:_.Email,name:_.Vorname+" "+_.Name}}),ie=!1,!0===V?this.Graph.SendMail(N,D,L).then(()=>{console.log("Vertretungsabsage wurde an "+_.Vorname+" "+_.Name+" gesendet."),X(w)}).catch(ce=>{be(ce)}):(console.log("Es wurde keine Vertretungsabsage gesendet."),X(w))})}catch(D){this.Debug.ShowErrorMessage(D,"Database Urlaub","SendVertreterabsage",this.Debug.Typen.Service)}}SendFreigabeanfrage(_,w){try{let L,G,k,A,K,D="Anfrage Urlaubsfreigabe von "+_.Vorname+" "+_.Name,N=[],V=!1,R=(0,i.default)().locale("de"),H=c.find(this.Pool.Standorteliste,{_id:_.StandortID});for(let ie of H.Urlaubfreigabepersonen)k=c.find(this.Pool.Mitarbeiterliste,{_id:ie}),c.isUndefined(k)||N.push({emailAddress:{address:k.Email,name:k.Vorname+" "+k.Name}});return new Promise((ie,X)=>{L="";for(let be of N)L+="Hallo "+be.emailAddress.name+", ";L+=" ",L+="es liegen neue Anfragen zur Urlaufsfreigabe von ",L+=_.Vorname+" "+_.Name+" vor: ",L+='
",L+='Urlaub - Homeoffice - Planung jetzt \xf6ffnen',L+=" "+this.Pool.GetFilledSignatur(_,!0),!0===V?this.Graph.SendMail(N,D,L).then(()=>{console.log("Freigabe Anfrage wurde versendet."),ie(w)}).catch(be=>{X(be)}):(console.log("Es wurde keine Freigabe Anfrage versendet."),ie(w))})}catch(D){this.Debug.ShowErrorMessage(D,"Database Urlaub","SendFreigabeanfrage",this.Debug.Typen.Service)}}SendBetriebsurlaubFreigabeanfrage(_,w){try{let L,R,D="Anfrage Betriebsurlaubfreigabe von "+_.Vorname+" "+_.Name,N=[],V=!1,G=(0,i.default)().locale("de"),k=c.find(this.Pool.Standorteliste,{_id:_.StandortID});for(let A of k.Urlaubfreigabepersonen)R=c.find(this.Pool.Mitarbeiterliste,{_id:A}),c.isUndefined(R)||N.push({emailAddress:{address:R.Email,name:R.Vorname+" "+R.Name}});return new Promise((A,H)=>{L="";for(let K of N)L+="Hallo "+K.emailAddress.name+", ";L+=" ",L+="es liegen neue Anfragen zur Betriebsurlaubfreigabe von ",L+=_.Vorname+" "+_.Name+" vor: ",L+='
",L+='Urlaub - Homeoffice - Planung jetzt \xf6ffnen',L+=" "+this.Pool.GetFilledSignatur(_,!0),!0===V?this.Graph.SendMail(N,D,L).then(()=>{console.log("Urlaubsfreigabe Anfrage wurde versendet."),A(w)}).catch(K=>{H(K)}):(console.log("Es wurde keine Urlaubsfreigabe Anfrage versendet."),A(w))})}catch(D){this.Debug.ShowErrorMessage(D,"Database Urlaub","SendBetriebsurlaubFreigabeanfrage",this.Debug.Typen.Service)}}SendMitarbeiterFreigabezusage(_,w,D){try{let N,k,A,L="Urlaubsfreigabe",V=[],G=!1,R=(0,i.default)().locale("de");return new Promise((H,K)=>{N="Hallo "+_.Vorname+", anbei meine Urlaubsfreigabe f\xfcr folgende Zeitr\xe4ume: ",N+='
",N+='Deine Urlaubsfreigabe wurde zur Eintragung in "untermStrich" dem B\xfcro mitgeteilt.',N+=" ",N+='Urlaub - Homeoffice - Planung jetzt \xf6ffnen',N+=" "+this.Pool.GetFilledSignatur(w,!0),V.push({emailAddress:{address:_.Email,name:_.Vorname+" "+_.Name}}),!0===G?this.Graph.SendMail(V,L,N).then(()=>{console.log("Urlaubsfreigabe wurde an "+_.Vorname+" "+_.Name+" gesendet."),H(D)}).catch(ie=>{K(ie)}):(console.log("Es wurde keine Urlaubsfreigabe gesendet."),H(D))})}catch(L){this.Debug.ShowErrorMessage(L,"Database Urlaub","SendMitarbeiterFreigabezusage",this.Debug.Typen.Service)}}SendOfficeFreigabezusage(_,w,D){try{let N,k,A,L="Urlaubsfreigabe und EIntragung in untermStrich",V=[],G=!1,R=(0,i.default)().locale("de");return new Promise((H,K)=>{N="Hallo Office, anbei eine Urlaubsfreigabe f\xfcr "+_.Vorname+" "+_.Name+" mit folgenden Zeitr\xe4umen: ",N+='
",N+="Bitte Urlaub in untermStrich eintragen.",N+=" ",N+='Urlaub - Homeoffice - Planung jetzt \xf6ffnen',N+=" "+this.Pool.GetFilledSignatur(w,!0),V.push({emailAddress:{address:this.Officeemailadress,name:"Office"}}),!0===G?this.Graph.SendMail(V,L,N).then(()=>{console.log("Urlaubsfreigabe wurde an "+_.Vorname+" "+_.Name+" gesendet."),H(D)}).catch(ie=>{K(ie)}):(console.log("Es wurde keine Urlaubsfreigabe gesendet."),H(D))})}catch(L){this.Debug.ShowErrorMessage(L,"Database Urlaub","SendOfficeFreigabezusage",this.Debug.Typen.Service)}}SendMitarbeiterFreigabeablehnung(_,w,D){try{let N,k,L="Ablehnung deiner Urlaubsanfrage",V=[],G=!1,R=(0,i.default)().locale("de");return new Promise((A,H)=>{N="Hallo "+_.Vorname+" "+_.Name+", leider muss ich deine Urlaubsanfrage f\xfcr nachfolgende Zeitr\xe4ume ablehnen: ",N+='
",N+='Urlaub - Homeoffice - Planung jetzt \xf6ffnen',N+=" "+this.Pool.GetFilledSignatur(w,!0),V.push({emailAddress:{address:w.Email,name:w.Vorname+" "+w.Name}}),!0===G?this.Graph.SendMail(V,L,N).then(()=>{console.log("Urlaubsablehung wurde an "+_.Vorname+" "+_.Name+" gesendet."),A(D)}).catch(K=>{H(K)}):(console.log("Es wurde keine Urlaubsablehnung gesendet."),A(D))})}catch(L){this.Debug.ShowErrorMessage(L,"Database Urlaub","SendMitarbeiterFreigabeablehnung",this.Debug.Typen.Service)}}SendMitarbeiterHomeofficeFreigabeablehnung(_,w,D){try{let N,L="Ablehnung deiner Homeofficeabfrage",V=[],G=!1,R=(0,i.default)().locale("de");return new Promise((k,A)=>{N="Hallo "+_.Vorname+" "+_.Name+", leider muss ich deine Homeofficeanfrage f\xfcr nachfolgende Tage ablehnen: ",N+='
",N+='Urlaub - Homeoffice - Planung jetzt \xf6ffnen',N+=" "+this.Pool.GetFilledSignatur(w,!0),V.push({emailAddress:{address:w.Email,name:w.Vorname+" "+w.Name}}),!0===G?this.Graph.SendMail(V,L,N).then(()=>{console.log("Homeofficeablehnung wurde an "+_.Vorname+" "+_.Name+" gesendet."),k(D)}).catch(H=>{A(H)}):(console.log("Es wurde keine Homeofficeablehnung gesendet."),k(D))})}catch(L){this.Debug.ShowErrorMessage(L,"Database Urlaub","SendMitarbeiterHomeofficeFreigabeablehnung",this.Debug.Typen.Service)}}SendMitarbeiterHomeofficeFreigabezusage(_,w,D){try{let N,L="Genehmigung deiner Homeofficeanfrage",V=[],G=!1,R=(0,i.default)().locale("de");return new Promise((k,A)=>{N="Hallo "+_.Vorname+" "+_.Name+", nachfolgende Homeofficetage sind genehmigt: ",N+='
",N+='Urlaub - Homeoffice - Planung jetzt \xf6ffnen',N+=" "+this.Pool.GetFilledSignatur(w,!0),V.push({emailAddress:{address:w.Email,name:w.Vorname+" "+w.Name}}),!0===G?this.Graph.SendMail(V,L,N).then(()=>{console.log("Homeofficegenehmigung wurde an "+_.Vorname+" "+_.Name+" gesendet."),k(D)}).catch(H=>{A(H)}):(console.log("Es wurde keine Homeofficegenehmigung gesendet."),k(D))})}catch(L){this.Debug.ShowErrorMessage(L,"Database Urlaub","SendMitarbeiterHomeofficeFreigabezusage",this.Debug.Typen.Service)}}ReadRegionen(_){try{return new Promise((w,D)=>{this.http.put(this.ServerReadRegionenUrl,{Landcode:_}).subscribe({next:V=>{this.Regionenliste=V.Regionenliste},complete:()=>{this.Regionenliste=c.filter(this.Regionenliste,V=>""!==V.isoCode);for(let V of this.Regionenliste)V.Name=V.name[0].text;w(!0)},error:V=>{this.Regionenliste=[],console.log("Read Regionen ist fehlgeschlagen."),w(!0)}})})}catch(w){this.Debug.ShowErrorMessage(w,"Database Urlaub","ReadRegionen",this.Debug.Typen.Service)}}ReadFeiertage(_){try{let w,D=c.find(this.Pool.Standorteliste,{_id:this.CurrentMitarbeiter.StandortID});c.isUndefined(D)&&(D=null);let L={Standort:D,Jahr:this.CurrentJahr,Bundeslandkuerzel:this.Bundeslandkuerzel,Landcode:_};return new Promise((N,V)=>{this.Feiertageliste[_]=[],w=this.http.put(this.ServerReadfeiertageUrl,L),w.subscribe({next:G=>{this.Feiertageliste[_]=G.Feiertageliste},complete:()=>{N(!0)},error:G=>{this.Feiertageliste[_]=[],console.log("Read Feiertage ist fehlgeschlagen."),N(!0)}})})}catch(w){this.Debug.ShowErrorMessage(w,"Database Urlaub","ReadFeiertage",this.Debug.Typen.Service)}}ReadFerien(_){try{let w,D={Jahr:this.CurrentJahr,Bundeslandkuerzel:this.Bundeslandkuerzel,Landcode:_};return this.Ferienliste[_]=[],new Promise((L,N)=>{w=this.http.put(this.ServerReadFerienUrl,D),w.subscribe({next:V=>{this.Ferienliste[_]=V.Ferienliste},complete:()=>{L(!0)},error:V=>{this.Ferienliste[_]=[],console.log("Read Ferien ist fehlgeschlagen."),L(!0)}})})}catch(w){this.Debug.ShowErrorMessage(w,"Database Urlaub","ReadFerien",this.Debug.Typen.Service)}}CountAnfragenanzahlen(){try{this.Urlaubsanfragenanzahl=0,this.Antwortenanzahl=0,this.Vertretungsanfragenanzahl=0,this.Vertretungsantwortenanzahl=0,this.Freigabenanfragenanzahl=0,this.Freigabenantwortenanzahl=0,this.Homeofficantwortenanzahl=0,this.Homeofficeanfragenanzahl=0,null!==this.CurrentMitarbeiter&&(this.GetVertretungenliste(),this.GetFreigabenliste())}catch(_){return this.Debug.ShowErrorMessage(_,"Database Urlaub","CountAnfragenanzahlen",this.Debug.Typen.Service),0}}Init(){try{let _,w,D,L,N;this.Urlaubsanfragenanzahl=0,this.Homeofficeanfragenanzahl=0,this.Vertretungsanfragenanzahl=0,this.Vertretungsantwortenanzahl=0,this.Freigabenanfragenanzahl=0,this.Freigabenantwortenanzahl=0,this.Kalenderwochenhoehenliste=[],this.CurrentMitarbeiter=null===this.CurrentMitarbeiter?c.cloneDeep(this.Pool.Mitarbeiterdaten):c.find(this.Pool.Mitarbeiterliste,{_id:this.CurrentMitarbeiter._id}),null!==this.CurrentMitarbeiter&&(_=c.find(this.Pool.Standorteliste,{_id:this.CurrentMitarbeiter.StandortID}),this.Laendercode=c.isUndefined(_)?"DE":_.Land),this.ShowFerientage_DE=this.Pool.Mitarbeitersettings.UrlaubShowFerien_DE,this.ShowFeiertage_DE=this.Pool.Mitarbeitersettings.UrlaubShowFeiertage_DE,this.Ferienfarbe_DE=this.Urlaubsfaben.Ferien_DE,this.Feiertagefarbe_DE=this.Urlaubsfaben.Feiertage_DE,this.ShowFerientage_BG=this.Pool.Mitarbeitersettings.UrlaubShowFerien_BG,this.ShowFeiertage_BG=this.Pool.Mitarbeitersettings.UrlaubShowFeiertage_BG,this.Ferienfarbe_BG=this.Urlaubsfaben.Ferien_BG,this.Feiertagefarbe_BG=this.Urlaubsfaben.Feiertage_BG,null!==this.CurrentMitarbeiter&&(this.CurrentUrlaub=c.find(this.CurrentMitarbeiter.Urlaubsliste,{Jahr:this.CurrentJahr}),c.isUndefined(this.CurrentUrlaub)?(this.CurrentUrlaub=this.GetEmptyUrlaub(this.CurrentJahr),this.CurrentUrlaubzeitspanne=null,this.CurrentMitarbeiter.Urlaubsliste.push(this.CurrentUrlaub)):this.CurrentUrlaubzeitspanne=null,c.isUndefined(this.CurrentUrlaub.Projektbeteiligteliste)&&(this.CurrentUrlaub.Projektbeteiligteliste=[]),c.isUndefined(this.CurrentUrlaub.Ferienblockerliste)&&(this.CurrentUrlaub.Ferienblockerliste=[]),c.isUndefined(this.CurrentUrlaub.Feiertageblockerliste)&&(this.CurrentUrlaub.Feiertageblockerliste=[]));for(let V of this.CurrentUrlaub.Urlaubzeitspannen)V=this.InitUrlaubzeitspanne(V);for(let V of this.CurrentUrlaub.Homeofficezeitspannen)V=this.InitHomeofficezeitspanne(V);this.UrlaublisteExtern=[];for(let V of this.CurrentUrlaub.Projektbeteiligteliste)if(w=c.find(this.Pool.Mitarbeiterliste,{_id:V.MitarbeiterID}),!c.isUndefined(w)){D=c.find(w.Urlaubsliste,{Jahr:this.CurrentJahr}),c.isUndefined(D)?(D=this.GetEmptyUrlaub(this.CurrentJahr),D.MitarbeiterIDExtern=w._id,D.NameExtern=w.Vorname+" "+w.Name,D.NameKuerzel=w.Kuerzel):(D=c.cloneDeep(D),D.MitarbeiterIDExtern=w._id,D.NameExtern=w.Vorname+" "+w.Name,D.NameKuerzel=w.Kuerzel,D.Urlaubzeitspannen=c.filter(D.Urlaubzeitspannen,G=>G.Status!==this.Urlaubstatusvarianten.Abgelehnt)),L=0,L+=w.Urlaub,L+=w.Resturlaub,N=0;for(let G of D.Urlaubzeitspannen)G.Status!==this.Urlaubstatusvarianten.Abgelehnt&&(N+=G.Tageanzahl);D.Text=null!==this.CurrentMitarbeiter&&!0===this.CurrentMitarbeiter.Urlaubsfreigaben?"["+N+" von "+L+"]":"["+N+"]",this.UrlaublisteExtern.push(D)}}catch(_){this.Debug.ShowErrorMessage(_,"Database Urlaub","Init",this.Debug.Typen.Service)}}InitHomeofficezeitspanne(_){try{return c.isUndefined(_.Checked)&&(_.Checked=!1),_}catch(w){this.Debug.ShowErrorMessage(w,"Database Urlaub","InitHomeofficezeitspanne",this.Debug.Typen.Service)}}InitUrlaubzeitspanne(_){try{return(c.isUndefined(_.UrlaubsvertreterID)||""===_.UrlaubsvertreterID)&&(_.UrlaubsvertreterID=null),(c.isUndefined(_.UrlaubsfreigeberID)||""===_.UrlaubsfreigeberID)&&(_.UrlaubsfreigeberID=null),c.isUndefined(_.Planungmeldung)&&(_.Planungmeldung=""),c.isUndefined(_.Freigabemeldung)&&(_.Freigabemeldung=""),c.isUndefined(_.FreigabeanfrageSended)&&(_.FreigabeanfrageSended=!1),c.isUndefined(_.FreigabeantwortSended)&&(_.FreigabeantwortSended=!1),c.isUndefined(_.FreigabeantwortOfficeSended)&&(_.FreigabeantwortOfficeSended=!1),c.isUndefined(_.Freigabeantwortzeitstempel)&&(_.Freigabeantwortzeitstempel=null),c.isUndefined(_.FreigabeantwortOfficezeitstempel)&&(_.FreigabeantwortOfficezeitstempel=null),c.isUndefined(_.Checked)&&(_.Checked=!1),c.isUndefined(_.Halbertag)&&(_.Halbertag=!1),c.isUndefined(_.Betriebsurlaub)&&(_.Betriebsurlaub=!1),c.isUndefined(_.UrlaubsvertreterIDListe)&&(_.UrlaubsvertreterIDListe=c.isUndefined(_.UrlaubsvertreterID)||null===_.UrlaubsvertreterID?[]:[_.UrlaubsvertreterID]),c.isUndefined(_.Vertretungskonversationliste)&&(_.Vertretungskonversationliste=[]),this.InitVertreterkonversationen(_,!1),"Beantragt"===_.Status&&(_.Status=this.Urlaubstatusvarianten.Geplant),_}catch(w){this.Debug.ShowErrorMessage(w,"Database Urlaub","InitUrlaubzeitspanne",this.Debug.Typen.Service)}}InitVertreterkonversationen(_,w){try{let D;for(let L of _.UrlaubsvertreterIDListe)D=c.findIndex(_.Vertretungskonversationliste,{VertreterID:L}),-1===D?_.Vertretungskonversationliste.push({VertreterID:L,Status:this.Const.NONE,VertreteranfrageSended:!1,VertreterantwortSended:!1,Vertretunganfragezeitstempel:0,Vertretungantwortzeitstempel:0,Vertretungmeldung:""}):!0===w&&_.Vertretungskonversationliste[D].Status!==this.Urlaubstatusvarianten.Vertreterfreigabe&&(_.Vertretungskonversationliste[D]={VertreterID:L,Status:this.Const.NONE,VertreteranfrageSended:!1,VertreterantwortSended:!1,Vertretunganfragezeitstempel:0,Vertretungantwortzeitstempel:0,Vertretungmeldung:""})}catch(D){this.Debug.ShowErrorMessage(D,"Database Urlaub","InitVertreterkonversationen",this.Debug.Typen.Service)}}SetPlanungsmonate(){try{0===this.CurrentMonatindex?(this.FirstMonatIndex=0,this.CurrentMonatindex=1,this.LastMonatIndex=2):11===this.CurrentMonatindex?(this.FirstMonatIndex=9,this.CurrentMonatindex=10,this.LastMonatIndex=11):(this.FirstMonatIndex=this.CurrentMonatindex-1,this.LastMonatIndex=this.CurrentMonatindex+1)}catch(_){this.Debug.ShowErrorMessage(_,"Database Urlaub","SetPlanungsmonate",this.Debug.Typen.Service)}}GetEmptyUrlaub(_){try{let w={Jahr:_,Urlaubzeitspannen:[],Homeofficezeitspannen:[],Projektbeteiligteliste:[],Ferienblockerliste:[],Feiertageblockerliste:[]};return null!==this.CurrentMitarbeiter&&!c.isUndefined(this.CurrentMitarbeiter.Urlaubsliste[0])&&(w.Projektbeteiligteliste=this.CurrentMitarbeiter.Urlaubsliste[0].Projektbeteiligteliste,w.Ferienblockerliste=this.CurrentMitarbeiter.Urlaubsliste[0].Ferienblockerliste,w.Feiertageblockerliste=this.CurrentMitarbeiter.Urlaubsliste[0].Feiertageblockerliste),w}catch(w){this.Debug.ShowErrorMessage(w.message,"Database Urlaub","GetEmptyUrlaub",this.Debug.Typen.Service)}}CheckIsFerientag(_,w){try{let L,N,D=(0,i.default)(_.Tagstempel),V=!1;if(!c.isUndefined(this.Ferienliste[w]))for(let G of this.Ferienliste[w])if(L=(0,i.default)(G.Anfangstempel),N=(0,i.default)(G.Endestempel),D.isSameOrAfter(L,"day")&&D.isSameOrBefore(N,"day")){V=!0;break}return V}catch(D){this.Debug.ShowErrorMessage(D,"Database Urlaub","CheckIsFerientag",this.Debug.Typen.Service)}}CheckIsUrlaubstag(_,w){try{let L,N,G,D=(0,i.default)(w.Tagstempel),R=c.findIndex(_.Urlaubsliste,{Jahr:this.CurrentJahr});if(-1!==R){G=_.Urlaubsliste[R];for(let A of G.Urlaubzeitspannen)if(L=(0,i.default)(A.Startstempel),N=(0,i.default)(A.Endestempel),D.isSameOrAfter(L,"day")&&D.isSameOrBefore(N,"day")&&A.Status!==this.Urlaubstatusvarianten.Abgelehnt)switch(A.Status){case this.Urlaubstatusvarianten.Geplant:if(!0===this.GesamtuebersichtSetting.ShowGeplant)return A;break;case this.Urlaubstatusvarianten.Vertreteranfrage:if(!0===this.GesamtuebersichtSetting.ShowVertreteranfragen)return A;break;case this.Urlaubstatusvarianten.Vertreterfreigabe:if(!0===this.GesamtuebersichtSetting.ShowVertreterfreigaben)return A;break;case this.Urlaubstatusvarianten.Vertreterablehnung:if(!0===this.GesamtuebersichtSetting.ShowVertreterablehnungen)return A;break;case this.Urlaubstatusvarianten.Genehmigt:if(!0===this.GesamtuebersichtSetting.ShowUrlaubsgenehmigungen)return A;break;case this.Urlaubstatusvarianten.Abgelehnt:if(!0===this.GesamtuebersichtSetting.ShowUrlaubsablehnungen)return A}}return null}catch(D){this.Debug.ShowErrorMessage(D,"Database Urlaub","CheckIsUrlaubstag",this.Debug.Typen.Service)}}CheckIsHomeofficetag(_,w){try{let L,N,V,D=(0,i.default)(w.Tagstempel),G=c.findIndex(_.Urlaubsliste,{Jahr:this.CurrentJahr});if(-1!==G){V=_.Urlaubsliste[G];for(let R of V.Homeofficezeitspannen)if(L=(0,i.default)(R.Startstempel),N=(0,i.default)(R.Endestempel),D.isSameOrAfter(L,"day")&&D.isSameOrBefore(N,"day")&&R.Status!==this.Homeofficestatusvarianten.Abgelehnt)switch(R.Status){case this.Homeofficestatusvarianten.Geplant:if(!0===this.GesamtuebersichtSetting.ShowHomeofficeGeplant)return R;break;case this.Homeofficestatusvarianten.Genehmigt:if(!0===this.GesamtuebersichtSetting.ShowHomeofficeGenehmigt)return R;break;case this.Homeofficestatusvarianten.Freigabeanfrage:if(!0===this.GesamtuebersichtSetting.ShowHomeofficeAnfrage)return R}}return null}catch(D){this.Debug.ShowErrorMessage(D,"Database Urlaub","CheckIsHomeofficetag",this.Debug.Typen.Service)}}GetFeriennamen(_,w){try{let D=w+": Unbekannt";for(let L of _.name)L.language===w&&(D=L.text);return D}catch(D){this.Debug.ShowErrorMessage(D,"Database Urlaub","GetFeriennamen",this.Debug.Typen.Service)}}GetFeiertagnamen(_,w){try{let D=w+": Unbekannt";for(let L of _.name)L.language===w&&(D=L.text);return D}catch(D){this.Debug.ShowErrorMessage(D,"Database Urlaub","GetFeiertagnamen",this.Debug.Typen.Service)}}GetFerientag(_,w){try{let L,N,V,G,D=(0,i.default)(_.Tagstempel);if(!c.isUndefined(this.Ferienliste[w]))for(G of this.Ferienliste[w])if(L=(0,i.default)(G.Anfangstempel),N=(0,i.default)(G.Endestempel),D.isSameOrAfter(L,"day")&&D.isSameOrBefore(N,"day"))return V={Tagnummer:0,Hauptmonat:!1,Kalenderwoche:0,Tag:"",Tagstempel:G.Anfangstempel,Ferienname_DE:this.GetFeriennamen(G,"DE"),Ferienname_BG:this.GetFeriennamen(G,"EN")},V;return null}catch(D){this.Debug.ShowErrorMessage(D,"Database Urlaub","GetFerientag",this.Debug.Typen.Service)}}CheckIsFeiertag(_,w){try{let L,V,D=(0,i.default)(_.Tagstempel),N=!1;if(!c.isUndefined(this.Feiertageliste[w]))for(let G of this.Feiertageliste[w])if(L=(0,i.default)(G.Anfangstempel),L.isSame(D,"day")){N=!0;for(let R of this.CurrentUrlaub.Feiertageblockerliste)V=(0,i.default)(R),V.isSame(D,"day")&&(N=!1)}return N}catch(D){this.Debug.ShowErrorMessage(D,"Database Urlaub","CheckIsFeiertag",this.Debug.Typen.Service)}}GetFeiertag(_,w){try{let L,N,V,D=(0,i.default)(_.Tagstempel);if(!c.isUndefined(this.Feiertageliste[w]))for(V of this.Feiertageliste[w])if(L=(0,i.default)(V.Anfangstempel),L.isSame(D,"day"))return N={Tagnummer:0,Hauptmonat:!1,Kalenderwoche:0,Tag:"",Tagstempel:V.Anfangstempel,Feiertagname_DE:this.GetFeiertagnamen(V,"DE"),Feiertagname_BG:this.GetFeiertagnamen(V,"EN")},N;return null}catch(D){this.Debug.ShowErrorMessage(D,"Database Urlaub","GetFeiertag",this.Debug.Typen.Service)}}GetEmptyUrlaubszeitspanne(){try{return{ZeitspannenID:this.Pool.GetNewUniqueID(),Startstempel:null,Endestempel:null,Startstring:"",Endestring:"",UrlaubsvertreterID:null,UrlaubsvertreterIDListe:[],Vertretungskonversationliste:[],UrlaubsfreigeberID:null,Status:this.Urlaubstatusvarianten.Geplant,Planungmeldung:"",Freigabemeldung:"",Halbertag:!1,Betriebsurlaub:!1,Tageanzahl:0,FreigabeanfrageSended:!1,FreigabeantwortSended:!1,FreigabeantwortOfficeSended:!1,Freigabeantwortzeitstempel:null,FreigabeantwortOfficezeitstempel:null}}catch(_){this.Debug.ShowErrorMessage(_.message,"Database Urlaub","GetEmptyZeitspanne",this.Debug.Typen.Service)}}GetEmptyHomeofficezeitspanne(){try{return{ZeitspannenID:this.Pool.GetNewUniqueID(),Startstempel:null,Endestempel:null,Startstring:"",Endestring:"",Status:this.Homeofficestatusvarianten.Geplant,Planungmeldung:"",Vertretungmeldung:"",Freigabemeldung:"",Tageanzahl:0,FreigabeanfrageSended:!1,FreigabeantwortSended:!1,Freigabeantwortzeitstempel:null}}catch(_){this.Debug.ShowErrorMessage(_.message,"Database Urlaub","GetEmptyHomeofficezeitspanne",this.Debug.Typen.Service)}}CountResturlaub(){try{let _=0;if(null!==this.CurrentUrlaub&&null!==this.CurrentMitarbeiter){_+=this.CurrentMitarbeiter.Urlaub,_+=this.CurrentMitarbeiter.Resturlaub;for(let w of this.CurrentUrlaub.Urlaubzeitspannen)w.Status!==this.Urlaubstatusvarianten.Abgelehnt&&(_-=w.Tageanzahl);return _}return 0}catch(_){this.Debug.ShowErrorMessage(_,"Database Urlaub","CountResturlaub",this.Debug.Typen.Service)}}CountHomeoffice(){try{let _=210;if(null!==this.CurrentUrlaub&&null!==this.Pool.Mitarbeiterdaten){for(let w of this.CurrentUrlaub.Homeofficezeitspannen)w.Status!==this.Homeofficestatusvarianten.Abgelehnt&&(_-=w.Tageanzahl);return _}return 0}catch(_){this.Debug.ShowErrorMessage(_,"Database Urlaub","CountHomeoffice",this.Debug.Typen.Service)}}CountHomeGeplant(){try{let _=0;if(null!==this.CurrentUrlaub&&null!==this.Pool.Mitarbeiterdaten)for(let w of this.CurrentUrlaub.Homeofficezeitspannen)w.Status===this.Homeofficestatusvarianten.Geplant&&_++;return _}catch(_){this.Debug.ShowErrorMessage(_,"Database Urlaub","CountHomeGeplant",this.Debug.Typen.Service)}}CountHomeFreigbeanfragen(){try{let _=0;if(null!==this.CurrentUrlaub&&null!==this.Pool.Mitarbeiterdaten)for(let w of this.CurrentUrlaub.Homeofficezeitspannen)w.Status===this.Homeofficestatusvarianten.Freigabeanfrage&&_++;return _}catch(_){this.Debug.ShowErrorMessage(_,"Database Urlaub","CountHomeFreigbeanfragen",this.Debug.Typen.Service)}}CountHomeGenehmigt(){try{let _=0;if(null!==this.CurrentUrlaub&&null!==this.Pool.Mitarbeiterdaten)for(let w of this.CurrentUrlaub.Homeofficezeitspannen)w.Status===this.Homeofficestatusvarianten.Genehmigt&&_++;return _}catch(_){this.Debug.ShowErrorMessage(_,"Database Urlaub","CountHomeGenehmigt",this.Debug.Typen.Service)}}CountHomeAbgelehnt(){try{let _=0;if(null!==this.CurrentUrlaub&&null!==this.Pool.Mitarbeiterdaten)for(let w of this.CurrentUrlaub.Homeofficezeitspannen)w.Status===this.Homeofficestatusvarianten.Abgelehnt&&_++;return _}catch(_){this.Debug.ShowErrorMessage(_,"Database Urlaub","CountHomeAbgelehnt",this.Debug.Typen.Service)}}CheckDisplayExternenUrlaub(_){try{let w,D,L;return null!==this.CurrentUrlaub&&(w=c.find(this.CurrentUrlaub.Projektbeteiligteliste,{MitarbeiterID:_}),!c.isUndefined(w)&&(D=c.find(this.Pool.Mitarbeiterliste,{_id:w.MitarbeiterID}),L=c.find(D.Urlaubsliste,{Jahr:this.CurrentUrlaub.Jahr}),!c.isUndefined(L)&&w.Display&&L.Urlaubzeitspannen.length>0))}catch(w){this.Debug.ShowErrorMessage(w,"Database Urlaub","CheckDisplayExternenUrlaub",this.Debug.Typen.Service)}}HomeofficeLoeschen(_){var w=this;return n(function*(){try{for(let N of w.CurrentUrlaub.Homeofficezeitspannen)!0===c.isUndefined(N.Checked)&&(N.Checked=!1);let D=c.filter(w.CurrentUrlaub.Homeofficezeitspannen,N=>N.Status===_&&!1===N.Checked||N.Status!==_);w.CurrentUrlaub=c.find(w.CurrentMitarbeiter.Urlaubsliste,{Jahr:w.CurrentJahr}),w.CurrentUrlaub.Homeofficezeitspannen=D;let L=c.findIndex(w.CurrentMitarbeiter.Urlaubsliste,{Jahr:w.CurrentJahr});w.CurrentMitarbeiter.Urlaubsliste[L]=w.CurrentUrlaub,yield w.DBMitarbeiter.UpdateMitarbeiterUrlaub(w.CurrentMitarbeiter),w.ExterneHomeofficeChanged.emit()}catch(D){w.Debug.ShowErrorMessage(D,"Database Urlaub","HomeofficeLoeschen",w.Debug.Typen.Service)}})()}GetHomeofficezeitspannenByStataus(_){try{let L,w=c.filter(this.CurrentUrlaub.Homeofficezeitspannen,{Status:_}),D=[];w.sort((N,V)=>N.Startstempel
"):""}catch(f){this.Debug.ShowErrorMessage(f.message,"Tools","FormatLinebreaks",this.Debug.Typen.Service)}}ReplaceSonderzeichen(y){try{return(y=(y=(y=(y=(y=(y=(y=(y=y.replace(/ /g,"_")).replace(/\xe4/g,"ae")).replace(/\xc4/g,"Ae")).replace(/\xf6/g,"oe")).replace(/\xd6/g,"Oe")).replace(/\xfc/g,"ue")).replace(/\xdc/g,"Ue")).replace(/\xdf/g,"ss")).replace(/[&\/\\#,+()$~%.'\xa7=^!`\xb4;":.,*-?<>{}]/g,"")}catch(f){this.Debug.ShowErrorMessage(f.message,"Tools","ReplaceSonderzeichen",this.Debug.Typen.Service)}}RundenAsText(y,f){try{let _,C=Math.pow(10,f);return _=Math.round(y*C)/C,_.toString().replace(".",",")}catch(C){this.Debug.ShowErrorMessage(C.message,"Tools","Runden",this.Debug.Typen.Service)}}CheckArray(y){try{return!!this.CheckObject(y,!1)&&y instanceof Array}catch(f){this.Debug.ShowErrorMessage(f.message,"Tools","CheckArray",this.Debug.Typen.Service)}}CheckObject(y,f){try{return typeof y<"u"&&null!==y&&(!1===f||typeof y[f.toString()]<"u")}catch(C){this.Debug.ShowErrorMessage(C.message,"Tools","CheckObject",this.Debug.Typen.Service)}}ShowHinweisDialog(y){try{return new Promise(f=>{this.alertCtrl.create({header:"Hinweis",message:y,cssClass:"alertdialogclass",buttons:[{text:"Ok",cssClass:"infookclass",handler:()=>{f(!0)}}]}).then(C=>{C.present()}).catch(C=>{console.log(C)})})}catch(f){this.Debug.ShowErrorMessage(f.message,"Tools","ShowHinweisDialog",this.Debug.Typen.Service)}}CheckEmail(y){try{return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(y)}catch(f){this.Debug.ShowErrorMessage(f.message,"Tools","CheckEmail",this.Debug.Typen.Service)}}static \u0275fac=function(f){return new(f||E)(i.\u0275\u0275inject(e.BasicsProvider),i.\u0275\u0275inject(o.DebugProvider),i.\u0275\u0275inject(h.ConstProvider),i.\u0275\u0275inject(v.Navparameter),i.\u0275\u0275inject(M.NavController),i.\u0275\u0275inject(M.Platform),i.\u0275\u0275inject(M.AlertController))};static \u0275prov=i.\u0275\u0275defineInjectable({token:E,factory:E.\u0275fac,providedIn:"root"})}return E})()},36716:(pe,m)=>{"use strict";Object.defineProperty(m,"__esModule",{value:!0}),m.environment=void 0,m.environment={production:!0,useonlinedb:!0}},27460:(pe,m,s)=>{"use strict";const u=s(81316).__importStar(s(14476)),c=s(54496),i=s(5204);s(36716).environment.production&&(0,c.enableProdMode)(),u.platformBrowser().bootstrapModule(i.AppModule).catch(o=>console.log(o))},78776:(pe,m,s)=>{var l,u,n=s(1196).default;self,pe.exports=(l={7629:(c,i,e)=>{"use strict";const o=e(375),h=e(8571),v=e(9474),M=e(1687),p=e(8652),E=e(8160),S=e(3292),y=e(6354),f=e(8901),C=e(9708),_=e(6914),w=e(2294),D=e(6133),L=e(1152),N=e(8863),V=e(2036),G={Base:class{constructor(R){this.type=R,this.$_root=null,this._definition={},this._reset()}_reset(){this._ids=new w.Ids,this._preferences=null,this._refs=new D.Manager,this._cache=null,this._valids=null,this._invalids=null,this._flags={},this._rules=[],this._singleRules=new Map,this.$_terms={},this.$_temp={ruleset:null,whens:{}}}describe(){return o("function"==typeof C.describe,"Manifest functionality disabled"),C.describe(this)}allow(...R){return E.verifyFlat(R,"allow"),this._values(R,"_valids")}alter(R){o(R&&"object"==typeof R&&!Array.isArray(R),"Invalid targets argument"),o(!this._inRuleset(),"Cannot set alterations inside a ruleset");const k=this.clone();k.$_terms.alterations=k.$_terms.alterations||[];for(const A in R){const H=R[A];o("function"==typeof H,"Alteration adjuster for",A,"must be a function"),k.$_terms.alterations.push({target:A,adjuster:H})}return k.$_temp.ruleset=!1,k}artifact(R){return o(void 0!==R,"Artifact cannot be undefined"),o(!this._cache,"Cannot set an artifact with a rule cache"),this.$_setFlag("artifact",R)}cast(R){return o(!1===R||"string"==typeof R,"Invalid to value"),o(!1===R||this._definition.cast[R],"Type",this.type,"does not support casting to",R),this.$_setFlag("cast",!1===R?void 0:R)}default(R,k){return this._default("default",R,k)}description(R){return o(R&&"string"==typeof R,"Description must be a non-empty string"),this.$_setFlag("description",R)}empty(R){const k=this.clone();return void 0!==R&&(R=k.$_compile(R,{override:!1})),k.$_setFlag("empty",R,{clone:!1})}error(R){return o(R,"Missing error"),o(R instanceof Error||"function"==typeof R,"Must provide a valid Error object or a function"),this.$_setFlag("error",R)}example(R,k={}){return o(void 0!==R,"Missing example"),E.assertOptions(k,["override"]),this._inner("examples",R,{single:!0,override:k.override})}external(R,k){return"object"==typeof R&&(o(!k,"Cannot combine options with description"),k=R.description,R=R.method),o("function"==typeof R,"Method must be a function"),o(void 0===k||k&&"string"==typeof k,"Description must be a non-empty string"),this._inner("externals",{method:R,description:k},{single:!0})}failover(R,k){return this._default("failover",R,k)}forbidden(){return this.presence("forbidden")}id(R){return R?(o("string"==typeof R,"id must be a non-empty string"),o(/^[^\.]+$/.test(R),"id cannot contain period character"),this.$_setFlag("id",R)):this.$_setFlag("id",void 0)}invalid(...R){return this._values(R,"_invalids")}label(R){return o(R&&"string"==typeof R,"Label name must be a non-empty string"),this.$_setFlag("label",R)}meta(R){return o(void 0!==R,"Meta cannot be undefined"),this._inner("metas",R,{single:!0})}note(...R){o(R.length,"Missing notes");for(const k of R)o(k&&"string"==typeof k,"Notes must be non-empty strings");return this._inner("notes",R)}only(R=!0){return o("boolean"==typeof R,"Invalid mode:",R),this.$_setFlag("only",R)}optional(){return this.presence("optional")}prefs(R){o(R,"Missing preferences"),o(void 0===R.context,"Cannot override context"),o(void 0===R.externals,"Cannot override externals"),o(void 0===R.warnings,"Cannot override warnings"),o(void 0===R.debug,"Cannot override debug"),E.checkPreferences(R);const k=this.clone();return k._preferences=E.preferences(k._preferences,R),k}presence(R){return o(["optional","required","forbidden"].includes(R),"Unknown presence mode",R),this.$_setFlag("presence",R)}raw(R=!0){return this.$_setFlag("result",R?"raw":void 0)}result(R){return o(["raw","strip"].includes(R),"Unknown result mode",R),this.$_setFlag("result",R)}required(){return this.presence("required")}strict(R){const k=this.clone();return k._preferences=E.preferences(k._preferences,{convert:void 0!==R&&!R}),k}strip(R=!0){return this.$_setFlag("result",R?"strip":void 0)}tag(...R){o(R.length,"Missing tags");for(const k of R)o(k&&"string"==typeof k,"Tags must be non-empty strings");return this._inner("tags",R)}unit(R){return o(R&&"string"==typeof R,"Unit name must be a non-empty string"),this.$_setFlag("unit",R)}valid(...R){E.verifyFlat(R,"valid");const k=this.allow(...R);return k.$_setFlag("only",!!k._valids,{clone:!1}),k}when(R,k){const A=this.clone();A.$_terms.whens||(A.$_terms.whens=[]);const H=S.when(A,R,k);if(!["any","link"].includes(A.type)){const K=H.is?[H]:H.switch;for(const ie of K)o(!ie.then||"any"===ie.then.type||ie.then.type===A.type,"Cannot combine",A.type,"with",ie.then&&ie.then.type),o(!ie.otherwise||"any"===ie.otherwise.type||ie.otherwise.type===A.type,"Cannot combine",A.type,"with",ie.otherwise&&ie.otherwise.type)}return A.$_terms.whens.push(H),A.$_mutateRebuild()}cache(R){o(!this._inRuleset(),"Cannot set caching inside a ruleset"),o(!this._cache,"Cannot override schema cache"),o(void 0===this._flags.artifact,"Cannot cache a rule with an artifact");const k=this.clone();return k._cache=R||p.provider.provision(),k.$_temp.ruleset=!1,k}clone(){const R=Object.create(Object.getPrototypeOf(this));return this._assign(R)}concat(R){o(E.isSchema(R),"Invalid schema object"),o("any"===this.type||"any"===R.type||R.type===this.type,"Cannot merge type",this.type,"with another type:",R.type),o(!this._inRuleset(),"Cannot concatenate onto a schema with open ruleset"),o(!R._inRuleset(),"Cannot concatenate a schema with open ruleset");let k=this.clone();if("any"===this.type&&"any"!==R.type){const A=R.clone();for(const H of Object.keys(k))"type"!==H&&(A[H]=k[H]);k=A}k._ids.concat(R._ids),k._refs.register(R,D.toSibling),k._preferences=k._preferences?E.preferences(k._preferences,R._preferences):R._preferences,k._valids=V.merge(k._valids,R._valids,R._invalids),k._invalids=V.merge(k._invalids,R._invalids,R._valids);for(const A of R._singleRules.keys())k._singleRules.has(A)&&(k._rules=k._rules.filter(H=>H.keep||H.name!==A),k._singleRules.delete(A));for(const A of R._rules)R._definition.rules[A.method].multi||k._singleRules.set(A.name,A),k._rules.push(A);if(k._flags.empty&&R._flags.empty){k._flags.empty=k._flags.empty.concat(R._flags.empty);const A=Object.assign({},R._flags);delete A.empty,M(k._flags,A)}else if(R._flags.empty){k._flags.empty=R._flags.empty;const A=Object.assign({},R._flags);delete A.empty,M(k._flags,A)}else M(k._flags,R._flags);for(const A in R.$_terms){const H=R.$_terms[A];H?k.$_terms[A]=k.$_terms[A]?k.$_terms[A].concat(H):H.slice():k.$_terms[A]||(k.$_terms[A]=H)}return this.$_root._tracer&&this.$_root._tracer._combine(k,[this,R]),k.$_mutateRebuild()}extend(R){return o(!R.base,"Cannot extend type with another base"),f.type(this,R)}extract(R){return R=Array.isArray(R)?R:R.split("."),this._ids.reach(R)}fork(R,k){o(!this._inRuleset(),"Cannot fork inside a ruleset");let A=this;for(let H of[].concat(R))H=Array.isArray(H)?H:H.split("."),A=A._ids.fork(H,k,A);return A.$_temp.ruleset=!1,A}rule(R){const k=this._definition;E.assertOptions(R,Object.keys(k.modifiers)),o(!1!==this.$_temp.ruleset,"Cannot apply rules to empty ruleset or the last rule added does not support rule properties");const A=null===this.$_temp.ruleset?this._rules.length-1:this.$_temp.ruleset;o(A>=0&&A |