{"version":3,"file":"main.js","mappings":"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AAAA,+BAAuB;;;;;;;;;;;;;;;;;;;AC5B9B;AACA;AACA;AAEO,MAAM6iC,WAAW,GAAG;EACzBC,UAAU,EAAE;CACb;AAED;;;;;;;AAOA;;;;;;;;;;;;;;;;;ACf+C;AAGF;AACY;AAEzD,IAAID,6EAAsB,EAAE;EAC1BE,6DAAc,EAAE;;AAGlBC,sEAAAA,EAAwB,CAACC,eAAe,CAAC90B,sDAAS,CAAC,CAChD0K,KAAK,CAAC5K,GAAG,IAAIyE,OAAO,CAAC1E,KAAK,CAACC,GAAG,CAAC,CAAC;;;;;;;;;;ACXnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/components/ShiftAppointment/ShiftAppointment.component.ts","./src/app/components/ShiftAppointment/ShiftAppointment.component.html","./src/app/components/ShiftAppointment/ShiftAppointment.service.ts","./src/app/components/appointmentcalendar/appointmentcalendar.component.ts","./src/app/components/appointmentcalendar/appointmentcalendar.component.html","./src/app/components/calendar/calendar.component.ts","./src/app/components/calendar/calendar.component.html","./src/app/components/cancel-appointment/cancel-appointment.component.ts","./src/app/components/cancel-appointment/cancel-appointment.component.html","./src/app/components/concactform/concactform.component.ts","./src/app/components/concactform/concactform.component.html","./src/app/components/concern/concern.component.ts","./src/app/components/concern/concern.component.html","./src/app/components/concerndetail/concerndetail.component.ts","./src/app/components/concerndetail/concerndetail.component.html","./src/app/components/concerngroup/concerngroup.component.ts","./src/app/components/concerngroup/concerngroup.component.html","./src/app/components/confirm-appointment/confirmation.component.ts","./src/app/components/confirm-appointment/confirmation.component.html","./src/app/components/confirmation-dialog/confirmation-dialog.component.ts","./src/app/components/confirmation-dialog/confirmation-dialog.component.html","./src/app/components/language-settings/language-settings.component.html","./src/app/components/language-settings/language-settings.component.ts","./src/app/components/legal-notice/legal-notice.component.ts","./src/app/components/legal-notice/legal-notice.component.html","./src/app/components/location/location.component.ts","./src/app/components/location/location.component.html","./src/app/components/q-flex-qr-scan/q-flex-qr-scan.component.ts","./src/app/components/q-flex-qr-scan/q-flex-qr-scan.component.html","./src/app/components/q-flex-qr-scan/q-flex-qr-scan.service.ts","./src/app/components/q-flex-qr-scan/q-flex-security-popup/q-flex-security-popup.component.ts","./src/app/components/q-flex-qr-scan/q-flex-security-popup/q-flex-security-popup.component.html","./src/app/components/q-flex/q-flex-ticket-info.service.ts","./src/app/components/q-flex/q-flex.component.html","./src/app/components/q-flex/q-flex.component.ts","./src/app/components/userconcern/userconcern.component.html","./src/app/components/userconcern/userconcern.component.ts","./src/app/shared/config/globalsettings.ts","./src/app/shared/directives/page-attributes.directive.ts","./src/app/shared/filter/filter.component.ts","./src/app/shared/filter/filter.component.html","./src/app/shared/material.module.ts","./src/app/shared/mock/mock-location.ts","./src/app/shared/model/book-appointment-dto.model.ts","./src/app/shared/model/concerngroup.ts","./src/app/shared/model/q-flex-workload-dto.ts","./src/app/shared/model/userconcern.ts","./src/app/shared/pipe/default-translation.pipe.ts","./src/app/shared/pipe/localdate.pipe.ts","./src/app/shared/pipe/localnumber.pipe.ts","./src/app/shared/pipe/nl2pbr.pipe.ts","./src/app/shared/pipe/safeHtml.pipe.ts","./src/app/shared/pipe/user-settings.pipe.ts","./src/app/shared/services/calendar.service.ts","./src/app/shared/services/company.service.ts","./src/app/shared/services/concern.service.ts","./src/app/shared/services/concerngroup.service.ts","./src/app/shared/services/config-settings.service.ts","./src/app/shared/services/customer.service.ts","./src/app/shared/services/info-banner.service.ts","./src/app/shared/services/language.service.ts","./src/app/shared/services/location.service.ts","./src/app/shared/services/messages.service.ts","./src/app/shared/services/online-design.service.ts","./src/app/shared/services/q-flex-workload-hub.service.ts","./src/app/shared/services/q-flex-workload.service.ts","./src/app/shared/services/server-setting.service.ts","./src/app/shared/services/server-settings.service.ts","./src/app/shared/services/session.service.ts","./src/app/shared/services/userconcern.service.ts","./src/app/shared/stepper/stepper.component.ts","./src/app/shared/stepper/stepper.component.html","./src/environments/environment.ts","./src/main.ts","./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { StepperComponent } from './shared/stepper/stepper.component';\r\nimport { ConfirmationComponent } from './components/confirm-appointment/confirmation.component';\r\nimport { CancelAppointmentComponent } from './components/cancel-appointment/cancel-appointment.component';\r\nimport { LanguageSettingsComponent } from './components/language-settings/language-settings.component';\r\nimport { LegalNoticeComponent } from './components/legal-notice/legal-notice.component';\r\nimport { QFlexComponent } from './components/q-flex/q-flex.component';\r\nimport { QFlexQrScanComponent } from './components/q-flex-qr-scan/q-flex-qr-scan.component';\r\nimport { ShiftAppointmentComponent } from './components/ShiftAppointment/ShiftAppointment.component';\r\n\r\nconst routes: Routes = [\r\n\r\n { path: 'confirm-appointment/:code/:lang', component: ConfirmationComponent },\r\n { path: 'confirm-appointment', component: ConfirmationComponent },\r\n\r\n { path: 'book-appointment/:init', component: StepperComponent },\r\n { path: 'book-appointment', component: StepperComponent },\r\n\r\n { path: 'cancel-appointment/:code/:lang', component: CancelAppointmentComponent },\r\n { path: 'cancel-appointment', component: CancelAppointmentComponent },\r\n\r\n { path: 'language', component: LanguageSettingsComponent },\r\n\r\n { path: 'legal-notice', component: LegalNoticeComponent },\r\n\r\n {path: 'q-flex/:ticket', component: QFlexComponent},\r\n {path: 'q-flex', component: QFlexComponent},\r\n {path: 'qr-scan/:id', component: QFlexQrScanComponent},\r\n\r\n {path: 'shift-appointment', component: ShiftAppointmentComponent},\r\n {path: 'shift-appointment/:code/:lang', component: ShiftAppointmentComponent}\r\n\r\n];\r\n\r\n\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes, { initialNavigation: 'disabled', onSameUrlNavigation: 'reload' })],\r\n // imports: [RouterModule.forRoot(routes, { useHash: true })],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","// https://material.angular.io/components/toolbar/overview\r\n\r\n\r\nimport { ChangeDetectorRef, Component, OnDestroy, NgZone, OnInit, AfterViewInit, Inject } from '@angular/core';\r\nimport { MediaMatcher } from '@angular/cdk/layout';\r\nimport { GlobalSettings } from './shared/config/globalsettings';\r\nimport { MessageService } from './shared/services/messages.service';\r\nimport { ConfigSettings } from './config-settings';\r\nimport { getLocaleDateFormat, DOCUMENT } from '@angular/common';\r\nimport { ConfigSettingsService } from './shared/services/config-settings.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Router, ActivatedRoute, NavigationEnd, NavigationStart } from '@angular/router';\r\nimport { LanguageService } from './shared/services/language.service';\r\nimport { Language } from './shared/modul/language';\r\nimport { Subscription } from 'rxjs';\r\nimport { CalendarService } from './shared/services/calendar.service';\r\nimport { ServerSettingsService } from './shared/services/server-settings.service';\r\nimport { InfoBannerService } from './shared/services/info-banner.service';\r\nimport { IInfoBanner } from './shared/model/info-banner.model';\r\nimport { timeout } from 'rxjs/operators';\r\nimport { QFlexWorkloadHub } from './shared/services/q-flex-workload-hub.service';\r\nimport { OnlineDesignService } from './shared/services/online-design.service';\r\nimport { ServerSettingService } from './shared/services/server-setting.service';\r\n\r\n//import Styles from 'style-loader!css-loader?modules!./styles1.scss';\r\n\r\n//import purple from '@material/theme/_variables.scss';\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\n\r\n\r\n\r\n\r\nexport class AppComponent implements OnInit, OnDestroy\r\n{\r\n\r\n\r\n private classame = (this).constructor.name;\r\n private subscriptions: Subscription[] = [];\r\n translationObject: any;\r\n\r\n configSettings: ConfigSettings;\r\n globalSettings: GlobalSettings = new GlobalSettings();\r\n mobileQuery: MediaQueryList;\r\n mobileHeightQuery: MediaQueryList;\r\n public enableDeleteAppoinmtent = false;\r\n public enableShiftAppointment = false;\r\n imagePath: string;\r\n RIGHT_FOOTER_TEXT: string;\r\n currentDateTime: Date;\r\n private _mobileQueryListener: () => void;\r\n\r\n\r\n public isQRScan: boolean = false;\r\n\r\n // --------------- online design ---------------\r\n public titleName: string = \"Q-Org\";\r\n public websiteLink: string = \"schauf.eu\";\r\n public showFlags: boolean = true;\r\n public headerImageIsLink: boolean = true;\r\n public logoImageIsLink: boolean = true;\r\n public logoImagePath: string = \"\";\r\n\r\n public showHeader: boolean = false;\r\n public headerImagePath: string = \"\";\r\n public headerBackgroundImagePath: string = \"\";\r\n public useHeaderBackgroundImage: boolean = false;\r\n public headerBackgroundColor: string = \"black\";\r\n\r\n public useBlackSchaufLogo: boolean = false;\r\n public showTicketInfo:boolean = false;\r\n\r\n\r\n // ------------------- banner ----------------------------\r\n public infoBanner: IInfoBanner;\r\n\r\n public showBanner: boolean;\r\n\r\n constructor(\r\n calenderService: CalendarService,\r\n private messageService: MessageService,\r\n private configSettingsService: ConfigSettingsService,\r\n private translate: TranslateService,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private languageService: LanguageService,\r\n private onlineDesignService: OnlineDesignService,\r\n\r\n changeDetectorRef: ChangeDetectorRef,\r\n private serverSettingsService: ServerSettingsService,\r\n private serverSettingService: ServerSettingService,\r\n\r\n private workloadHub: QFlexWorkloadHub,\r\n\r\n private bannerService: InfoBannerService,\r\n media: MediaMatcher,\r\n @Inject(DOCUMENT) private document: Document\r\n )\r\n {\r\n this.setStyle(true);\r\n this.showBanner = true;\r\n router.initialNavigation();\r\n\r\n router.events.subscribe( (event) => \r\n {\r\n if (event instanceof NavigationEnd) {\r\n // Hide loading indicator\r\n if(event.url.toLowerCase().indexOf(\"qr-scan\") >= 0)\r\n {\r\n this.isQRScan = true;\r\n }\r\n else\r\n {\r\n this.isQRScan = false;\r\n }\r\n }\r\n\r\n });\r\n\r\n workloadHub.startConnection();\r\n workloadHub.receiveWorkload();\r\n\r\n // the date of the server is initialised\r\n this.subscriptions.push(this.serverSettingsService.getServerDate().subscribe(date =>\r\n {\r\n this.currentDateTime = date.dateTimeNow;\r\n }));\r\n\r\n let tmpLang : Language = \r\n {\r\n code: \"de\",\r\n flag: \"de\",\r\n isActive: true,\r\n isDefaultLanguage: false,\r\n timeFormat: \"HH:mm\",\r\n order: -1,\r\n name: \"Deutsch\",\r\n id: \"0\"\r\n };\r\n this.languageService.currentLanguage = tmpLang;\r\n this.languageService.setDefaultLang();\r\n\r\n this.enableDeleteAppoinmtent = configSettingsService.configSettings.enableDeleteAppoinmtent !== undefined ? configSettingsService.configSettings.enableDeleteAppoinmtent : true;\r\n\r\n\r\n this.serverSettingService.settingsBehaviourSubject.subscribe(s => this.enableShiftAppointment = s.enableOnlineShiftAppointment);\r\n\r\n this.configSettings = this.configSettingsService.configSettings;\r\n this.mobileQuery = media.matchMedia(`(max-width: ${this.configSettings.SMALL_WIDTH_BREAKPOINT}px)`);\r\n this.mobileHeightQuery = media.matchMedia(`(max-height: ${this.configSettings.SMALL_WIDTH_BREAKPOINT}px)`);\r\n\r\n this._mobileQueryListener = () => changeDetectorRef.detectChanges();\r\n this.mobileQuery.addListener(this._mobileQueryListener);\r\n\r\n\r\n this.imagePath = \"./assets/img/logo.png\";\r\n }\r\n\r\n\r\n ngOnInit()\r\n {\r\n this.setStyle(false);\r\n\r\n this.subscriptions.push(this.translate.get(['RIGHT_FOOTER_TEXT']).subscribe((translation: [string]) =>\r\n {\r\n this.translationObject = translation;\r\n this.RIGHT_FOOTER_TEXT = this.translationObject['RIGHT_FOOTER_TEXT'].replace(\"{{year}}\", new Date().getFullYear().toString());\r\n }));\r\n\r\n this.subscriptions.push(this.bannerService.getInfoBannerSettings().subscribe(data => \r\n {\r\n this.infoBanner = data;\r\n this.infoBanner.fontSize += \"pt\";\r\n this.infoBanner.italicTextVM = this.infoBanner.italicText ? \"italic\" : \"normal\";\r\n this.infoBanner.boldTextVM = this.infoBanner.boldText ? \"bold\" : \"normal\";\r\n this.infoBanner.buttonColor += \" !important\";\r\n this.infoBanner.buttonTextColor += \" !important\";\r\n }));\r\n }\r\n\r\n private setStyle(useDefault: boolean): void\r\n {\r\n if (useDefault)\r\n {\r\n // --------------- primary-color ---------------\r\n document.documentElement.style.setProperty('--primary-background-color', '#3f51b5');\r\n document.documentElement.style.setProperty('--primary-text-color', '#fff');\r\n\r\n // --------------- highlight-color ---------------\r\n document.documentElement.style.setProperty('--highlight-background-color', '#ff4081');\r\n document.documentElement.style.setProperty('--highlight-text-color', '#fff');\r\n\r\n // --------------- Buttons ---------------\r\n document.documentElement.style.setProperty('--button-background-color', '#3f51b5');\r\n document.documentElement.style.setProperty('--button-text-color', '#fff');\r\n\r\n // --------------- step edit state ---------------\r\n document.documentElement.style.setProperty('--step-edit-background-color', '#3f51b5');\r\n document.documentElement.style.setProperty('--step-edit-text-color', '#fff');\r\n\r\n // --------------- input highlight ---------------\r\n document.documentElement.style.setProperty('--input-highlight-color', '#3f51b5');\r\n }\r\n else\r\n {\r\n this.subscriptions.push(this.onlineDesignService.getOnlineDesignSettings().subscribe( dto => {\r\n\r\n // --------------- primary-color ---------------\r\n document.documentElement.style.setProperty('--primary-background-color', dto.primaryBackgroundColor);\r\n document.documentElement.style.setProperty('--primary-text-color', dto.primaryTextColor);\r\n\r\n // --------------- highlight-color ---------------\r\n document.documentElement.style.setProperty('--highlight-background-color', dto.highlightBackgroundColor);\r\n document.documentElement.style.setProperty('--highlight-text-color', dto.highlightTextColor);\r\n\r\n // --------------- Buttons ---------------\r\n document.documentElement.style.setProperty('--button-background-color', dto.buttonBackgroundColor);\r\n document.documentElement.style.setProperty('--button-text-color', dto.buttonTextColor);\r\n\r\n document.documentElement.style.setProperty('--info-button-text-color', dto.serviceInfoButtonTextColor);\r\n document.documentElement.style.setProperty('--add-button-text-color', dto.serviceAddButtonTextColor);\r\n document.documentElement.style.setProperty('--substract-button-text-color', dto.serviceSubstractButtonTextColor);\r\n\r\n // --------------- step edit state ---------------\r\n document.documentElement.style.setProperty('--step-edit-background-color', dto.stepEditBackgroundColor);\r\n document.documentElement.style.setProperty('--step-edit-text-color', dto.stepEditTextColor);\r\n\r\n // --------------- input highlight ---------------\r\n document.documentElement.style.setProperty('--input-highlight-color', dto.inputHighlightColor);\r\n\r\n \r\n this.showFlags = dto.showFlags;\r\n this.showTicketInfo = dto.showTicketInfo;\r\n this.onlineDesignService.showServiceDuration.next(dto.showServiceDuration);\r\n this.onlineDesignService.showServiceGroupDuration.next(dto.showServiceGroupDuration);\r\n this.onlineDesignService.showTotalDuration.next(dto.showTotalDuration);\r\n this.titleName = dto.titleName;\r\n this.websiteLink = dto.websiteLink;\r\n this.headerImageIsLink = dto.headerImageIsLink;\r\n this.logoImageIsLink = dto.logoImageIsLink;\r\n this.logoImagePath = dto.logoImagePath;\r\n\r\n this.showHeader = dto.showHeader;\r\n this.headerImagePath = dto.headerImagePath;\r\n this.headerBackgroundImagePath = dto.headerBackgroundImagePath;\r\n this.useHeaderBackgroundImage = dto.useHeaderBackgroundImage;\r\n this.headerBackgroundColor = dto.headerBackgroundColor;\r\n\r\n this.useBlackSchaufLogo = dto.useBlackSchaufLogo;\r\n\r\n let favIconElement: HTMLLinkElement = document.querySelector(\"#appIcon\");\r\n favIconElement.href = this.logoImagePath;\r\n }));\r\n \r\n }\r\n }\r\n\r\n private hideBanner()\r\n {\r\n // var div = document.getElementById(\"banner\");\r\n // $(div).fadeOut(\"slow\");\r\n\r\n // setTimeout(() => { this.showBanner = false;}, 1000);\r\n this.showBanner = false;\r\n }\r\n\r\n\r\n styleLoader()\r\n {\r\n\r\n //var styleUrl = \"style1.4ab9b45d72f32b722d80.css\"\r\n\r\n //var styleUrl = \"style2.77ff7dde85cbd12ef69e.css\"\r\n var styleUrl = \"style1.scss\"\r\n debugger;\r\n return new Promise((resolve, reject) =>\r\n {\r\n const styleElement = document.createElement('link');\r\n styleElement.href = styleUrl;\r\n styleElement.onload = resolve;\r\n document.head.appendChild(styleElement);\r\n });\r\n }\r\n\r\n get_right_footer_text()\r\n {\r\n return this.RIGHT_FOOTER_TEXT;\r\n }\r\n\r\n\r\n\r\n public bookAppointment(): void\r\n {\r\n let curRoute = this.router.url;\r\n if (curRoute == '/book-appointment/init')\r\n {\r\n this.document.defaultView.location.reload();\r\n return;\r\n }\r\n else\r\n {\r\n this.router.navigate(['book-appointment/init']);\r\n }\r\n\r\n }\r\n\r\n public confirmAppointment(): void\r\n {\r\n let curRoute = this.router.url;\r\n if (curRoute == '/confirm-appointment')\r\n {\r\n this.document.defaultView.location.reload();\r\n return;\r\n }\r\n else\r\n {\r\n this.router.navigate(['confirm-appointment']);\r\n }\r\n\r\n }\r\n\r\n public shiftAppointment(): void\r\n {\r\n let curRoute = this.router.url;\r\n if (curRoute == '/shift-appointment')\r\n {\r\n this.document.defaultView.location.reload();\r\n return;\r\n }\r\n else\r\n {\r\n this.router.navigate(['shift-appointment']);\r\n }\r\n }\r\n\r\n public deleteAppointment(): void\r\n {\r\n let curRoute = this.router.url;\r\n if (curRoute == '/cancel-appointment')\r\n {\r\n this.document.defaultView.location.reload();\r\n return;\r\n }\r\n else\r\n {\r\n this.router.navigate(['cancel-appointment']);\r\n }\r\n\r\n }\r\n\r\n ngOnDestroy(): void\r\n {\r\n this.mobileQuery.removeListener(this._mobileQueryListener);\r\n this.subscriptions.forEach(s => s.unsubscribe());\r\n }\r\n\r\n}\r\n","\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{'MENU.BOOK_APPOINTMENT' | translate}}\r\n {{'MENU.CODE_CONFIRM' | translate}}\r\n {{'MENU.SHIFT_APPOINTMENT' | translate}}\r\n {{'MENU.CANCEL_APPOINTMENT' | translate}}\r\n {{'MENU.Q-FLEX' | translate}}\r\n {{'MENU.LEGAL_NOTICE' | translate}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

{{titleName}}

\r\n
\r\n \r\n\r\n \r\n \r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n\r\n\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n// use hammer.\r\n// https://stackoverflow.com/questions/41322566/angular-2-could-not-find-hammerjs\r\n\r\nimport { CommonModule, HashLocationStrategy } from '@angular/common';\r\n\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport {platformBrowserDynamic} from '@angular/platform-browser-dynamic';\r\nimport {HttpClientModule, HTTP_INTERCEPTORS, HttpClient, withInterceptors, provideHttpClient, HttpErrorResponse, HttpResponse, HttpInterceptorFn} from '@angular/common/http';\r\nimport {NgModule, APP_INITIALIZER, inject} from '@angular/core';\r\n\r\n\r\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\r\n// import {FlexLayoutModule} from '@angular/flex-layout';\r\nimport { ToastrModule, ToastrService } from 'ngx-toastr';\r\nimport { AppRoutingModule } from './app-routing.module';\r\n\r\nimport { AppComponent } from './app.component';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\n\r\nimport { HttpClientInMemoryWebApiModule } from 'angular-in-memory-web-api';\r\nimport { InMemoryWebApiModule } from 'angular-in-memory-web-api';\r\n\r\nimport { environment } from '../environments/environment';\r\n\r\n\r\nimport { LocationComponent } from './components/location/location.component';\r\nimport { ConcernComponent } from './components/concern/concern.component';\r\nimport { UserconcernComponent } from './components/userconcern/userconcern.component';\r\n\r\nimport { registerLocaleData,Location, LocationStrategy, PathLocationStrategy } from '@angular/common';\r\nimport localeDe from '@angular/common/locales/de';\r\nimport localeDeExtra from '@angular/common/locales/extra/de';\r\n\r\n\r\n\r\nimport { LocationService } from './shared/services/location.service';\r\nimport { ConcernService } from './shared/services/concern.service';\r\n\r\nimport { UserConcernService } from './shared/services/userconcern.service';\r\nimport { ConcernDetailComponent } from './components/concerndetail/concerndetail.component';\r\nimport { AppointmentcalendarComponent } from './components/appointmentcalendar/appointmentcalendar.component';\r\nimport { LocalnumberPipe } from './shared/pipe/localnumber.pipe';\r\nimport { LocaldatePipe } from './shared/pipe/localdate.pipe';\r\nimport { ConcactFormComponent } from './components/concactform/concactform.component';\r\nimport { StepperComponent } from './shared/stepper/stepper.component';\r\nimport { FilterComponent } from './shared/filter/filter.component';\r\nimport { ConcernGroupService } from './shared/services/concerngroup.service';\r\nimport { ConcernGroupComponent } from './components/concerngroup/concerngroup.component';\r\nimport * as _ from 'lodash';\r\nimport * as Moment from 'moment/moment';\r\n\r\nimport { CalendarComponent } from './components/calendar/calendar.component';\r\n\r\nimport { RecaptchaModule, RecaptchaFormsModule } from 'ng-recaptcha';\r\nimport { InMemoryDataService } from './in-memory-data.service';\r\n// import {StoreModule} from '@ngrx/store';\r\nimport { ConfirmationComponent } from './components/confirm-appointment/confirmation.component';\r\nimport { Nl2pbrPipe } from './shared/pipe/nl2pbr.pipe';\r\nimport { ConfigSettingsService } from './shared/services/config-settings.service';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { TranslateModule, TranslateLoader, TranslateService } from '@ngx-translate/core';\r\nimport { DefaultTranslationPipe } from './shared/pipe/default-translation.pipe';\r\nimport { CancelAppointmentComponent } from './components/cancel-appointment/cancel-appointment.component';\r\nimport { PageAttributesDirective } from './shared/directives/page-attributes.directive';\r\nimport { LanguageSettingsComponent } from './components/language-settings/language-settings.component';\r\nimport { UserSettingsPipe } from './shared/pipe/user-settings.pipe';\r\nimport { MaterialModule } from './shared/material.module';\r\nimport { LegalNoticeComponent } from './components/legal-notice/legal-notice.component';\r\n// import { ResponseInterceptor } from 'schauf-response-handler';\r\nimport { QFlexComponent } from './components/q-flex/q-flex.component';\r\nimport { ConfirmationDialogComponent } from './components/confirmation-dialog/confirmation-dialog.component';\r\nimport { QFlexQrScanComponent } from './components/q-flex-qr-scan/q-flex-qr-scan.component';\r\nimport { QFlexSecurityPopupComponent } from './components/q-flex-qr-scan/q-flex-security-popup/q-flex-security-popup.component';\r\nimport { SafeHtmlPipe } from './shared/pipe/safeHtml.pipe';\r\nimport { ShiftAppointmentComponent } from './components/ShiftAppointment/ShiftAppointment.component';\r\nimport { ShiftAppointmentService } from './components/ShiftAppointment/ShiftAppointment.service';\r\nimport { catchError, of, tap } from 'rxjs';\r\n//import { ConfigSettings } from './config-settings';\r\nconst routes: Routes = [\r\n { path: '', redirectTo: '/book-appointment', pathMatch: 'full' },\r\n { path: 'book-appointment/init', redirectTo: '/book-appointment', pathMatch: 'full' },\r\n { path: 'book-appointment', component: ConcernComponent }\r\n // { path: '**', redirectTo: 'concern' }\r\n];\r\n\r\nexport function HttpLoaderFactory(http: HttpClient) {\r\n return new TranslateHttpLoader(http,'./assets/i18n/','.json');\r\n}\r\n// init data \r\n// todo: just one useFactory function should be used.\r\n// currently the data are loaded more then ones.\r\nexport function initializeData(configSettingsService: ConfigSettingsService) {\r\n return (): Promise => { \r\n return configSettingsService.init();\r\n }\r\n}\r\nexport function tokenGetter() {\r\n return localStorage.getItem('currentUser');\r\n}\r\n\r\n\r\nexport const responseInterceptorFn : HttpInterceptorFn = (request, next) =>\r\n{\r\n const toasterService = inject(ToastrService);\r\n const translatorService = inject(TranslateService);\r\n\r\n return next(request).pipe(\r\n tap( response => \r\n {\r\n try\r\n {\r\n let evt = > response;\r\n const message = evt.headers.get(\"Message\");\r\n const type = evt.headers.get(\"Type\");\r\n if (type !== null && type !== undefined && message !== null && message !== undefined)\r\n {\r\n switch (type)\r\n {\r\n case \"Ok\":\r\n translatorService.get(message).subscribe(translatedMessage => \r\n {\r\n toasterService.success(translatedMessage, \"\", { positionClass: 'toast-top-center' });\r\n }).unsubscribe();\r\n break;\r\n\r\n case \"Information\":\r\n translatorService.get(message).subscribe(translatedMessage => \r\n {\r\n toasterService.info(translatedMessage, \"\", { positionClass: 'toast-top-center' });\r\n }).unsubscribe();\r\n break;\r\n }\r\n }\r\n }\r\n catch\r\n {\r\n }\r\n \r\n }),\r\n catchError((error: any) => \r\n {\r\n try\r\n {\r\n const err = error;\r\n\r\n if (err.headers != null && err.headers != undefined)\r\n {\r\n const message = err.headers.get(\"Message\");\r\n const type = err.headers.get(\"Type\");\r\n\r\n if (type !== null && type !== undefined && message !== null && message !== undefined)\r\n {\r\n switch (type)\r\n {\r\n case \"Warning\":\r\n translatorService.get(message).subscribe(translatedMessage => \r\n {\r\n toasterService.warning(translatedMessage, \"\", { positionClass: 'toast-top-center' });\r\n }).unsubscribe();\r\n break;\r\n\r\n default:\r\n translatorService.get(message).subscribe(translatedMessage => \r\n {\r\n toasterService.error(translatedMessage, \"\", { positionClass: 'toast-top-center' });\r\n }).unsubscribe();\r\n break;\r\n }\r\n }\r\n }\r\n return of(error);\r\n }\r\n catch\r\n {\r\n return of(error);\r\n }\r\n })\r\n );\r\n}\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n CommonModule,\r\n MaterialModule,\r\n FormsModule,\r\n ToastrModule.forRoot({\r\n timeOut: 15000,\r\n positionClass: 'toast-bottom-center',\r\n preventDuplicates: true,\r\n }),\r\n HttpClientModule,\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useFactory: HttpLoaderFactory,\r\n deps: [HttpClient]\r\n }\r\n }),\r\n ReactiveFormsModule,\r\n // FlexLayoutModule,\r\n AppRoutingModule,\r\n RecaptchaModule,\r\n RecaptchaFormsModule,\r\n RouterModule.forRoot(routes, { initialNavigation: 'disabled' }),\r\n // StoreModule.forRoot({}),\r\n // todo: implement for this and other components\r\n // StoreModule.forFeature('concern',{}) \r\n ],\r\n declarations: [\r\n AppComponent,\r\n LocationComponent,\r\n ConcernComponent,\r\n UserconcernComponent,\r\n ConcernDetailComponent,\r\n AppointmentcalendarComponent,\r\n Nl2pbrPipe,\r\n LocaldatePipe,\r\n LocalnumberPipe,\r\n UserSettingsPipe,\r\n DefaultTranslationPipe,\r\n SafeHtmlPipe,\r\n ConcactFormComponent,\r\n StepperComponent,\r\n FilterComponent,\r\n ConcernGroupComponent,\r\n ConfirmationComponent,\r\n CancelAppointmentComponent,\r\n CalendarComponent,\r\n PageAttributesDirective,\r\n LanguageSettingsComponent,\r\n LegalNoticeComponent,\r\n QFlexComponent,\r\n ConfirmationDialogComponent,\r\n QFlexQrScanComponent,\r\n QFlexSecurityPopupComponent,\r\n ShiftAppointmentComponent\r\n ],\r\n providers: [\r\n provideHttpClient(withInterceptors([responseInterceptorFn])),\r\n // { provide: HTTP_INTERCEPTORS, useClass: ResponseInterceptor, multi: true },\r\n // { provide: HTTP_INTERCEPTORS, useClass: CacheInterceptor, multi: true },\r\n { provide: LocationStrategy, useClass: HashLocationStrategy },\r\n ConfigSettingsService, { provide: APP_INITIALIZER, useFactory: initializeData, deps: [ConfigSettingsService], multi: true },\r\n LocationService,\r\n ConcernService,\r\n ShiftAppointmentService,\r\n ConcernGroupService,\r\n UserConcernService,\r\n Location, { provide: LocationStrategy, useClass: PathLocationStrategy }\r\n ],\r\n exports: [FilterComponent],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n\r\n//platformBrowserDynamic().bootstrapModule(AppModule);\r\n\r\nregisterLocaleData(localeDe, 'de-De', localeDeExtra);\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { MatRadioChange } from '@angular/material/radio';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport * as moment from 'moment';\r\nimport { Subscription } from 'rxjs';\r\nimport { GlobalSettings } from 'src/app/shared/config/globalsettings';\r\nimport { ServerSettings } from 'src/app/shared/config/server-settings';\r\nimport { AppointmentDetailDto } from 'src/app/shared/model/appointment.model';\r\nimport { ICalendarDay } from 'src/app/shared/model/calendarday';\r\nimport { IPublicEmployee } from 'src/app/shared/model/public-employee';\r\nimport { ITimeSpan } from 'src/app/shared/model/timespan';\r\nimport { LanguageService } from 'src/app/shared/services/language.service';\r\nimport { ServerSettingService } from 'src/app/shared/services/server-setting.service';\r\nimport { ServerSettingsService } from 'src/app/shared/services/server-settings.service';\r\nimport { ShiftAppointmentDto } from './ShiftAppointment.model';\r\nimport { ShiftAppointmentService } from './ShiftAppointment.service';\r\n\r\nconst MIN: number = 60000;\r\nconst HOUR: number = 3600000;\r\n\r\n@Component({\r\n selector: 'app-ShiftAppointment',\r\n templateUrl: './ShiftAppointment.component.html',\r\n styleUrls: ['./ShiftAppointment.component.scss']\r\n})\r\nexport class ShiftAppointmentComponent implements OnInit, OnDestroy {\r\n\r\n // general\r\n private subscriptions: Subscription[] = [];\r\n public isLoading: boolean;\r\n public currentStep: string = \"controlCode\";\r\n public appointment: AppointmentDetailDto;\r\n private currentServerDate: Date;\r\n private serverDateNowString: string;\r\n public appointmentIsToCloseToNow: boolean;\r\n\r\n\r\n // Settings\r\n public canSelectEmployee: boolean;\r\n public minTimeToAppointment: number;\r\n public startTimeSteps: number;\r\n private roundAppointmentStart: boolean;\r\n\r\n\r\n // step controlCode\r\n public codeForm: UntypedFormGroup;\r\n\r\n // step selectEmployee\r\n private allPublicEmployees : IPublicEmployee[];\r\n public displayedPublicEmployees: IPublicEmployee[];\r\n public filteredDisplayedEmployees: IPublicEmployee[] = [];\r\n\r\n // step selectTime\r\n public selectTimeForm: UntypedFormGroup;\r\n public target: number = 0;\r\n public targetId: string = null;\r\n public datesToHighlight: Array = [];\r\n public displayStartTimes: boolean = false;\r\n public availableDateTimes: Array = [];\r\n public avilableHoursSelect: Date[][];\r\n public newAppointmentStart: Date = null;\r\n\r\n // Appointment Targets\r\n private readonly targetCurrentEmployee: number = 0;\r\n private readonly targetOtherEmployee: number = 1;\r\n private readonly targetAny: number = 3;\r\n\r\n \r\n\r\n\r\n constructor(\r\n private formBuilder: UntypedFormBuilder,\r\n private shiftAppointmentService: ShiftAppointmentService,\r\n private serverSettingService: ServerSettingService,\r\n private serverSettingsService: ServerSettingsService,\r\n private route: ActivatedRoute,\r\n private languageService: LanguageService,\r\n private translate: TranslateService,\r\n ) { }\r\n\r\n ngOnInit() \r\n {\r\n this.codeForm = this.formBuilder.group({\r\n 'controlCode': [null, Validators.required],\r\n 'email': [null, [Validators.email, Validators.required]]\r\n });\r\n\r\n this.selectTimeForm = this.formBuilder.group({\r\n 'selectedDateWithTime': [null, Validators.required],\r\n timeSectionsArray: this.formBuilder.array([])\r\n });\r\n\r\n this.serverSettingService.settingsBehaviourSubject.subscribe( (settings: ServerSettings) => {\r\n this.canSelectEmployee = settings.canSelectEmployeeOnline;\r\n this.minTimeToAppointment = settings.shiftAppointmentMinDistToStartInHours;\r\n this.startTimeSteps = settings.appointmentStartTimeSteps;\r\n this.roundAppointmentStart = settings.appointmentRoundStartMinutes;\r\n });\r\n\r\n this.subscriptions.push(this.serverSettingsService.getServerDate().subscribe(date =>\r\n {\r\n this.currentServerDate = date.dateTimeNow;\r\n this.serverDateNowString = date.serverTime;\r\n }));\r\n\r\n \r\n\r\n // check direct confirmation link.\r\n const paramCode = this.route.snapshot.paramMap.get('code');\r\n if (paramCode)\r\n {\r\n this.codeForm.setValue({\r\n 'controlCode': paramCode,\r\n 'email': null\r\n });\r\n }\r\n\r\n const paramLang = this.route.snapshot.paramMap.get('lang');\r\n if (paramLang)\r\n {\r\n this.languageService.setLanguageFromCode(paramLang);\r\n this.translate.setDefaultLang(paramLang);\r\n }\r\n }\r\n\r\n\r\n public previousStep(): void\r\n {\r\n switch(this.currentStep)\r\n {\r\n case \"confirmInput\":\r\n this.currentStep = \"selectTime\";\r\n break;\r\n case \"selectTime\":\r\n this.currentStep = this.canSelectEmployee ? \"selectEmployee\" : \"controlCode\";\r\n break;\r\n case \"selectEmployee\":\r\n this.currentStep = \"controlCode\";\r\n break;\r\n }\r\n }\r\n\r\n\r\n public async getAppointment(): Promise\r\n {\r\n if(!this.codeForm.valid)\r\n {\r\n return;\r\n }\r\n\r\n let data = {...this.codeForm.value};\r\n this.isLoading = true;\r\n try\r\n {\r\n this.shiftAppointmentService.getAppointment(data.controlCode, data.email).subscribe(async (app) => {\r\n this.appointment = app;\r\n \r\n let timeDiffMS = moment(this.appointment.start).diff(moment(this.currentServerDate));\r\n let timeDiffMin = (timeDiffMS / 1000) / 60;\r\n let timeDiffHour = timeDiffMin / 60;\r\n\r\n if(timeDiffHour < this.minTimeToAppointment)\r\n {\r\n this.appointmentIsToCloseToNow = true;\r\n this.isLoading = false;\r\n return;\r\n }\r\n \r\n\r\n if(this.canSelectEmployee)\r\n {\r\n this.shiftAppointmentService.getPublicEmployees(this.appointment.id).subscribe(allPublicEmployees => {\r\n this.allPublicEmployees = allPublicEmployees;\r\n \r\n this.allPublicEmployees.sort( (a , b) => a.lastName.localeCompare(b.lastName));\r\n this.displayedPublicEmployees = [... this.allPublicEmployees];\r\n this.filterDisplayedEmployees(\"\");\r\n\r\n this.currentStep = \"selectEmployee\";\r\n this.target = this.targetAny;\r\n this.targetId = null;\r\n });\r\n }\r\n else\r\n {\r\n this.currentStep = \"selectTime\";\r\n this.targetId = null;\r\n this.target = this.targetAny;\r\n await this.getPossibleDays();\r\n }\r\n \r\n this.isLoading = false;\r\n });\r\n }\r\n catch(error)\r\n {\r\n console.error(error);\r\n this.isLoading = false;\r\n return;\r\n }\r\n \r\n\r\n \r\n }\r\n\r\n public filterDisplayedEmployees(input): void\r\n {\r\n if(input == 0 || input == \"\")\r\n {\r\n this.filteredDisplayedEmployees = this.displayedPublicEmployees;\r\n }\r\n else\r\n {\r\n this.filteredDisplayedEmployees = this.displayedPublicEmployees.filter(emp => (emp.firstName.toLowerCase() + \" \" + emp.lastName.toLowerCase()).includes(input.toLowerCase()));\r\n }\r\n }\r\n\r\n public selectedEmployee(event): void\r\n {\r\n if(event.value == -1 || event.value == undefined || event.value == null)\r\n {\r\n this.target = this.targetAny;\r\n this.targetId = null;\r\n }\r\n else\r\n {\r\n this.target = this.targetOtherEmployee;\r\n this.targetId = event.value;\r\n }\r\n }\r\n\r\n public async getPossibleDays(): Promise\r\n {\r\n this.currentStep = \"selectTime\";\r\n this.isLoading = true;\r\n try\r\n {\r\n\r\n let possibleDays = await this.shiftAppointmentService.getPossibleDays(this.appointment.id, this.target, this.targetId);\r\n \r\n possibleDays.forEach(function (day)\r\n {\r\n let help = moment(day.day, \"YYYY-MM-DDThh:mm\");\r\n day.dayDate = help.toDate();\r\n day.dayNumber = day.dayDate.setHours(0, 0, 0, 0); // only interested in start of the day of current date\r\n });\r\n let earliestPossibleStartDate = new Date();\r\n earliestPossibleStartDate = new Date(earliestPossibleStartDate.setHours(earliestPossibleStartDate.getHours()+this.minTimeToAppointment));\r\n \r\n // remove all days, that lie in the past\r\n possibleDays = possibleDays.filter(x => x.dayDate >= new Date(new Date(earliestPossibleStartDate).setHours(0, 0, 0, 0)) );\r\n this.datesToHighlight = possibleDays.map(x => x.dayNumber);\r\n\r\n this.isLoading = false;\r\n }\r\n catch(error)\r\n {\r\n console.error(error);\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n public async selectCalendarDay(selectedDate: number): Promise\r\n {\r\n\r\n this.displayStartTimes = true;\r\n\r\n //convert the number into the date format.\r\n let thisDate = new Date(selectedDate);\r\n\r\n // CAREFUL! Have to send the day with time 00:00 otherwise some timespans might not be detected from backend\r\n let daySpans: Array = await this.shiftAppointmentService.getPossibleTimespans(this.appointment.id, this.target, this.targetId, moment(thisDate).format(\"YYYY-MM-DDT00:00\"))\r\n daySpans.forEach((e) =>\r\n {\r\n if (e[\"start\"] !== undefined)\r\n {\r\n // convert to moment, best option to transform to a date\r\n e.momentStart = moment(e.start, \"YYYY-MM-DDThh:mm\");\r\n let startdate = new Date(e.momentStart);\r\n e.startTimeDate = new Date(startdate);\r\n e.startTimeNumber = new Date(startdate).getTime();\r\n }\r\n if (e[\"end\"] !== undefined)\r\n {\r\n e.momentEnd = moment(e.end, \"YYYY-MM-DDThh:mm\");\r\n\r\n let enddate = new Date(e.momentEnd);\r\n e.endTimeDate = new Date(enddate);\r\n e.endTimeNumber = new Date(enddate).getTime();\r\n }\r\n });\r\n \r\n let thisSpans = daySpans.filter(\r\n x => \r\n x.startTimeDate.getDay() === thisDate.getDay()\r\n && x.startTimeDate.getMonth() === thisDate.getMonth()\r\n && x.startTimeDate.getFullYear() === thisDate.getFullYear()\r\n );\r\n \r\n\r\n // prepares our this.daySpans for display \r\n this.setModifiedStartDay(thisSpans);\r\n\r\n let availableDateTimesLocal: Date[] = [];\r\n \r\n thisSpans.forEach((e) =>\r\n {\r\n for (let suggestedTime = e.startTimeNumber; suggestedTime <= e.endTimeNumber; suggestedTime = suggestedTime + (this.startTimeSteps * MIN))\r\n {\r\n availableDateTimesLocal.push(new Date(suggestedTime));\r\n }\r\n });\r\n \r\n // global variable not available in the inner scope\r\n this.availableDateTimes = availableDateTimesLocal;\r\n\r\n this.initTimeSections();\r\n\r\n }\r\n\r\n private setModifiedStartDay(thisSpans: ITimeSpan[])\r\n {\r\n // 1 modification: check configuration values in hours for first possible booking \r\n // step 1.1: filter out values where the enddate is earlier as the config value. \r\n let startHours = Math.floor(this.minTimeToAppointment);\r\n\r\n let momentDate = moment(this.serverDateNowString, \"YYYY-MM-DDThh:mm\");\r\n let serverDateHelper = momentDate.toDate();\r\n let newDate = serverDateHelper;\r\n\r\n let EarliestDateNumber = newDate.setHours(newDate.getHours() + startHours);\r\n // this.EarliestDateNumberDev = EarliestDateNumber;\r\n\r\n thisSpans.filter(x => x.endTimeNumber > EarliestDateNumber)\r\n\r\n // step 1.2: modify the startdate of all, \r\n // where the startdate is earlier then the config value\r\n thisSpans.forEach(function (e)\r\n {\r\n //let date = new Date(e.startTimeNumber);\r\n if (e.startTimeNumber <= EarliestDateNumber)\r\n {\r\n\r\n e.startTimeNumber = EarliestDateNumber;\r\n e.startTimeDate = new Date(EarliestDateNumber);\r\n }\r\n\r\n });\r\n\r\n // 2 modifcation\r\n // check if rounded values should be displayed for the start date.\r\n\r\n if (this.roundAppointmentStart)\r\n {\r\n let minuteSpan = this.startTimeSteps;\r\n thisSpans.forEach(function (e)\r\n {\r\n // get a valid date from the number value \r\n let date = new Date(e.startTimeNumber);\r\n // start minutes value of the dayspan\r\n let minutes = date.getMinutes();\r\n for (let minutesCounter = minutes; minutesCounter <= (minutes + minuteSpan); minutesCounter = minutesCounter + 1)\r\n {\r\n let helper = minutesCounter / minuteSpan;\r\n let helper2 = Math.round(helper);\r\n if (helper === helper2)\r\n {\r\n //wir haben den startzeitpunkt der minuten ermittelt.\r\n // date\r\n var x = date.setMinutes(0);\r\n var y = new Date(x);\r\n var z = y.setMinutes(minutesCounter);\r\n e.startTimeNumber = z;\r\n e.startTimeDate = new Date(z);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n initTimeSections()\r\n {\r\n let avilableHoursSelect = new Array>();\r\n\r\n avilableHoursSelect = this.getIndexHourDay2DArray(this.availableDateTimes);\r\n let timeSections = this.selectTimeForm.get('timeSectionsArray') as UntypedFormArray;\r\n\r\n // delete old elements from previous selected day.\r\n let count = timeSections.controls.length;\r\n for (let i = 0; i < count; i++)\r\n {\r\n timeSections.removeAt(0);\r\n }\r\n\r\n for (let i = 0; i < avilableHoursSelect.length; i++)\r\n {\r\n // find full hour which is before the first entry for header display\r\n let timeFrom = avilableHoursSelect[i][0];\r\n var timeFromHours = timeFrom.getHours();\r\n\r\n // time from is the earliest possible time\r\n var momentDate = moment(timeFrom, \"YYYY-MM-DDThh:mm\");\r\n // calculate \r\n\r\n // todo: check if this also works\r\n var momentStartDay = momentDate.format(\"YYYY-MM-DD\" + \"T00:00:00\");\r\n var momentStartDay = momentDate.format(\"YYYY-MM-DD\" + \" 00:00:00\");\r\n\r\n let help = moment(momentStartDay, \"YYYY-MM-DDThh:mm\");\r\n var helpDate = help.toDate();\r\n\r\n timeFrom = new Date(helpDate.setHours(helpDate.getHours() + timeFromHours));\r\n let timeTo = new Date(timeFrom);\r\n timeTo = new Date(timeTo.setHours(timeTo.getHours() + 1));\r\n\r\n let timeFromString = this.languageService.convertTime(timeFrom);\r\n let timeToString = this.languageService.convertTime(timeTo);\r\n\r\n let hourHeader = \"\" ;// this.APPOINTMENT_CALENDAR_DAY_HOUR_HEADER_TEXT.replace(\"{{StartHour}}\", timeFromString).replace(\"{{EndHour}}\", timeToString);\r\n\r\n\r\n timeSections.push(this.formBuilder.group({\r\n radioSection: false,\r\n hourHeader: hourHeader,\r\n timeFrom: timeFrom,\r\n timeTo: timeTo,\r\n }));\r\n\r\n }\r\n\r\n this.avilableHoursSelect = avilableHoursSelect;\r\n }\r\n\r\n // return a 2D array, first elment index can be used as counter with value: array of dates of 1 hour\r\n getIndexHourDay2DArray(availableDateTimesLocal: Date[]): Array>\r\n {\r\n\r\n if(GlobalSettings.isEmpty(availableDateTimesLocal) || availableDateTimesLocal.length == 0)\r\n return new Array>();\r\n // get the first value. it is a complete date format.\r\n let start = availableDateTimesLocal[0];\r\n\r\n // controls display of the first hour step.\r\n\r\n // hh:MM A\r\n\r\n var startHours = start.getHours()\r\n let avilableHoursSelect = new Array>();\r\n var counterDate: Date;\r\n\r\n // max possible step for one day is 23 - 24 Uhr\r\n for (let i = 0; i < 24; i++)\r\n {\r\n var row: Date[];\r\n row = new Array();\r\n for (let entry of availableDateTimesLocal)\r\n {\r\n counterDate = entry;\r\n if (entry.getHours() > startHours)\r\n {\r\n // time step not in the same hour. break the inner loop and go to next hour.\r\n startHours = entry.getHours()\r\n break;\r\n }\r\n // push the time entry to the row hour element\r\n row.push(entry);\r\n }\r\n\r\n // at the 2 dimension array hour element\r\n avilableHoursSelect.push(row);\r\n\r\n // check if more hours values are available \r\n if (availableDateTimesLocal.findIndex(x => x > counterDate) === -1)\r\n {\r\n // if the last row only has 1 element the row would not be added. With this it checks if the last row\r\n // only has 1 element and then adds that row\r\n if(row[row.length-1]!=counterDate)\r\n {\r\n let finalRow = new Array();\r\n finalRow.push(counterDate);\r\n avilableHoursSelect.push(finalRow);\r\n }\r\n \r\n // no more hour values enable, exit the outer loop\r\n break;\r\n }\r\n // start the next hour loop\r\n availableDateTimesLocal = availableDateTimesLocal.filter(x => x >= counterDate)\r\n }\r\n return avilableHoursSelect;\r\n }\r\n\r\n\r\n public selectAppointmentDate(event : MatRadioChange)\r\n {\r\n this.newAppointmentStart = event.value;\r\n }\r\n\r\n public confirmInput(): void\r\n {\r\n this.currentStep = \"confirmInput\";\r\n }\r\n\r\n public getCurrentEmployeeName():string\r\n {\r\n if(this.target == this.targetOtherEmployee)\r\n {\r\n let employee = this.allPublicEmployees.find(e => e.id == this.targetId);\r\n return employee?.firstName + \" \" + employee?.lastName;\r\n }\r\n else\r\n {\r\n return \"EMPLOYEE.ANY\";\r\n }\r\n }\r\n\r\n public async shift():Promise\r\n {\r\n let dto: ShiftAppointmentDto = {\r\n appointmentId: this.appointment.id,\r\n newStartDate: moment(this.newAppointmentStart).format(\"YYYY-MM-DDTHH:mm\"),\r\n shiftTarget: this.target,\r\n targetId: this.targetId\r\n };\r\n try\r\n {\r\n this.isLoading = true;\r\n await this.shiftAppointmentService.shiftAppointment(dto).catch(e => console.error(\"Error shifting appointment\", e));\r\n \r\n }\r\n catch(error)\r\n {\r\n this.isLoading = false;\r\n console.error(error);\r\n return;\r\n }\r\n\r\n this.currentStep = \"appointmentShifted\"\r\n this.isLoading = false;\r\n }\r\n\r\n ngOnDestroy(): void\r\n {\r\n this.subscriptions.forEach(s => s.unsubscribe());\r\n }\r\n\r\n}\r\n","

{{'SHIFT_APPOINTMENT.TITLE' | translate}}

\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n

{{'SHIFT_APPOINTMENT.TO_CLOSE_TO_NOW' | translate}}

\r\n
\r\n \r\n {{'SHIFT_APPOINTMENT.CONTROL_CODE_INPUT' | translate}}\r\n \r\n {{'MESSAGES.EMTPY_DELETE_CODE' |\r\n translate}}\r\n \r\n \r\n {{'CONTACT_FORM.EMAIL' | translate}}\r\n \r\n {{'SHIFT_APPOINTMENT.VALIDATION_EMAIL' |\r\n translate}}\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n {{'EMPLOYEE.LABEL' | translate}}\r\n \r\n \r\n search\r\n \r\n \r\n \r\n {{'EMPLOYEE.ANY' | translate}}\r\n \r\n \r\n {{employee.lastName}}, {{employee.firstName}}\r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n\r\n
\r\n\r\n

{{languageService.getFormatDateString('SHIFT_APPOINTMENT.PREVIOUS_APPOINTMENT_START' |\r\n translate,appointment.start)}}

\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n {{'APPOINTMENT_CALENDAR.DAY_HOUR_HEADER_TEXT' | translate |\r\n userSettings:timeSection.get('timeFrom').value:timeSection.get('timeTo').value}}\r\n \r\n \r\n \r\n \r\n\r\n \r\n {{availableDateTime | localdate:'ConfigTimeSettings'}}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n {{languageService.getFormatDateString('APPOINTMENT_CALENDAR.TEXT_SELECTED_VALUE' |\r\n translate,selectedDateWithTime)}}\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n

{{'SHIFT_APPOINTMENT.CONFIRMATION.PREVIOUS.START' | translate}}:
{{languageService.convertDate(appointment.start)}} {{languageService.convertTime(appointment.start)}}

\r\n

{{'SHIFT_APPOINTMENT.CONFIRMATION.PREVIOUS.EMPLOYEE' | translate}}:
{{appointment.employeeFirstName}} {{appointment.employeeLastName}}

\r\n
\r\n
\r\n

\r\n \r\n arrow_right_alt\r\n \r\n

\r\n\r\n

\r\n
\r\n \r\n arrow_right_alt\r\n \r\n

\r\n
\r\n \r\n
\r\n

{{'SHIFT_APPOINTMENT.CONFIRMATION.CURRENT.START' | translate}}:
{{languageService.convertDate(newAppointmentStart)}} {{languageService.convertTime(newAppointmentStart)}}

\r\n

{{'SHIFT_APPOINTMENT.CONFIRMATION.CURRENT.EMPLOYEE' | translate}}:
{{getCurrentEmployeeName() | translate}}

\r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n

{{'SHIFT_APPOINTMENT.SHIFTED' | translate}}

\r\n
\r\n\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { lastValueFrom, Observable } from \"rxjs\";\r\nimport { AppointmentDetailDto } from \"src/app/shared/model/appointment.model\";\r\nimport { ICalendarDay } from \"src/app/shared/model/calendarday\";\r\nimport { IPublicEmployee } from \"src/app/shared/model/public-employee\";\r\nimport { ITimeSpan } from \"src/app/shared/model/timespan\";\r\nimport { ConfigSettingsService } from \"src/app/shared/services/config-settings.service\";\r\nimport { ShiftAppointmentDto } from \"./ShiftAppointment.model\";\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class ShiftAppointmentService\r\n{\r\n\r\n private baseURL : string;\r\n constructor\r\n (\r\n private httpClient : HttpClient,\r\n private configSettingsService: ConfigSettingsService,\r\n )\r\n {\r\n this.baseURL = configSettingsService.configSettings.apiUrl;\r\n }\r\n \r\n // Returns the Appointment where the ShiftAppointmentCode and Email match.\r\n public getAppointment(code: string, email: string): Observable\r\n {\r\n return this.httpClient.post(this.baseURL + \"/api/appointment/shift/get-appointment-details\", {code: code, email: email});\r\n }\r\n\r\n public async getPossibleDays(appointmentId: string, target: number, targetId: string): Promise>\r\n {\r\n return await lastValueFrom(this.httpClient.get>(this.baseURL + \"/api/appointment/shift/get-days/\" + appointmentId + \"/\" + target + \"/\" + targetId));\r\n }\r\n\r\n public async getPossibleTimespans(appointmentId: string, target: number, targetId: string, selectedDate: string): Promise>\r\n {\r\n // appointment/shift/get-timespans/{appointmentId}/{target}/{targetId}/{selectedDate}\r\n return await lastValueFrom(this.httpClient.get>(this.baseURL + \"/api/appointment/shift/get-timespans/\" + appointmentId + \"/\" + target + \"/\" + targetId + \"/\" + selectedDate));\r\n }\r\n\r\n public getPublicEmployees(appointmentId: string): Observable>\r\n {\r\n return this.httpClient.get(this.baseURL + \"/api/public-employees/\" + appointmentId);\r\n }\r\n\r\n public async shiftAppointment(dto: ShiftAppointmentDto): Promise\r\n {\r\n return await lastValueFrom(this.httpClient.post(this.baseURL + \"/api/appointment/shift\", dto));\r\n }\r\n}","import { Component, OnInit, LOCALE_ID, Output, EventEmitter, ViewChild, ElementRef, ViewChildren, OnDestroy, ViewContainerRef, TemplateRef } from '@angular/core';\r\nimport { SessionService } from 'src/app/shared/services/session.service';\r\nimport { MatCalendarBody, MatCalendarCell, MatCalendarCellCssClasses, MatCalendar } from '@angular/material/datepicker';\r\nimport { CalendarService } from 'src/app/shared/services/calendar.service';\r\nimport { ILocation } from '../../shared/model/location';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { LocationService } from 'src/app/shared/services/location.service';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators, NgModel, UntypedFormArray, AbstractControl } from '@angular/forms';\r\nimport { FormControl } from '@angular/forms';\r\nimport { LocationComponent } from '../location/location.component';\r\nimport { StepperComponent } from 'src/app/shared/stepper/stepper.component';\r\nimport { Observable, Subscription, Subject } from 'rxjs';\r\nimport { UserConcernService } from 'src/app/shared/services/userconcern.service';\r\nimport { IUserConcern } from 'src/app/shared/model/userconcern';\r\nimport { ICalendarDay } from 'src/app/shared/model/calendarday';\r\nimport { MessageService } from 'src/app/shared/services/messages.service';\r\nimport { ITimeSpan } from 'src/app/shared/model/timespan';\r\nimport { CustomerService } from 'src/app/shared/services/customer.service';\r\nimport { ServerSettingService } from 'src/app/shared/services/server-setting.service';\r\nimport { ServerSettings } from 'src/app/shared/config/server-settings';\r\nimport { formatDate } from '@angular/common';\r\nimport * as moment from 'moment/moment';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { LanguageService } from 'src/app/shared/services/language.service';\r\nimport { ServerSettingsService } from 'src/app/shared/services/server-settings.service';\r\nimport { IPublicEmployee } from 'src/app/shared/model/public-employee';\r\nimport { GlobalSettings } from 'src/app/shared/config/globalsettings';\r\n\r\n\r\nconst MIN: number = 60000;\r\nconst HOUR: number = 3600000;\r\n\r\n@Component({\r\n selector: 'app-appointmentcalendar',\r\n templateUrl: './appointmentcalendar.component.html',\r\n styleUrls: ['./appointmentcalendar.component.scss']\r\n})\r\n\r\nexport class AppointmentcalendarComponent implements OnInit, OnDestroy\r\n{\r\n\r\n // ---------- general ---------------\r\n private subscriptions: Subscription[] = [];\r\n private isReadOnly: boolean;\r\n private serverSettings: ServerSettings;\r\n private earliestPossibleStartDate: Date;\r\n private currentServerDate: Date;\r\n public form: UntypedFormGroup;\r\n\r\n private selectedLocation: ILocation;\r\n\r\n\r\n daySpans: ITimeSpan[] = [];\r\n\r\n datesToHighlight: Array = [];\r\n\r\n\r\n selectedDay: number;\r\n selectedDate: Date;\r\n chooseAvailabeDateVisible: boolean;\r\n\r\n APPOINTMENT_CALENDAR_DAY_HOUR_HEADER_TEXT: string;\r\n\r\n\r\n // two dimension array\r\n // bug for MAC Safari\r\n avilableHoursSelect: Array>;\r\n EarliestDateNumberDev: number;\r\n\r\n devSpans: ITimeSpan[];\r\n serverDateNowString: string;\r\n\r\n private employee: IPublicEmployee;\r\n\r\n\r\n _availableDateTimes: Date[] = [];\r\n get availableDateTimes(): Date[] { return this._availableDateTimes; }\r\n set availableDateTimes(d: Date[])\r\n {\r\n // moeglicherweise kann man das hier neu initialisieren.\r\n this._availableDateTimes = d;\r\n }\r\n private userconcerns: IUserConcern[];\r\n\r\n selectedDateWithTime: Date;\r\n\r\n @ViewChild(\"outlet\", { read: ViewContainerRef, static: true }) outletRef: ViewContainerRef;\r\n @ViewChild(\"calendar\", { read: TemplateRef, static: true }) calendarRef: TemplateRef;\r\n\r\n\r\n constructor(\r\n private calendarService: CalendarService,\r\n private locationService: LocationService,\r\n private formBuilder: UntypedFormBuilder,\r\n private userConcernService: UserConcernService,\r\n private messageService: MessageService,\r\n private customerService: CustomerService,\r\n public serverSettingService: ServerSettingService,\r\n private translate: TranslateService,\r\n public languageService: LanguageService,\r\n private serverSettingsService: ServerSettingsService,\r\n public title: Title,\r\n )\r\n {\r\n this.subscriptions.push(\r\n this.translate.get(['APPLICATION_TITLE', 'MENU.BOOK_APPOINTMENT', 'APPOINTMENT_CALENDAR.DAY_HOUR_HEADER_TEXT']).subscribe((translation: [string]) =>\r\n {\r\n this.APPOINTMENT_CALENDAR_DAY_HOUR_HEADER_TEXT = translation['APPOINTMENT_CALENDAR.DAY_HOUR_HEADER_TEXT'];\r\n title.setTitle(translation['APPLICATION_TITLE'] + \" > \" + translation['MENU.BOOK_APPOINTMENT']);\r\n })\r\n );\r\n\r\n this.subscriptions.push(this.serverSettingsService.getServerDate().subscribe(date =>\r\n {\r\n this.currentServerDate = date.dateTimeNow;\r\n this.serverDateNowString = date.serverTime;\r\n }));\r\n\r\n }\r\n\r\n\r\n ngOnInit()\r\n {\r\n // TER-571\r\n this.isReadOnly = false;\r\n\r\n this.form = this.formBuilder.group({\r\n 'selectedDateWithTime': [null, Validators.required],\r\n timeSectionsArray: this.formBuilder.array([])\r\n });\r\n this.chooseAvailabeDateVisible = false;\r\n\r\n this.subscriptions.push(\r\n this.serverSettingService.getServerVariables().subscribe((serverSettings: ServerSettings) =>\r\n {\r\n this.serverSettings = serverSettings;\r\n }\r\n )\r\n );\r\n\r\n this.subscriptions.push(\r\n this.locationService.selectedLocationChanges$.subscribe(selectedLocation => \r\n {\r\n this.getDayOverviewCalendarData(selectedLocation)\r\n }\r\n )\r\n );\r\n\r\n this.subscriptions.push(\r\n this.customerService.notifyFormSent.subscribe(customerFormSent =>\r\n {\r\n this.setReadonlyForm(customerFormSent)\r\n }\r\n )\r\n );\r\n\r\n }\r\n\r\n private setReadonlyForm(isSent: boolean): void\r\n {\r\n if (isSent)\r\n {\r\n this.form.disable();\r\n this.isReadOnly = true;\r\n }\r\n else\r\n {\r\n this.form.enable();\r\n this.isReadOnly = false;\r\n }\r\n };\r\n\r\n\r\n // methods renders the calendar component againg\r\n private rerender(): void\r\n {\r\n if (!this.isReadOnly)\r\n {\r\n this.outletRef.clear();\r\n this.outletRef.createEmbeddedView(this.calendarRef);\r\n }\r\n }\r\n\r\n // calls the service for the calendar days and sets the highlight date values\r\n getDayOverviewCalendarData(location: any)\r\n {\r\n\r\n if (!this.isReadOnly)\r\n {\r\n this.reconfigHighligtDates([]);\r\n this.rerender();\r\n }\r\n\r\n this.chooseAvailabeDateVisible = false;\r\n\r\n this.selectedLocation = location;\r\n\r\n if (this.selectedLocation !== null)\r\n {\r\n\r\n this.userconcerns = this.userConcernService.getUserConcerns();\r\n this.employee = this.userConcernService.getEmployee();\r\n\r\n this.subscriptions.push(this.calendarService.getLocationCalendarDays(this.selectedLocation.id.toString(), this.userconcerns, this.employee, this.currentServerDate)\r\n .subscribe(dates =>\r\n {\r\n this.reconfigHighligtDates(dates);\r\n\r\n if (!this.isReadOnly)\r\n {\r\n this.rerender();\r\n }\r\n }\r\n ));\r\n }\r\n\r\n }\r\n\r\n private reconfigHighligtDates(calenderDays: ICalendarDay[]): void\r\n {\r\n\r\n calenderDays.forEach(function (day)\r\n {\r\n let help = moment(day.day, \"YYYY-MM-DDThh:mm\");\r\n day.dayDate = help.toDate();\r\n day.dayNumber = day.dayDate.setHours(0, 0, 0, 0); // only interested in start of the day of current date\r\n });\r\n if (!this.earliestPossibleStartDate)\r\n {\r\n console.log(\"earliestPossibleStartDate null - \", this.earliestPossibleStartDate);\r\n this.earliestPossibleStartDate = this.calendarService.getStartDate(this.currentServerDate);\r\n }\r\n\r\n\r\n // remove all days, that lie in the past\r\n calenderDays = calenderDays.filter(x => x.dayDate >= new Date(new Date(this.earliestPossibleStartDate).setHours(0, 0, 0, 0)));\r\n this.datesToHighlight = [];\r\n calenderDays.forEach((calDay: ICalendarDay) =>\r\n {\r\n this.datesToHighlight.push(calDay.dayNumber);\r\n })\r\n\r\n if (this.datesToHighlight.length > 0)\r\n {\r\n this.notifyCalendarDay(this.datesToHighlight[0]);\r\n }\r\n\r\n }\r\n\r\n\r\n // since we have only a configuration values of hours for the earliest time\r\n // we get a value in the middle of the day in the future calculated from current date\r\n // e.g for 24 hours configuration we get exactly suggestion for 24 hours later dependent on the current time\r\n\r\n private setModifiedStartDay(thisSpans: ITimeSpan[])\r\n {\r\n\r\n // 1 modification: check configuration values in hours for first possible booking \r\n // step 1.1: filter out values where the enddate is earlier as the config value. \r\n\r\n let startHours = Math.floor(this.serverSettings.earliestAppointmentStartInHours);\r\n\r\n let momentDate = moment(this.serverDateNowString, \"YYYY-MM-DDThh:mm\");\r\n let serverDateHelper = momentDate.toDate();\r\n //let newDate = new Date();\r\n let newDate = serverDateHelper;\r\n\r\n //this.serverDateNowString \r\n\r\n\r\n\r\n\r\n\r\n let EarliestDateNumber = newDate.setHours(newDate.getHours() + startHours);\r\n this.EarliestDateNumberDev = EarliestDateNumber;\r\n\r\n thisSpans.filter(x => x.endTimeNumber > EarliestDateNumber)\r\n\r\n // step 1.2: modify the startdate of all, \r\n // where the startdate is earlier then the config value\r\n thisSpans.forEach(function (e)\r\n {\r\n //let date = new Date(e.startTimeNumber);\r\n if (e.startTimeNumber <= EarliestDateNumber)\r\n {\r\n\r\n e.startTimeNumber = EarliestDateNumber;\r\n e.startTimeDate = new Date(EarliestDateNumber);\r\n }\r\n\r\n });\r\n\r\n //to IPAD:\r\n // die ueberschrift weicht 4 Stunden ab nach vorne\r\n\r\n // die radioboxen weichen 2 Stunden ab nach vorne\r\n\r\n // => statt 7:00 - 8:00\r\n // und vier eintraeg 7:15\r\n\r\n // => 11:00 - 12:00 Uhr\r\n // und eintrege 9:15\r\n\r\n\r\n // 2 modifcation\r\n // check if rounded values should be displayed for the start date.\r\n\r\n if (this.serverSettings.appointmentRoundStartMinutes)\r\n {\r\n\r\n let minuteSpan = this.serverSettings.appointmentStartTimeSteps;\r\n thisSpans.forEach(function (e)\r\n {\r\n // get a valid date from the number value \r\n let date = new Date(e.startTimeNumber);\r\n // start minutes value of the dayspan\r\n let minutes = date.getMinutes();\r\n for (let minutesCounter = minutes; minutesCounter <= (minutes + minuteSpan); minutesCounter = minutesCounter + 1)\r\n {\r\n let helper = minutesCounter / minuteSpan;\r\n let helper2 = Math.round(helper);\r\n if (helper === helper2)\r\n {\r\n //wir haben den startzeitpunkt der minuten ermittelt.\r\n // date\r\n var x = date.setMinutes(0);\r\n var y = new Date(x);\r\n var z = y.setMinutes(minutesCounter);\r\n e.startTimeNumber = z;\r\n e.startTimeDate = new Date(z);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n //});\r\n\r\n\r\n //this.scrollTo(\"timeInputScrollTo\");\r\n }\r\n\r\n\r\n calculateDayDisplay(selectedDate: number)\r\n {\r\n\r\n //currently the appointmentStartTimeSteps is used for start and step duration.\r\n\r\n\r\n let timeStep = this.serverSettings.appointmentStartTimeSteps; // will be defined by configuration.\r\n this.chooseAvailabeDateVisible = true;\r\n //this.scrollTo(\"timeInputScrollTo\");\r\n\r\n //convert the number into the date format.\r\n let thisDate = new Date(selectedDate);\r\n\r\n //this.todayStartDate = new Date(selectedDate);\r\n // control value for the selected day\r\n\r\n let thisSpans = this.daySpans.filter(\r\n x => x.startTimeDate.getDay() === thisDate.getDay()\r\n && x.startTimeDate.getMonth() === thisDate.getMonth()\r\n && x.startTimeDate.getFullYear() === thisDate.getFullYear()\r\n );\r\n\r\n // prepares our this.daySpans for display \r\n this.setModifiedStartDay(thisSpans);\r\n\r\n\r\n\r\n let availableDateTimesLocal: Date[] = [];\r\n thisSpans.forEach(function (e)\r\n {\r\n for (let suggestedTime = e.startTimeNumber; suggestedTime <= e.endTimeNumber; suggestedTime = suggestedTime + (timeStep * MIN))\r\n {\r\n availableDateTimesLocal.push(new Date(suggestedTime));\r\n }\r\n });\r\n this.devSpans = thisSpans;\r\n\r\n // global variable not available in the inner scope\r\n this.availableDateTimes = availableDateTimesLocal;\r\n\r\n this.initTimeSections();\r\n\r\n }\r\n\r\n\r\n // pushes one or more spans into a date array\r\n // required input: daySpans array and time steps \r\n setAvailableDateTimeLocal(daySpans: ITimeSpan[], timeStep: number): Date[]\r\n {\r\n\r\n var availableDateTimesLocal: Date[] = [];\r\n\r\n // dayspans can be one or more values.\r\n daySpans.forEach(function (e)\r\n {\r\n for (let suggestedTime = e.startTimeNumber; suggestedTime <= e.endTimeNumber; suggestedTime = suggestedTime + (timeStep * MIN))\r\n {\r\n //this.availableHourSteps.push(new Date(suggestedTime));\r\n availableDateTimesLocal.push(new Date(suggestedTime));\r\n }\r\n });\r\n\r\n return availableDateTimesLocal;\r\n\r\n }\r\n\r\n // return a 2D array, first elment index can be used as counter with value: array of dates of 1 hour\r\n getIndexHourDay2DArray(availableDateTimesLocal: Date[]): Array>\r\n {\r\n\r\n if (GlobalSettings.isEmpty(availableDateTimesLocal) || availableDateTimesLocal.length == 0)\r\n return new Array>();\r\n // get the first value. it is a complete date format.\r\n let start = availableDateTimesLocal[0];\r\n\r\n // controls display of the first hour step.\r\n\r\n // hh:MM A\r\n\r\n var startHours = start.getHours()\r\n let avilableHoursSelect = new Array>();\r\n var counterDate: Date;\r\n\r\n // max possible step for one day is 23 - 24 Uhr\r\n for (let i = 0; i < 24; i++)\r\n {\r\n\r\n var row: Date[];\r\n\r\n row = new Array();\r\n\r\n for (let entry of availableDateTimesLocal)\r\n {\r\n\r\n counterDate = entry;\r\n\r\n if (entry.getHours() > startHours)\r\n {\r\n // time step not in the same hour. break the inner loop and go to next hour.\r\n startHours = entry.getHours()\r\n break;\r\n }\r\n\r\n // push the time entry to the row hour element\r\n row.push(entry);\r\n\r\n }\r\n\r\n // at the 2 dimension array hour element\r\n avilableHoursSelect.push(row);\r\n\r\n // check if more hours values are available \r\n if (availableDateTimesLocal.findIndex(x => x > counterDate) === -1)\r\n {\r\n // if the last row only has 1 element the row would not be added. With this it checks if the last row\r\n // only has 1 element and then adds that row\r\n if (row[row.length - 1] != counterDate)\r\n {\r\n let finalRow = new Array();\r\n finalRow.push(counterDate);\r\n avilableHoursSelect.push(finalRow);\r\n }\r\n\r\n // no more hour values enable, exit the outer loop\r\n break;\r\n }\r\n\r\n // start the next hour loop\r\n availableDateTimesLocal = availableDateTimesLocal.filter(x => x >= counterDate)\r\n\r\n }\r\n\r\n return avilableHoursSelect;\r\n\r\n\r\n }\r\n\r\n initTimeSections()\r\n {\r\n var availableDateTimesLocal = this.setAvailableDateTimeLocal(this.daySpans, this.serverSettings.appointmentStartTimeSteps);\r\n let avilableHoursSelect = new Array>();\r\n\r\n avilableHoursSelect = this.getIndexHourDay2DArray(availableDateTimesLocal);\r\n let timeSections = this.form.get('timeSectionsArray') as UntypedFormArray;\r\n\r\n // delete old elements from previous selected day.\r\n let count = timeSections.controls.length;\r\n for (let i = 0; i < count; i++)\r\n {\r\n timeSections.removeAt(0);\r\n }\r\n\r\n for (let i = 0; i < avilableHoursSelect.length; i++)\r\n {\r\n // find full hour which is before the first entry for header display\r\n let timeFrom = avilableHoursSelect[i][0];\r\n\r\n var timeFromHours = timeFrom.getHours();\r\n\r\n // time from is the earliest possible time\r\n var momentDate = moment(timeFrom, \"YYYY-MM-DDThh:mm\");\r\n\r\n // todo: check if this also works\r\n var momentStartDay = momentDate.format(\"YYYY-MM-DD\" + \"T00:00:00\");\r\n var momentStartDay = momentDate.format(\"YYYY-MM-DD\" + \" 00:00:00\");\r\n\r\n //this.momentStartDayDev = momentDate.format(\"YYYY-MM-DD\" + \" 00:00:00\");\r\n //this.momentStartDayDev = this.todayStartDate\r\n //error for IOS\r\n // soll im prinzip den beginn des Tages angeben\r\n // nicht IOS Systeme gehen zwei stunden nach vorne\r\n\r\n let help = moment(momentStartDay, \"YYYY-MM-DDThh:mm\");\r\n var helpDate = help.toDate();\r\n\r\n timeFrom = new Date(helpDate.setHours(helpDate.getHours() + timeFromHours));\r\n\r\n let timeTo = new Date(timeFrom);\r\n timeTo = new Date(timeTo.setHours(timeTo.getHours() + 1));\r\n\r\n let timeFromString = this.languageService.convertTime(timeFrom);\r\n let timeToString = this.languageService.convertTime(timeTo);\r\n\r\n let hourHeader = this.APPOINTMENT_CALENDAR_DAY_HOUR_HEADER_TEXT.replace(\"{{StartHour}}\", timeFromString).replace(\"{{EndHour}}\", timeToString);\r\n\r\n timeSections.push(this.formBuilder.group({\r\n radioSection: false,\r\n hourHeader: hourHeader,\r\n timeFrom: timeFrom,\r\n timeTo: timeTo,\r\n }));\r\n }\r\n\r\n // Make sure the first possible Appointment-Date is selected right from the start\r\n this.avilableHoursSelect = avilableHoursSelect;\r\n console.log(this.earliestPossibleStartDate, );\r\n this.selectedDateWithTime = this.avilableHoursSelect[0][0];// this.earliestPossibleStartDate;\r\n this.calendarService.selectedDate = this.selectedDateWithTime;\r\n }\r\n\r\n\r\n // call back event from the calendar component\r\n // choice for selecting the date.\r\n notifyCalendarDay(event): void\r\n {\r\n console.log(\"notifyCalendarDay - \", event);\r\n // this disables the weiter button\r\n this.selectedDateWithTime = null;\r\n // this will be null if there are no appointments for the day especially when the user clicks on a disabled date\r\n if (event == null)\r\n {\r\n this.selectedDate = null;\r\n this.chooseAvailabeDateVisible = false;\r\n\r\n return;\r\n }\r\n\r\n this.selectedDay = event;\r\n this.selectedDate = new Date(this.selectedDay);\r\n\r\n this.subscriptions.push(this.calendarService.getLocationCalendarDay(this.selectedLocation.id.toString(), this.selectedDay, this.employee, this.userconcerns)\r\n .subscribe(dates =>\r\n {\r\n\r\n this.daySpans = dates.timespans;\r\n this.calculateDayDisplay(this.selectedDay)\r\n }\r\n ));\r\n }\r\n\r\n // selectes the final date for the services \r\n //todo: use other form.\r\n SelectAppointmentDate(event: AbstractControl): void\r\n {\r\n console.log(\"selectAppointmentDate - event - \", event);\r\n let date = new Date(event.value);\r\n this.selectedDateWithTime = date;\r\n // let date = new Date(this.selectedDateWithTime);\r\n this.calendarService.selectedDate = date;\r\n console.log(\"selectAppointmentDate - \", date);\r\n }\r\n\r\n ngOnDestroy(): void\r\n {\r\n this.subscriptions.forEach(s => s.unsubscribe());\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n

{{'LOCATION.NOT_AVAILABLE_TEXT' | translate}}

\r\n
\r\n

\r\n {{languageService.getFormatDateString('APPOINTMENT_CALENDAR.TEXT_TIME_SELECT_OPTION' |\r\n translate,selectedDate)}}\r\n

\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {{'APPOINTMENT_CALENDAR.DAY_HOUR_HEADER_TEXT' | translate |\r\n userSettings:timeSection.get('timeFrom').value:timeSection.get('timeTo').value}}\r\n \r\n \r\n \r\n \r\n\r\n \r\n {{availableDateTime | localdate:'ConfigTimeSettings'}}\r\n \r\n \r\n \r\n
\r\n
\r\n

{{'LOCATION.NOT_AVAILABLE_TEXT' | translate}}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {{languageService.getFormatDateString('APPOINTMENT_CALENDAR.TEXT_SELECTED_VALUE' |\r\n translate,selectedDateWithTime)}}\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n","import { Component, OnInit, Input, Output, EventEmitter, OnChanges, ViewChild, Renderer2, APP_INITIALIZER, OnDestroy } from '@angular/core';\r\nimport { MAT_MOMENT_DATE_FORMATS, MomentDateAdapter } from '@angular/material-moment-adapter';\r\nimport { MatCalendar, MatCalendarCellCssClasses, MatCalendarHeader } from '@angular/material/datepicker';\r\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { MessageService } from 'src/app/shared/services/messages.service';\r\nimport { CalendarService } from 'src/app/shared/services/calendar.service';\r\nimport { Moment } from 'moment';\r\nimport * as moment from 'moment/moment';\r\nimport { GlobalSettings } from 'src/app/shared/config/globalsettings';\r\nimport { ServerSettings } from 'src/app/shared/config/server-settings';\r\nimport { ServerSettingService } from 'src/app/shared/services/server-setting.service';\r\nimport { UntypedFormGroup, UntypedFormBuilder } from '@angular/forms';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ConfigSettingsService } from 'src/app/shared/services/config-settings.service';\r\nimport { initializeData } from 'src/app/app.module';\r\nimport { LanguageService } from 'src/app/shared/services/language.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { ServerSettingsService } from 'src/app/shared/services/server-settings.service';\r\n\r\n@Component({\r\n selector: 'app-calendar',\r\n templateUrl: './calendar.component.html',\r\n styleUrls: ['./calendar.component.scss'],\r\n providers: [\r\n { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },\r\n { provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS },\r\n ],\r\n\r\n\r\n})\r\n\r\n\r\nexport class CalendarComponent implements OnInit, OnDestroy\r\n{\r\n private subscriptions: Subscription[] = [];\r\n public isLoading = true;\r\n private isDisabled: boolean = true;\r\n public frmCalendar: UntypedFormGroup;\r\n\r\n\r\n public selectedDate: Moment;\r\n public maxDate: Date;\r\n public minDate: Date;\r\n public selectedMonth: Date;\r\n public serverSettingsMaxDisplyedDays: number;\r\n\r\n\r\n // expected: date as number format with time 0:00\r\n @Input() datesToHiglightList: Array;\r\n\r\n // the calendarday will be formated as number and with time 0:00\r\n private selectedCalendarDay: number;\r\n @Output() notifyCalendarDay: EventEmitter = new EventEmitter();\r\n\r\n // @ViewChild('calendar') calendar: MatCalendar;\r\n @ViewChild(MatCalendar, { static: false }) calendar: MatCalendar;\r\n\r\n constructor(\r\n private messageService: MessageService,\r\n private calendarService: CalendarService,\r\n private renderer: Renderer2,\r\n private globalSettingService: ServerSettingService,\r\n private formBuilder: UntypedFormBuilder,\r\n private translate: TranslateService,\r\n private dateadapter: DateAdapter,\r\n private languageService: LanguageService,\r\n private serverSettingsService: ServerSettingsService,\r\n )\r\n {\r\n }\r\n\r\n ngOnInit()\r\n {\r\n this.selectedMonth = new Date(Date.now());\r\n this.dateadapter.setLocale(this.languageService.currentLanguage.code);\r\n // subscribe on changes\r\n this.subscriptions.push(this.languageService.languageChangeSubject.subscribe(language =>\r\n {\r\n this.dateadapter.setLocale(language.code);\r\n }));\r\n\r\n this.frmCalendar = this.formBuilder.group({});\r\n\r\n this.setReadonlyForm(true);\r\n\r\n this.subscriptions.push(this.globalSettingService.getServerVariables().subscribe((serverSettings: ServerSettings) =>\r\n {\r\n\r\n this.subscriptions.push(this.serverSettingsService.getServerDate().subscribe(serverDate =>\r\n {\r\n\r\n // always the best option to work with moment vor conversion\r\n let momentDate = moment(serverDate.serverTime, \"YYYY-MM-DDThh:mm\");\r\n let serverDateHelper = momentDate.toDate();\r\n\r\n\r\n this.serverSettingsMaxDisplyedDays = serverSettings.maxCalculatedDays;\r\n\r\n // the mindate and max date from server date and config values.\r\n this.minDate = new Date(serverDateHelper.setHours(serverDateHelper.getHours() + serverSettings.earliestAppointmentStartInHours));\r\n this.maxDate = new Date(serverDateHelper.setDate(serverDateHelper.getDate() + serverSettings.maxCalculatedDays));\r\n\r\n if (this.datesToHiglightList.length > 0)\r\n {\r\n this.selectedDate = moment(this.datesToHiglightList[0]);\r\n this.onSelect(this.datesToHiglightList[0]);\r\n this.selectedMonth = this.selectedDate.toDate();\r\n }\r\n this.isLoading = false;\r\n }));\r\n }));\r\n }\r\n\r\n // render the selected and not selected styles.\r\n dateClass()\r\n {\r\n return (date: Date): MatCalendarCellCssClasses =>\r\n {\r\n const highlightDate = this.datesToHiglightList\r\n .map(dateEntry => moment(new Date(dateEntry)))\r\n .some(d => d.isSame(moment(date)));\r\n return highlightDate ? 'dayEntry' : 'dayNoEntry';\r\n };\r\n }\r\n\r\n setReadonlyForm(isSent: boolean)\r\n {\r\n this.frmCalendar.disable()\r\n }\r\n\r\n //day of calendar is selected, no changed from number to moment object.\r\n onSelect(event: any)\r\n {\r\n // all dates are start of day dates\r\n let findIndex = this.datesToHiglightList.findIndex(x => x == event);\r\n\r\n if ((findIndex > -1))\r\n {\r\n //notifyer in number format\r\n this.selectedCalendarDay = new Date(event).setHours(0, 0, 0, 0);\r\n this.notifyCalendarDay.emit(this.selectedCalendarDay);\r\n } \r\n else\r\n {\r\n this.notifyCalendarDay.emit(null);\r\n }\r\n }\r\n\r\n ngOnDestroy()\r\n {\r\n this.subscriptions.forEach(s => s.unsubscribe());\r\n }\r\n\r\n}\r\n","\r\n\r\n \r\n \r\n \r\n
\r\n

{{'LOADING' | translate}}

\r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n
","import { Component, OnInit, OnDestroy } from \"@angular/core\";\r\nimport { GlobalSettings } from \"src/app/shared/config/globalsettings\";\r\nimport {\r\n UntypedFormGroup,\r\n Validators,\r\n UntypedFormBuilder,\r\n} from \"@angular/forms\";\r\nimport { Observable, of, Subscription } from \"rxjs\";\r\nimport { MessageService } from \"src/app/shared/services/messages.service\";\r\nimport { Router, ActivatedRoute } from \"@angular/router\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { CustomerService } from \"src/app/shared/services/customer.service\";\r\nimport { Title } from \"@angular/platform-browser\";\r\nimport { LanguageService } from \"src/app/shared/services/language.service\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport { ConfirmationDialogComponent } from \"../confirmation-dialog/confirmation-dialog.component\";\r\n\r\n@Component({\r\n selector: \"app-cancel-appointment\",\r\n templateUrl: \"./cancel-appointment.component.html\",\r\n styleUrls: [\"./cancel-appointment.component.scss\"],\r\n})\r\nexport class CancelAppointmentComponent implements OnInit, OnDestroy {\r\n private classame = (this).constructor.name;\r\n\r\n public isLoading: boolean = false;\r\n\r\n private subscriptions: Subscription[] = [];\r\n translationTitleObject: any;\r\n globalSettings: GlobalSettings = new GlobalSettings();\r\n frmGroup: UntypedFormGroup;\r\n successMessage: string;\r\n //errorMessage: string;\r\n\r\n confirmError: boolean;\r\n controlCodeInput: string;\r\n showConfirmationForm: boolean;\r\n invalidValidation: boolean = false;\r\n //title:string;\r\n showTitleInStepper: boolean;\r\n showSelection = false;\r\n isInStep: boolean = false;\r\n enableForm: boolean = false;\r\n contactFormSuccesful: Observable;\r\n\r\n //selectedLocation: ILocation;\r\n code: string;\r\n lang: string;\r\n translationObject: any;\r\n //translationTimeObject: any;\r\n constructor(\r\n private formBuilder: UntypedFormBuilder,\r\n private messageService: MessageService,\r\n // private locationService: LocationService,\r\n private customerService: CustomerService,\r\n // private calendarService: CalendarService,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private translate: TranslateService,\r\n public dialog: MatDialog,\r\n\r\n public title: Title,\r\n private languageService: LanguageService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.confirmError = false;\r\n\r\n this.subscriptions.push(\r\n this.translate\r\n .get([\"APPLICATION_TITLE\", \"MENU.CANCEL_APPOINTMENT\"])\r\n .subscribe((translation: [string]) => {\r\n this.translationTitleObject = translation;\r\n this.title.setTitle(\r\n this.translationTitleObject[\"APPLICATION_TITLE\"] +\r\n \" > \" +\r\n this.translationTitleObject[\"MENU.CANCEL_APPOINTMENT\"]\r\n );\r\n })\r\n );\r\n\r\n this.showTitleInStepper = false;\r\n\r\n this.showConfirmationForm = true;\r\n this.frmGroup = this.formBuilder.group({\r\n controlCode: [null, Validators.required],\r\n });\r\n this.enableForm = this.frmGroup.valid;\r\n\r\n // check direct confirmation link.\r\n const paramCode = this.route.snapshot.paramMap.get(\"code\");\r\n if (paramCode) {\r\n this.code = paramCode;\r\n\r\n this.subscriptions.push(\r\n this.translate.get(\"CANCEL_APPOINTMENT.CONFIRM\").subscribe((msg) => {\r\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\r\n width: \"450px\",\r\n data: msg,\r\n });\r\n\r\n this.subscriptions.push(\r\n dialogRef.afterClosed().subscribe((result) => {\r\n this.frmGroup.controls[\"controlCode\"].setValue(this.code);\r\n this.frmGroup.controls[\"controlCode\"].markAsDirty();\r\n this.frmGroup.get(\"controlCode\").updateValueAndValidity();\r\n if (result) {\r\n this.subscriptions.push(\r\n this.appointment_delete_code(this.code).subscribe(\r\n (confirm) => {\r\n this.showConfirmationForm = !confirm;\r\n }\r\n )\r\n );\r\n }\r\n })\r\n );\r\n })\r\n );\r\n }\r\n\r\n // set the lang of the application if paramer is set.\r\n const paramLang = this.route.snapshot.paramMap.get(\"lang\");\r\n if (paramLang) {\r\n this.lang = paramLang;\r\n this.languageService.setLanguageFromCode(this.lang);\r\n this.translate.setDefaultLang(this.lang);\r\n }\r\n\r\n if (this.contactFormSuccesful) {\r\n this.showConfirmationForm = true;\r\n }\r\n\r\n this.frmGroup.get(\"controlCode\").clearValidators();\r\n this.frmGroup.get(\"controlCode\").setValidators(Validators.required);\r\n this.frmGroup.get(\"controlCode\").updateValueAndValidity();\r\n\r\n // delete the error message for changing input\r\n // and display the button if valid.\r\n this.subscriptions.push(\r\n this.frmGroup.get(\"controlCode\").valueChanges.subscribe(() => {\r\n //this.errorMessage = \"\",\r\n this.confirmError = false;\r\n // second condition because valid is still false for pasting text.\r\n this.enableForm =\r\n this.frmGroup.valid || this.frmGroup.get(\"controlCode\").dirty;\r\n })\r\n );\r\n }\r\n\r\n getRessourceText(val: string): string {\r\n this.translationObject = this.translate.get(val);\r\n if (this.translationObject.value !== undefined)\r\n return this.translationObject.value;\r\n\r\n return \"\";\r\n }\r\n\r\n //detection for automatic changes\r\n // get selectedDate(): Date {\r\n // return this.calendarService.selectedDate;\r\n // }\r\n\r\n getReplaceText(value: string): string {\r\n this.translationObject = this.translate.get(value);\r\n\r\n if (\r\n this.translationObject !== undefined &&\r\n this.translationObject.value !== undefined\r\n ) {\r\n // = this.globalSettings.confirmationSubmittedTextWithBookingInfo;\r\n\r\n let str = this.translationObject.value;\r\n return str;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n appointment_delete_code(code: string): Observable {\r\n if (code) {\r\n this.isLoading = true;\r\n this.subscriptions.push(\r\n this.customerService.deleteAppointmentCode(code).subscribe(\r\n (responseStatus) => {\r\n this.isLoading = false;\r\n this.invalidValidation = false;\r\n this.onCallbackSubmit(responseStatus.status);\r\n return of(true);\r\n },\r\n (error) => {\r\n this.isLoading = false;\r\n this.invalidValidation = true;\r\n this.onCallbackSubmit(error.status);\r\n return of(false);\r\n },\r\n () => {\r\n this.isLoading = false;\r\n this.invalidValidation = true;\r\n return of(false);\r\n }\r\n )\r\n );\r\n }\r\n\r\n return of(true);\r\n }\r\n\r\n // 3 different submits.\r\n // one directly from the form outsite the stepper and one callback from the stepper and one with url parameters.\r\n submit(): void {\r\n //disble button for second try. Will be enabled again after post back.\r\n this.enableForm = false;\r\n\r\n let controlCode = this.frmGroup.get(\"controlCode\").value;\r\n\r\n if (this.frmGroup.valid && this.frmGroup.dirty) {\r\n this.isLoading = true;\r\n this.subscriptions.push(\r\n this.customerService.deleteAppointmentCode(controlCode).subscribe(\r\n (responseStatus) => {\r\n this.isLoading = false;\r\n this.invalidValidation = false;\r\n this.enableForm = false;\r\n this.onCallbackSubmit(responseStatus.status);\r\n },\r\n (error) => {\r\n this.isLoading = false;\r\n this.invalidValidation = true;\r\n this.onCallbackSubmit(error.status);\r\n },\r\n () => {\r\n this.isLoading = false;\r\n this.invalidValidation = true;\r\n }\r\n )\r\n );\r\n }\r\n }\r\n onCallbackSubmit(status: number): void {\r\n switch (status) {\r\n case 200: {\r\n this.confirmError = false;\r\n this.showConfirmationForm = false;\r\n\r\n break;\r\n }\r\n case 404: {\r\n this.confirmError = true;\r\n this.showConfirmationForm = true;\r\n this.enableForm = true; //next try\r\n break;\r\n }\r\n\r\n case 500: {\r\n break;\r\n }\r\n default: {\r\n //this.errorMessage = \"Unbekannter Fehler.\";\r\n break;\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach((s) => s.unsubscribe());\r\n }\r\n}\r\n","
\r\n \r\n

{{'CANCEL_APPOINTMENT.TITLE' | translate}}

\r\n

{{'CANCEL_APPOINTMENT.CANCEL_COMPLETED_TITLE' |\r\n translate}}

\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n {{'CANCEL_APPOINTMENT.CONTROL_CODE_INPUT' | translate}}\r\n \r\n {{'MESSAGES.EMTPY_DELETE_CODE' |\r\n translate}}\r\n \r\n \r\n \r\n {{'CANCEL_APPOINTMENT.CODE_NOT_EXISTS' | translate}}\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
","\r\n//https://stackblitz.com/angular/kggokxmkobp?file=src%2Fapp%2Fhero-form%2Fhero-form.component.html\r\n\r\n\r\n// material form\r\n// https://stackblitz.com/edit/example-angular-material-reactive-form?file=app%2Fapp.component.css\r\n\r\n\r\n// https://www.c-sharpcorner.com/article/angular-material-design-components-with-reactive-form-part-2/\r\n\r\n\r\n// working with reactive forms:\r\n\r\n\r\nimport { Component, OnInit, EventEmitter, Output, OnDestroy } from '@angular/core';\r\n\r\nimport { ICustomer } from 'src/app/shared/model/customer';\r\nimport { UntypedFormBuilder, UntypedFormGroup, AbstractControl, Validators, UntypedFormControl, ValidatorFn, UntypedFormArray } from '@angular/forms';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { LocationService } from 'src/app/shared/services/location.service';\r\nimport { ILocation } from 'src/app/shared/model/location';\r\nimport { CalendarService } from 'src/app/shared/services/calendar.service';\r\nimport { MessageService } from 'src/app/shared/services/messages.service';\r\n// import { jsonpCallbackContext } from '@angular/common/http/src/module';\r\nimport { IContactData } from 'src/app/shared/model/contactdata';\r\nimport { IUserConcern } from 'src/app/shared/model/userconcern';\r\nimport { UserConcernService } from 'src/app/shared/services/userconcern.service';\r\nimport { CustomerService } from 'src/app/shared/services/customer.service';\r\nimport * as moment from 'moment/moment';\r\nimport { GlobalSettings } from 'src/app/shared/config/globalsettings';\r\nimport { ApiTranslationLoaderService } from 'src/app/shared/services/api-translation-loader.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n//import { AppValidators } from 'src/app/shared/validators/app-validators';\r\n\r\nimport { emailValidator } from 'src/app/shared/validators/app-validators';\r\nimport { ServerSettings } from 'src/app/shared/config/server-settings';\r\nimport { ServerSettingService } from 'src/app/shared/services/server-setting.service';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { RequirementBlueprintDto } from 'src/app/shared/model/requirement-blueprint-dto.model';\r\nimport { LanguageService } from 'src/app/shared/services/language.service';\r\nimport { CustomEnumValueDto } from 'src/app/shared/model/custom-enum-value-dto.model';\r\nimport { BookAppointmentDto } from 'src/app/shared/model/book-appointment-dto.model';\r\n// import { DebugRenderer2 } from '@angular/core/src/view/services';\r\n\r\n\r\n@Component({\r\n selector: 'app-concactform',\r\n templateUrl: './concactform.component.html',\r\n styleUrls: ['./concactform.component.scss']\r\n})\r\n\r\n\r\nexport class ConcactFormComponent implements OnInit, OnDestroy\r\n{\r\n\r\n public requirementBlueprints: RequirementBlueprintDto[] = [];\r\n private subscriptions: Subscription[] = [];\r\n\r\n private classame = (this).constructor.name;\r\n translationTitleObject: any;\r\n\r\n public errorObject: any;\r\n public errorMessage: string = \"\";\r\n\r\n formIsReadonly: boolean = false;\r\n\r\n public isLoading: boolean = false;\r\n\r\n globalSettings: GlobalSettings = new GlobalSettings();\r\n translationObject: any;\r\n serverSettings: ServerSettings;\r\n\r\n contactData: IContactData;\r\n\r\n\r\n frmContact: UntypedFormGroup;\r\n post: any = '';\r\n\r\n displayNumber = false;\r\n\r\n nextStepIsEnabled = false;\r\n formSuccessFullySent = false;\r\n formSubmitProcess = false\r\n // will be used from the stepper for chaning to the next step\r\n @Output() notifyContactFormSuccessfulySent: EventEmitter = new EventEmitter();\r\n\r\n /* for text resources */\r\n headerText: string;\r\n\r\n\r\n // automatic change detection.\r\n // if the value of the service will change\r\n // the property is beeing notifyed and also changed\r\n get selectedDate(): Date\r\n {\r\n return this.calendarService.selectedDate;\r\n }\r\n\r\n selectedLocation: ILocation;\r\n\r\n public useReCaptcha: boolean = false;\r\n public siteKey: string = \"\";\r\n public dataProtectionURL: string = \"\";\r\n\r\n constructor(\r\n private formBuilder: UntypedFormBuilder,\r\n private locationService: LocationService,\r\n private calendarService: CalendarService,\r\n private messageService: MessageService,\r\n private userConcernService: UserConcernService,\r\n private customerService: CustomerService,\r\n private translate: TranslateService,\r\n private globalSettingService: ServerSettingService,\r\n public title: Title,\r\n private languageService: LanguageService\r\n )\r\n {\r\n }\r\n\r\n\r\n checkCheckbox(c: AbstractControl)\r\n {\r\n return c.get('checkAGB').value;\r\n }\r\n\r\n ngOnInit()\r\n {\r\n \r\n this.createForm();\r\n this.calendarService.requirementsChangedEvent.subscribe((requirementBlueprints: RequirementBlueprintDto[]) =>\r\n {\r\n this.frmContact = this.formBuilder.group({\r\n 'requirementValues': this.formBuilder.array([]),\r\n 'checkAGB': [false, Validators.requiredTrue],\r\n 'recaptchaReactive': new UntypedFormControl(null)\r\n });\r\n this.requirementBlueprints = [...requirementBlueprints];\r\n this.requirementBlueprints = this.requirementBlueprints.sort((a: RequirementBlueprintDto, b: RequirementBlueprintDto) => a.sortNumber - b.sortNumber);\r\n const requirementValues = this.frmContact.get('requirementValues') as UntypedFormArray;\r\n\r\n this.requirementBlueprints.forEach(bp => \r\n {\r\n let newValue = this.formBuilder.group({\r\n \"blueprintId\": bp.blueprintId,\r\n \"type\": bp.type,\r\n \"value\": null\r\n });\r\n\r\n let validators: ValidatorFn[] = this.getValidatorsForRequirementBlueprint(bp);\r\n newValue.controls[\"value\"].setValidators(validators);\r\n newValue.controls[\"value\"].setValue(this.getDefaultValueForRequirementBlueprint(bp));\r\n requirementValues.push(newValue);\r\n });\r\n this.onChanges();\r\n });\r\n this.isLoading = false;\r\n this.subscriptions.push(this.locationService.selectedLocationChanges$.subscribe(\r\n selectedLocation => this.selectedLocation = selectedLocation\r\n ));\r\n\r\n this.subscriptions.push(this.globalSettingService.getServerVariables()\r\n .subscribe((serverSettings: ServerSettings) =>\r\n {\r\n this.serverSettings = serverSettings;\r\n\r\n if (!GlobalSettings.isEmpty(this.serverSettings))\r\n {\r\n\r\n this.displayNumber = this.serverSettings.useSMSService;\r\n this.useReCaptcha = this.serverSettings.useReCaptcha;\r\n this.siteKey = this.serverSettings.reCaptchaSiteKey;\r\n this.dataProtectionURL = this.serverSettings.dataProtectionURL;\r\n if (this.useReCaptcha)\r\n {\r\n this.frmContact.controls['recaptchaReactive'].setValidators(Validators.required);\r\n }\r\n }\r\n }\r\n ));\r\n\r\n this.subscriptions.push(this.customerService.notifyFormSent.subscribe(\r\n customerFormSent =>\r\n {\r\n this.setReadonlyForm(customerFormSent),\r\n this.formIsReadonly = true;\r\n }\r\n ));\r\n\r\n this.onChanges();\r\n }\r\n\r\n private getValidatorsForRequirementBlueprint(bp: RequirementBlueprintDto): ValidatorFn[]\r\n {\r\n let validators: ValidatorFn[] = [];\r\n if (bp.isRequiredOnline)\r\n {\r\n if(bp.type === 2)\r\n {\r\n validators.push(Validators.requiredTrue);\r\n }\r\n else\r\n {\r\n validators.push(Validators.required);\r\n }\r\n }\r\n\r\n // if (bp.isRequiredOnline)\r\n // validators.push(Validators.required);\r\n\r\n\r\n if (bp.useValidation)\r\n {\r\n switch (bp.type)\r\n {\r\n // SingleLineText\r\n case 0:\r\n let regexp = new RegExp(bp.regularExpression);\r\n let regularExpressionValidator: ValidatorFn = function regExValidator(control: AbstractControl): { [key: string]: boolean } | null \r\n {\r\n if (control.value && !regexp.test(control.value))\r\n {\r\n return { regExValidator: true };\r\n }\r\n }\r\n validators.push(regularExpressionValidator);\r\n break;\r\n\r\n // // MultiLineText\r\n // case 1:\r\n // break;\r\n // // Bool\r\n // case 2:\r\n // break;\r\n\r\n // Int\r\n case 3:\r\n let intValidator: ValidatorFn = function intValidatorFN(control: AbstractControl): { [key: string]: boolean } | null\r\n {\r\n if (control.value != null && control.value !== undefined)\r\n {\r\n try\r\n {\r\n let val = parseInt(control.value);\r\n if (val >= bp.minDoubleValue && val <= bp.maxDoubleValue)\r\n {\r\n return;\r\n }\r\n else\r\n {\r\n return { intValidator: true };\r\n }\r\n }\r\n catch\r\n {\r\n return { intValidator: true };\r\n }\r\n }\r\n }\r\n validators.push(intValidator);\r\n break;\r\n\r\n // Double\r\n case 4:\r\n let doubleValidator: ValidatorFn = function doubleValidatorFN(control: AbstractControl): { [key: string]: boolean } | null\r\n {\r\n if (control.value !== null && control.value !== undefined)\r\n {\r\n try\r\n {\r\n let val = parseFloat(control.value);\r\n\r\n if (val >= bp.minDoubleValue && val <= bp.maxDoubleValue)\r\n {\r\n return;\r\n }\r\n else\r\n {\r\n return { doubleValidator: true };\r\n }\r\n }\r\n catch\r\n {\r\n return { doubleValidator: true };\r\n }\r\n }\r\n }\r\n validators.push(doubleValidator);\r\n break;\r\n\r\n // Date\r\n case 5:\r\n let dateValidator: ValidatorFn = function dateValidatorFN(control: AbstractControl): { [key: string]: boolean } | null\r\n {\r\n if (control.value)\r\n {\r\n try\r\n {\r\n\r\n let val = new Date(control.value);\r\n\r\n if (val >= new Date(bp.minDate) && val <= new Date(bp.maxDate))\r\n {\r\n return;\r\n }\r\n else\r\n {\r\n return { dateValidator: true };\r\n }\r\n }\r\n catch\r\n {\r\n return { dateValidator: true };\r\n }\r\n }\r\n }\r\n validators.push(dateValidator);\r\n break;\r\n\r\n // // SingleSelect\r\n // case 6:\r\n // break;\r\n\r\n // MultiSelect\r\n case 7:\r\n let multiSelectValidator: ValidatorFn = function multiSelectValidatorFN(control: AbstractControl): { [key: string]: boolean } | null\r\n {\r\n if (control.value !== null && control.value !== undefined)\r\n {\r\n try\r\n {\r\n let val = control.value.length;\r\n\r\n if (val >= bp.minSelectedValues && val <= bp.maxSelectedValue)\r\n {\r\n return;\r\n }\r\n else\r\n {\r\n return { multiSelectValidator: true };\r\n }\r\n }\r\n catch\r\n {\r\n return { multiSelectValidator: true };\r\n }\r\n }\r\n }\r\n validators.push(multiSelectValidator);\r\n break;\r\n }\r\n }\r\n return validators;\r\n }\r\n\r\n private formatDate(date): string\r\n {\r\n const d = new Date(date);\r\n let month = '' + (d.getMonth() + 1);\r\n let day = '' + d.getDate();\r\n const year = d.getFullYear();\r\n if (month.length < 2) month = '0' + month;\r\n if (day.length < 2) day = '0' + day;\r\n return [year, month, day].join('-');\r\n }\r\n\r\n private getDefaultValueForRequirementBlueprint(bp: RequirementBlueprintDto): any\r\n {\r\n if (!bp.useDefaultValue)\r\n return null;\r\n\r\n switch (bp.type)\r\n {\r\n // SingleLineText\r\n case 0:\r\n return bp.defaultTextValue;\r\n break;\r\n\r\n // MultiLineText\r\n case 1:\r\n return bp.defaultTextValue;\r\n break;\r\n\r\n // Bool\r\n case 2:\r\n return bp.defaultBoolValue;\r\n break;\r\n\r\n // Int\r\n case 3:\r\n return bp.defaultDoubleValue;\r\n break;\r\n\r\n // Double\r\n case 4:\r\n return bp.defaultDoubleValue;\r\n break;\r\n\r\n // Date\r\n case 5:\r\n return this.formatDate(new Date(bp.defaultDateValue));\r\n break;\r\n\r\n // SingleSelect\r\n case 6:\r\n return bp.selectedDefaultEnumValues[0];\r\n break;\r\n\r\n // MultiSelect\r\n case 7:\r\n return bp.selectedDefaultEnumValues;\r\n break;\r\n }\r\n }\r\n\r\n public getName(index): string\r\n {\r\n if(this.requirementBlueprints && this.requirementBlueprints.length > index)\r\n {\r\n var postfix = \"\";\r\n // if(this.requirementBlueprints[index].isRequiredOnline)\r\n // {\r\n // postfix = \" *\"\r\n // }\r\n let languageCode = this.languageService.currentLanguage.code.toLocaleLowerCase();\r\n let local = this.requirementBlueprints[index].localizations.filter(local => local.languageCode.toLowerCase() == languageCode)[0];\r\n if(local)\r\n {\r\n return local.name + postfix;\r\n }\r\n else\r\n {\r\n let defaultLocal = this.requirementBlueprints[index].localizations.filter(local => local.isDefault)[0];\r\n if(defaultLocal)\r\n {\r\n return defaultLocal.name + postfix;\r\n }\r\n else\r\n {\r\n return \"\" + postfix;\r\n }\r\n }\r\n }\r\n \r\n }\r\n\r\n\r\n public getDescription(index): string\r\n {\r\n if(this.requirementBlueprints && this.requirementBlueprints.length > index)\r\n {\r\n let languageCode = this.languageService.currentLanguage.code.toLocaleLowerCase();\r\n let local = this.requirementBlueprints[index].localizations.filter(local => local.languageCode.toLowerCase() == languageCode)[0];\r\n if(local)\r\n {\r\n return local.description;\r\n }\r\n else\r\n {\r\n let defaultLocal = this.requirementBlueprints[index].localizations.filter(local => local.isDefault)[0];\r\n if(defaultLocal)\r\n {\r\n return defaultLocal.description;\r\n }\r\n else\r\n {\r\n return \"\";\r\n }\r\n }\r\n // return this.requirementBlueprints[index].localizations.filter(local => local.languageCode.toLowerCase() == languageCode)[0].description;\r\n }\r\n }\r\n\r\n public getCustomEnumName(bpIndex, enumIndex): string\r\n {\r\n if(this.requirementBlueprints && this.requirementBlueprints.length > bpIndex)\r\n {\r\n let languageCode = this.languageService.currentLanguage.code.toLocaleLowerCase();\r\n return this.requirementBlueprints[bpIndex].customEnums[enumIndex].localizations.filter(local => local.languageCode.toLowerCase() == languageCode)[0].name;\r\n }\r\n }\r\n public getCustomEnumTooltip(bpIndex, enumIndex): string\r\n {\r\n if(this.requirementBlueprints && this.requirementBlueprints.length > bpIndex)\r\n {\r\n let languageCode = this.languageService.currentLanguage.code.toLocaleLowerCase();\r\n return this.requirementBlueprints[bpIndex].customEnums[enumIndex].localizations.filter(local => local.languageCode.toLowerCase() == languageCode)[0].description;\r\n }\r\n }\r\n public getSortedCustomEnums(index): CustomEnumValueDto[]\r\n {\r\n if(this.requirementBlueprints && this.requirementBlueprints.length > index)\r\n {\r\n return this.requirementBlueprints[index].customEnums.sort((a,b) => a.sortNumber - b.sortNumber);\r\n }\r\n }\r\n \r\n public getValidationError(index): string\r\n {\r\n let languageCode = this.languageService.currentLanguage.code.toLocaleLowerCase();\r\n return this.requirementBlueprints[index].localizations.filter(local => local.languageCode.toLowerCase() == languageCode)[0].validationMessage;\r\n }\r\n getRessourceText(val: string): string\r\n {\r\n\r\n this.translationObject = this.translate.get(val);\r\n if (this.translationObject.value !== undefined)\r\n return (this.translationObject.value)\r\n\r\n return \"\";\r\n }\r\n\r\n onChanges(): void\r\n {\r\n this.subscriptions.push(this.frmContact.valueChanges.subscribe(val =>\r\n {\r\n this.errorMessage = \"\";\r\n this.nextStepIsEnabled = this.frmContact.valid;\r\n }));\r\n }\r\n\r\n createForm()\r\n {\r\n this.frmContact = this.formBuilder.group({\r\n 'requirementValues': this.formBuilder.array([]),\r\n 'checkAGB': [false, Validators.requiredTrue],\r\n 'recaptchaReactive': new UntypedFormControl(null)\r\n });\r\n\r\n this.nextStepIsEnabled = this.frmContact.valid;\r\n }\r\n\r\n resolved(captchaResponse: string)\r\n {\r\n\r\n }\r\n\r\n submitForm(): void\r\n {\r\n\r\n if (this.frmContact.valid)\r\n {\r\n if (this.frmContact.dirty)\r\n {\r\n this.isLoading = true;\r\n this.formSubmitProcess = true;\r\n\r\n const data = {...this.frmContact.value};\r\n let bookAppointmentDto = new BookAppointmentDto();\r\n bookAppointmentDto.requirementValues = data.requirementValues;\r\n \r\n let employee = this.userConcernService.getEmployee();\r\n if (GlobalSettings.isEmpty(employee))\r\n {\r\n bookAppointmentDto.id = this.selectedLocation.id;\r\n }\r\n else\r\n {\r\n bookAppointmentDto.id = employee.id;\r\n }\r\n\r\n let thisDate = new Date(this.calendarService.selectedDate)\r\n var convertToMoment = moment(thisDate);\r\n\r\n var selDateString = convertToMoment.format(\"YYYY-MM-DDTHH:mm\");\r\n bookAppointmentDto.start = selDateString;\r\n\r\n\r\n // setTimeout(() => this.isLoading = false, 10000);\r\n bookAppointmentDto.selectedServiceDtos = this.userConcernService.getUserConcerns();\r\n\r\n this.subscriptions.push(this.customerService.saveData(bookAppointmentDto, employee)\r\n .subscribe((responseStatus) =>\r\n {\r\n this.isLoading = false;\r\n this.formSuccessFullySent = true;\r\n this.notifyContactFormSuccessfulySent.emit(this.formSuccessFullySent);\r\n this.customerService.customerFormSent = true;\r\n\r\n // set the notify service which leads to set the form to readonly\r\n this.customerService.notifyFormSent.emit(true);\r\n\r\n // delete the user concerns\r\n this.userConcernService.deleteUserConcerns();\r\n\r\n this.nextStepIsEnabled = true;\r\n this.setReadonlyForm(true);\r\n this.formSubmitProcess = false;\r\n },\r\n (error) =>\r\n {\r\n this.isLoading = false;\r\n this.formSubmitProcess = false;\r\n },\r\n () => \r\n { // for some reason the error ends up here\r\n this.isLoading = false;\r\n this.formSubmitProcess = false;\r\n }\r\n ));\r\n }\r\n } else\r\n {\r\n\r\n if (!this.formIsReadonly)\r\n this.errorMessage = 'Please correct the validation errors.';\r\n }\r\n }\r\n\r\n setReadonlyForm(isSent: boolean)\r\n {\r\n this.frmContact.disable()\r\n this.nextStepIsEnabled = true;\r\n };\r\n\r\n ngOnDestroy()\r\n {\r\n this.subscriptions.forEach(s => s.unsubscribe());\r\n }\r\n\r\n}","\r\n \r\n \r\n \r\n\r\n\r\n
\r\n

{{'CONTACT_FORM.TITLE' | translate}}

\r\n

\r\n {{'CONTACT_FORM.HEADER_TEXT' | translate}}\r\n

\r\n
\r\n \r\n {{errorObject | json}}\r\n {{errorMessage | translate}}\r\n\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n {{getName(i)}}\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{getName(i)}}\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n {{getName(i)}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {{getName(i)}}\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{getName(i)}}\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{getName(i)}}\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{getName(i)}}\r\n \r\n {{'UI.None' | translate}}\r\n \r\n {{getCustomEnumName(i,j)}}\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{getName(i)}}\r\n \r\n \r\n {{getCustomEnumName(i,j)}}\r\n \r\n \r\n \r\n
\r\n\r\n\r\n \r\n {{getValidationError(i)}}\r\n \r\n\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n {{ post | json }}\r\n
\r\n
\r\n\r\n","import { Component, OnInit, Inject, EventEmitter, Output, ViewChild, ElementRef, AfterViewInit, Input, OnDestroy } from '@angular/core';\r\nimport { IConcern, IConcernCounter } from '../../shared/model/concern';\r\nimport { ConcernService } from 'src/app/shared/services/concern.service';\r\nimport { IUserConcern } from 'src/app/shared/model/userconcern';\r\nimport { UserConcernService } from 'src/app/shared/services/userconcern.service';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ConcernDetailComponent } from '../concerndetail/concerndetail.component';\r\nimport { MatSnackBar, MatSnackBarConfig, MatSnackBarHorizontalPosition, MatSnackBarVerticalPosition } from '@angular/material/snack-bar';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators } from '@angular/forms';\r\nimport { FilterComponent } from 'src/app/shared/filter/filter.component';\r\nimport { ConcernGroupService } from 'src/app/shared/services/concerngroup.service';\r\nimport { IConcernGroup, IConcernGroupCounter } from 'src/app/shared/model/concerngroup';\r\nimport { of, Subscription } from 'rxjs';\r\nimport { LocationService } from 'src/app/shared/services/location.service';\r\nimport { MessageService } from 'src/app/shared/services/messages.service';\r\nimport { CustomerService } from 'src/app/shared/services/customer.service';\r\nimport { GlobalSettings } from 'src/app/shared/config/globalsettings';\r\nimport { ServerSettingService } from 'src/app/shared/services/server-setting.service';\r\nimport { ServerSettings } from 'src/app/shared/config/server-settings';\r\nimport { ConfigSettings } from 'src/app/config-settings';\r\nimport { ConfigSettingsService } from 'src/app/shared/services/config-settings.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { LanguageService } from 'src/app/shared/services/language.service';\r\nimport { OnlineDesignService } from 'src/app/shared/services/online-design.service';\r\n\r\n\r\n\r\n// TER-572 Nachdem absenden der Kontaktdaten kann man bei dem Anligen noch die Dienstleistungen einstellen.\r\n\r\n@Component({\r\n selector: 'app-concern',\r\n templateUrl: './concern.component.html',\r\n styleUrls: ['./concern.component.scss']\r\n})\r\nexport class ConcernComponent implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n\r\n private classame = (this).constructor.name;\r\n \r\n private subscriptions : Subscription[] = [];\r\n\r\n translationObject: any;\r\n\r\n configSettings: ConfigSettings;\r\n //additional client configuration settings.\r\n\r\n //todo: for small devices display in columns!\r\n\r\n @Input() concernGroupid: string;\r\n\r\n parentListFilter: string;\r\n includeDetail: boolean = true;\r\n frmConcern: UntypedFormGroup;\r\n showServiceDuration: boolean;\r\n showInfo: boolean;\r\n\r\n\r\n CONCERN_DURATION_TEXT: string;\r\n\r\n // either by configuarion or via each service\r\n maxNumberOfConcernsGlobal = 1;\r\n numberOfConcerns = 0;\r\n\r\n // for the array of concerns we need a new array with add and reduce enabled,\r\n concerns: IConcern[];\r\n\r\n concernGroups: IConcernGroup[];\r\n\r\n // filter later\r\n //@ViewChild(FilterComponent) filterComponentRef: FilterComponent;\r\n filteredConcerns: IConcern[];\r\n\r\n\r\n // callback function of the concerngroup\r\n @Output() concernGroupCounterNotify: EventEmitter = new EventEmitter();\r\n\r\n constructor(\r\n private onlineDesignService: OnlineDesignService,\r\n private concernService: ConcernService,\r\n private userConcernService: UserConcernService,\r\n private locationService: LocationService,\r\n public snackBar: MatSnackBar,\r\n public dialog: MatDialog,\r\n private formBuilder: UntypedFormBuilder,\r\n private messageService: MessageService,\r\n private customerService: CustomerService,\r\n private globalSettingService: ServerSettingService,\r\n private configSettingsService: ConfigSettingsService,\r\n public translate: TranslateService,\r\n public languageService: LanguageService,\r\n )\r\n {\r\n }\r\n\r\n ngOnInit()\r\n {\r\n // get the translation resources\r\n this.subscriptions.push(this.translate.get(['CONCERN.DURATION_TEXT']).subscribe((translation: [string]) =>\r\n {\r\n this.translationObject = translation;\r\n this.CONCERN_DURATION_TEXT = this.translationObject['CONCERN.DURATION_TEXT'];\r\n }));\r\n\r\n\r\n this.configSettings = this.configSettingsService.configSettings;\r\n this.onlineDesignService.showServiceDuration.subscribe( result => this.showServiceDuration = result);\r\n this.showServiceDuration = this.onlineDesignService.showServiceDurationCurrentState;\r\n\r\n this.showInfo = this.configSettings.concernShowInfoButton;\r\n\r\n this.concerns = this.concernService.getConcernInGroup(this.concernGroupid);\r\n\r\n\r\n // TER-572\r\n this.subscriptions.push(this.customerService.notifyFormSent.subscribe(\r\n customerFormSent =>\r\n {\r\n this.setReadonlyForm(customerFormSent)\r\n }\r\n ));\r\n\r\n }\r\n\r\n ngAfterViewInit(): void { }\r\n\r\n\r\n\r\n calculateDuration(concern: IConcern): number\r\n {\r\n if (concern.countSelected == 0)\r\n {\r\n // this is responsible that nothing will displayed in the pipe for no value\r\n return null;\r\n\r\n }\r\n\r\n let result = concern.initialDuration + (concern.countSelected - 1) * concern.consecutiveDuration\r\n return (result);\r\n }\r\n\r\n\r\n\r\n changeUserConcern(concern: IConcern, action: string): void\r\n {\r\n\r\n if (action === \"add\")\r\n {\r\n this.userConcernService.updateUserConcernQuantity(concern.id, 1);\r\n this.concernService.updateSelectedCount(concern.id, 1);\r\n\r\n } else\r\n {\r\n this.userConcernService.updateUserConcernQuantity(concern.id, -1);\r\n this.concernService.updateSelectedCount(concern.id, -1);\r\n }\r\n\r\n\r\n // check the situation of the buttons after changing the number of concerns.\r\n let index = this.concerns.findIndex(x => x.id == concern.id);\r\n this.concerns[index] = concern;\r\n\r\n if (concern.countSelected >= (concern.maxRepetitions ? concern.maxRepetitions : this.maxNumberOfConcernsGlobal))\r\n concern.addEnabled = false;\r\n else\r\n concern.addEnabled = true;\r\n\r\n\r\n if (concern.countSelected <= 0)\r\n concern.reduceEnabled = false;\r\n else\r\n concern.reduceEnabled = true;\r\n\r\n // notify the group for the amount from child to parent.\r\n let concernGroupCounter = new IConcernGroupCounter();\r\n concernGroupCounter.id = this.concernGroupid;\r\n concernGroupCounter.amount = this.concernService.getSelectedConcernsQuantityInGroup(this.concernGroupid);\r\n\r\n concernGroupCounter.duration = this.concernService.getSelectedRecordDurationInGroup(this.concernGroupid);\r\n this.concernGroupCounterNotify.emit(concernGroupCounter);\r\n \r\n\r\n // the currently loaded locations must be done invalid. \r\n this.locationService.loadedLocationsInvalid = true;\r\n }\r\n\r\n // dialog for the detail pape \r\n openDialog(concern: IConcern): void\r\n {\r\n const dialogRef = this.dialog.open(ConcernDetailComponent, {\r\n height: '400px',\r\n width: '600px',\r\n data: { concern }\r\n });\r\n\r\n this.subscriptions.push(dialogRef.afterClosed().subscribe(result =>\r\n {\r\n \r\n }));\r\n //this.subscription.add(subscription);\r\n }\r\n\r\n //set notifer on contact form sent. \r\n setReadonlyForm(isSent: boolean)\r\n {\r\n this.concerns.forEach(function (concern)\r\n {\r\n concern.addEnabled = false;\r\n concern.reduceEnabled = false;\r\n })\r\n };\r\n\r\n // maybe called from the concerngroup\r\n // or from the service\r\n setReadonlyForm2(isSent: boolean)\r\n {\r\n\r\n this.concerns.forEach(function (concern)\r\n {\r\n concern.addEnabled = false;\r\n concern.reduceEnabled = false;\r\n })\r\n };\r\n\r\n\r\n ngOnDestroy(): void\r\n {\r\n this.subscriptions.forEach(s => s.unsubscribe());\r\n }\r\n\r\n}\r\n","\r\n\r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n\r\n
\r\n {{concern | defaultTranslation : 'name' }}\r\n
1\"\r\n matTooltip=\"{{'CONCERN.TOOLTIP_DURATION_SERVICE' | translate}}\">\r\n ({{concern.initialDuration}}/{{concern.consecutiveDuration}} {{'SETTINGS.MINUTE' | translate}})
\r\n
({{concern.initialDuration}}\r\n {{'SETTINGS.MINUTE' | translate}})
\r\n
\r\n
\r\n {{'CONCERN.DURATION_TEXT' | translate | userSettings:calculateDuration(concern)}}\r\n
\r\n\r\n
\r\n \r\n {{concern.countSelected}}\r\n \r\n \r\n
\r\n\r\n
","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { IConcern } from '../../shared/model/concern';\r\n\r\n\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { GlobalSettings } from 'src/app/shared/config/globalsettings';\r\nimport { MessageService } from 'src/app/shared/services/messages.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-concerndetail',\r\n templateUrl: './concerndetail.component.html',\r\n styleUrls: ['./concerndetail.component.scss']\r\n})\r\nexport class ConcernDetailComponent implements OnInit {\r\n\r\n private classame = (this).constructor.name;\r\n\r\n globalSettings: GlobalSettings = new GlobalSettings();\r\n title: string;\r\n description: string;\r\n concern:any;\r\n constructor(\r\n private messageService: MessageService,\r\n public dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any) {\r\n \r\n \r\n if (data) {\r\n this.concern = data;\r\n \r\n\r\n // todo: use localisation\r\n //this.title = this.data.concern.languageKey;\r\n this.title = \"todo\";\r\n this.description = \"todo\";\r\n // if (this.globalSettings.devMode){\r\n // this.description = this.data.concern.descriptionKey? this.data.concern.descriptionKey : \"Hier könnte ihr Beschreibungstext stehen.\";\r\n // } else {\r\n // this.description = this.data.concern.descriptionKey? this.data.concern.descriptionKey : \"\";\r\n // }\r\n \r\n \r\n }\r\n\r\n //this.dialogRef.updateSize('300vw','300vw')\r\n\r\n\r\n }\r\n\r\n ngOnInit() {\r\n \r\n\r\n }\r\n\r\n onClick(): void {\r\n this.dialogRef.close();\r\n }\r\n\r\n\r\n}\r\n","
\r\n

{{concern.concern | defaultTranslation : 'name' }}

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
","import { Component, OnInit, Output, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { IConcernGroup, IConcernGroupCounter } from 'src/app/shared/model/concerngroup';\r\nimport { ConcernGroupService } from 'src/app/shared/services/concerngroup.service';\r\nimport { UntypedFormGroup, Validators, UntypedFormBuilder } from '@angular/forms';\r\nimport { IConcernCounter } from 'src/app/shared/model/concern';\r\nimport { GlobalSettings } from 'src/app/shared/config/globalsettings';\r\nimport { ConcernService } from 'src/app/shared/services/concern.service';\r\nimport { ServerSettingService } from 'src/app/shared/services/server-setting.service';\r\nimport { ServerSettings } from 'src/app/shared/config/server-settings';\r\nimport { MessageService } from 'src/app/shared/services/messages.service';\r\nimport { CustomerService } from 'src/app/shared/services/customer.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ConfigSettingsService } from 'src/app/shared/services/config-settings.service';\r\nimport { LanguageService } from 'src/app/shared/services/language.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { IPublicEmployee } from 'src/app/shared/model/public-employee';\r\nimport { UserConcernService } from 'src/app/shared/services/userconcern.service';\r\nimport { LocationService } from 'src/app/shared/services/location.service';\r\nimport { QFlexWorkloadService } from 'src/app/shared/services/q-flex-workload.service';\r\nimport { MediaMatcher } from '@angular/cdk/layout';\r\nimport { OnlineDesignService } from 'src/app/shared/services/online-design.service';\r\n\r\n@Component({\r\n selector: 'app-concerngroup',\r\n templateUrl: './concerngroup.component.html',\r\n styleUrls: ['./concerngroup.component.scss']\r\n})\r\n\r\n// todo: think about solution for one available group\r\n// todo: think about only display the group, if there are concerns in it.\r\n\r\n\r\nexport class ConcernGroupComponent implements OnInit, OnDestroy\r\n{\r\n\r\n private subscriptions : Subscription[] = [];\r\n private translationObject: any;\r\n public isLoading = true;\r\n\r\n\r\n private allConcernGroups: IConcernGroup[];\r\n public displayedConcernGroups: IConcernGroup[];\r\n\r\n private concernGroupsCounter: IConcernGroupCounter[] = [];\r\n\r\n\r\n private allPublicEmployees : IPublicEmployee[];\r\n public displayedPublicEmployees: IPublicEmployee[];\r\n public filteredDisplayedEmployees: IPublicEmployee[] = [];\r\n\r\n private mutuallyExclusiveServiceGroups: boolean = false;\r\n private maxEstimatedAppointmentDuration: number;\r\n \r\n public totalServiceAmount: number;\r\n public totalServiceDuration: number;\r\n\r\n public frmConcern: UntypedFormGroup;\r\n public nextStepIsEnabled: boolean;\r\n public showTotalDuration: boolean = false;\r\n public showServiceGroupDuration: boolean = false;\r\n public canSelectEmployeeOnline : boolean = false;\r\n \r\n public mobileQuery: MediaQueryList;\r\n //notification which is used in the parent stepper.\r\n @Output() notifyNumberOfConcerns: EventEmitter = new EventEmitter();\r\n\r\n constructor(\r\n private onlineDesignService: OnlineDesignService,\r\n private concernGroupService: ConcernGroupService,\r\n private formBuilder: UntypedFormBuilder,\r\n private concernService: ConcernService,\r\n private userConcernService: UserConcernService,\r\n private globalSettingService: ServerSettingService,\r\n private messageService: MessageService,\r\n private customerService: CustomerService,\r\n public translate: TranslateService,\r\n private configSettingsService: ConfigSettingsService,\r\n public title: Title,\r\n public languageService: LanguageService,\r\n private locationService: LocationService,\r\n private workloadService : QFlexWorkloadService,\r\n private media: MediaMatcher,\r\n \r\n )\r\n {\r\n }\r\n\r\n\r\n ngAfterContentInit()\r\n {\r\n\r\n }\r\n\r\n ngOnInit()\r\n {\r\n this.mobileQuery = this.media.matchMedia(`(max-width: ${this.configSettingsService.configSettings.SMALL_WIDTH_BREAKPOINT}px)`);\r\n\r\n \r\n\r\n this.workloadService.loadWorkload();\r\n\r\n this.frmConcern = this.formBuilder.group({\r\n 'concernText': ['', Validators.required]\r\n });\r\n\r\n // get the translation resources\r\n this.subscriptions.push(this.translate.get(['APPLICATION_TITLE', 'MENU.BOOK_APPOINTMENT']).subscribe((translation: [string]) =>\r\n {\r\n this.translationObject = translation;\r\n this.title.setTitle(this.translationObject['APPLICATION_TITLE'] + \" > \" + this.translationObject['MENU.BOOK_APPOINTMENT']);\r\n }));\r\n\r\n //this.showDurationTime = this.configSettingsService.configSettings.concernShowDurationTime;\r\n this.onlineDesignService.showTotalDuration.subscribe(result => this.showTotalDuration = result);\r\n this.showTotalDuration = this.onlineDesignService.showTotalDurationCurrentState;\r\n\r\n this.onlineDesignService.showServiceGroupDuration.subscribe(result => this.showServiceGroupDuration = result);\r\n this.showServiceGroupDuration = this.onlineDesignService.showServiceGroupDurationCurrentState;\r\n\r\n this.subscriptions.push(this.globalSettingService.getServerVariables().subscribe(\r\n (serverSettings: ServerSettings) =>\r\n {\r\n this.mutuallyExclusiveServiceGroups = serverSettings.mutuallyExclusiveServiceGroups;\r\n this.maxEstimatedAppointmentDuration = serverSettings.maxEstimatedAppointmentDuration;\r\n this.canSelectEmployeeOnline = serverSettings.canSelectEmployeeOnline;\r\n }));\r\n\r\n this.subscriptions.push(this.customerService.notifyFormSent.subscribe(\r\n customerFormSent =>\r\n {\r\n this.setReadonlyForm(customerFormSent)\r\n }\r\n ));\r\n\r\n this.subscriptions.push(this.concernService.getConcerns().subscribe(_ =>\r\n {\r\n this.getConcernGroups();\r\n\r\n }, (error: any) =>\r\n {\r\n this.isLoading = false\r\n }));\r\n\r\n }\r\n\r\n\r\n public filterDisplayedEmployees(input): void\r\n {\r\n if(input == 0 || input == \"\")\r\n {\r\n this.filteredDisplayedEmployees = this.displayedPublicEmployees;\r\n }\r\n else\r\n {\r\n this.filteredDisplayedEmployees = this.displayedPublicEmployees.filter(emp => (emp.firstName.toLowerCase() + \" \" + emp.lastName.toLowerCase()).includes(input.toLowerCase()));\r\n }\r\n }\r\n\r\n getConcernGroups(): void\r\n {\r\n\r\n this.concernGroupService.getConcernGroupsVM()\r\n .subscribe((data: any) =>\r\n {\r\n this.allConcernGroups = data[0];\r\n this.allPublicEmployees = data[1];\r\n this.allPublicEmployees.sort( (a , b) => a.lastName.localeCompare(b.lastName));\r\n this.displayedConcernGroups = [... this.allConcernGroups];\r\n this.displayedPublicEmployees = [... this.allPublicEmployees];\r\n this.filteredDisplayedEmployees = this.displayedPublicEmployees;\r\n this.isLoading = false;\r\n this.nextStepIsEnabled = this.frmConcern.valid;\r\n },\r\n error =>\r\n {\r\n this.isLoading = false;\r\n });\r\n\r\n }\r\n\r\n calculateDuration(id: string): number\r\n {\r\n\r\n const foundGroupIndex = this.concernGroupsCounter.findIndex(x => x.id === id)\r\n\r\n if (foundGroupIndex == -1)\r\n return null;\r\n\r\n let amount = this.concernGroupsCounter[foundGroupIndex].duration;\r\n\r\n if (amount == 0)\r\n return null;\r\n\r\n return (amount);\r\n\r\n }\r\n\r\n public calculateTotalDuration(): number \r\n {\r\n\r\n let amount = 0;\r\n this.concernGroupsCounter.forEach(grp => amount += grp.duration);\r\n\r\n if (amount == 0)\r\n return null;\r\n\r\n return (amount);\r\n }\r\n\r\n\r\n //count all records of the concerns in a group\r\n modifyConcern(concernGroupCounter: IConcernGroupCounter): void\r\n {\r\n\r\n // calculate the new groupconcern records from this values.\r\n const foundGroupIndex = this.concernGroupsCounter.findIndex(x => x.id === concernGroupCounter.id)\r\n\r\n if (foundGroupIndex > -1)\r\n { //group record already exist \r\n\r\n // if amount == 0 concern groupsCounter \r\n\r\n this.concernGroupsCounter[foundGroupIndex] = concernGroupCounter;\r\n } else\r\n {\r\n this.concernGroupsCounter.push(concernGroupCounter);\r\n };\r\n\r\n let duration = 0;\r\n let amount = 0;\r\n this.concernGroupsCounter.forEach(function (item)\r\n {\r\n\r\n //if (duration === 0) \r\n duration += item.duration;\r\n amount += item.amount;\r\n });\r\n\r\n\r\n this.totalServiceAmount = amount;\r\n this.totalServiceDuration = duration;\r\n\r\n //making the form valid\r\n if (amount > 0)\r\n {\r\n this.frmConcern.get(\"concernText\").setValue(duration);\r\n } else\r\n {\r\n this.frmConcern.get(\"concernText\").setValue(\"\");\r\n }\r\n this.nextStepIsEnabled = this.frmConcern.valid;\r\n this.notifyNumberOfConcerns.emit(this.totalServiceAmount);\r\n\r\n this.concernService.handleMaxEstimatedDuration(this.concernGroupsCounter, this.maxEstimatedAppointmentDuration, this.calculateTotalDuration());\r\n\r\n // handling combining services in different groups\r\n if (this.mutuallyExclusiveServiceGroups === true)\r\n {\r\n if (concernGroupCounter.amount > 0)\r\n {\r\n this.concernService.disableOtherGroupConcerns(concernGroupCounter.id);\r\n }\r\n if (concernGroupCounter.amount === 0)\r\n {\r\n this.concernService.enableOtherGroupConcerns(concernGroupCounter.id);\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n getGroupServiceNumber(guid: string)\r\n {\r\n\r\n const foundGroupRecord = this.concernGroupsCounter.find(x => x.id === guid)\r\n if (foundGroupRecord === undefined)\r\n {\r\n return (\"\");\r\n }\r\n\r\n return (foundGroupRecord.amount);\r\n }\r\n\r\n\r\n getGroupServiceTime(guid: string)\r\n {\r\n\r\n const foundGroupRecord = this.concernGroupsCounter.find(x => x.id === guid)\r\n if (foundGroupRecord === undefined)\r\n {\r\n return (\"\");\r\n }\r\n return (\"(\" + foundGroupRecord.duration.toString() + \" min)\");\r\n }\r\n\r\n setReadonlyForm(isSent: boolean)\r\n {\r\n this.frmConcern.disable()\r\n this.nextStepIsEnabled = true;\r\n };\r\n\r\n\r\n public selectedEmployee(event): void\r\n {\r\n if(GlobalSettings.isEmpty(event) ||GlobalSettings.isEmpty(event.value))\r\n {\r\n this.concernService.setEmployee( null );\r\n this.userConcernService.setEmployee(null);\r\n }\r\n else\r\n {\r\n this.concernService.setEmployee( this.allPublicEmployees.filter(e => e.id == event.value)[0] );\r\n this.userConcernService.setEmployee( this.allPublicEmployees.filter(e => e.id == event.value)[0] );\r\n }\r\n\r\n this.locationService.loadedLocationsInvalid = true;\r\n this.totalServiceAmount = 0;\r\n this.totalServiceDuration = 0;\r\n\r\n this.concernGroupsCounter.forEach(function (item)\r\n {\r\n\r\n //if (duration === 0) \r\n item.duration = 0;\r\n item.amount = 0;\r\n });\r\n\r\n this.frmConcern.get(\"concernText\").setValue(\"\");\r\n \r\n this.nextStepIsEnabled = this.frmConcern.valid;\r\n this.notifyNumberOfConcerns.emit(this.totalServiceAmount);\r\n\r\n //this.concernService.handleMaxEstimatedDuration(this.concernGroupsCounter, this.maxEstimatedAppointmentDuration, this.calculateTotalDuration());\r\n }\r\n\r\n ngOnDestroy(): void\r\n {\r\n this.subscriptions.forEach(s => s.unsubscribe());\r\n }\r\n\r\n}","\r\n \r\n \r\n \r\n
\r\n

{{'LOADING' | translate}}

\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n \r\n {{'WORKLOAD.STATUS' | translate}}\r\n {{ languageService.replacePlaceholder('WORKLOAD.WAITING_CUSTOMER_COUNT' | translate, 'WaitingCustomerCount', workloadService.workload.waitingCustomerCount) }}\r\n |\r\n {{ languageService.replacePlaceholder('WORKLOAD.AVG_WAITING_TIME' | translate, 'AvgWaitTime', workloadService.workload.avgWaitTime) }}\r\n \r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n {{'EMPLOYEE.LABEL' | translate}}\r\n \r\n \r\n search\r\n \r\n \r\n \r\n {{'EMPLOYEE.ANY' | translate}}\r\n \r\n \r\n {{employee.lastName}}, {{employee.firstName}}\r\n \r\n \r\n \r\n
\r\n\r\n\r\n \r\n \r\n
\r\n
\r\n {{'CONCERN.HEADER_TEXT' | translate}}\r\n
\r\n
{{'CONCERN.CURRENT_TOTAL_DURATION' | translate}}\r\n {{'CONCERN.DURATION_TEXT' | translate | userSettings:calculateTotalDuration()}}
\r\n
\r\n\r\n\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n {{concernGroup | defaultTranslation : 'name' }}\r\n \r\n\r\n {{'CONCERN.DURATION_TEXT' | translate | userSettings:calculateDuration(concernGroup.id)}}\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n {{errorMessage}}\r\n \r\n\r\n\r\n
\r\n\r\n \r\n \r\n {{'WORKLOAD.STATUS' | translate}}\r\n

{{ languageService.replacePlaceholder('WORKLOAD.WAITING_CUSTOMER_COUNT' | translate, 'WaitingCustomerCount', workloadService.workload.waitingCustomerCount) }}

\r\n

{{ languageService.replacePlaceholder('WORKLOAD.AVG_WAITING_TIME' | translate, 'AvgWaitTime', workloadService.workload.avgWaitTime) }}

\r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n \r\n
","import { Component, OnInit, Inject, OnDestroy } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators, AbstractControl, ValidatorFn } from '@angular/forms';\r\nimport { CustomerService } from 'src/app/shared/services/customer.service';\r\nimport { ILocation } from 'src/app/shared/model/location';\r\nimport { Subscription, of, Observable } from 'rxjs';\r\nimport { LocationService } from 'src/app/shared/services/location.service';\r\nimport { CalendarService } from 'src/app/shared/services/calendar.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { GlobalSettings } from 'src/app/shared/config/globalsettings';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ConfigSettingsService } from 'src/app/shared/services/config-settings.service';\r\nimport { LanguageService } from 'src/app/shared/services/language.service';\r\n// import { tick } from '@angular/core/src/render3';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n/* page is displayed in stepper as a seperate page and also as direct link confirmation page.*/\r\n@Component({\r\n selector: 'app-confirmation',\r\n templateUrl: './confirmation.component.html',\r\n styleUrls: ['./confirmation.component.scss']\r\n})\r\nexport class ConfirmationComponent implements OnInit, OnDestroy\r\n{\r\n\r\n public ticketNumber: string;\r\n public displayTicketNumber: boolean;\r\n\r\n private subscriptions : Subscription[] = [];\r\n translationTitleObject: any;\r\n globalSettings: GlobalSettings = new GlobalSettings();\r\n frmConfirmation: UntypedFormGroup;\r\n successMessage: string;\r\n\r\n // errorMessage: string;\r\n //errorMessageConfirmation: string;\r\n controlCodeInput: string;\r\n showConfirmationForm: boolean;\r\n invalidValidation: boolean = false;\r\n confirmError: boolean\r\n\r\n // flag of postback of link confirmation message. \r\n // will be set to true, after successful api call\r\n // Can fail because of invalid e-mail adress of employee\r\n linkConfirmationFinished: boolean\r\n linkConfirmationActivated: boolean\r\n\r\n //title:string;\r\n showTitleInStepper: boolean;\r\n showSelection = false;\r\n isInStep: boolean = false;\r\n finishStepIsEnabled: boolean = false;\r\n contactFormSuccesful: Observable;\r\n\r\n selectedLocation: ILocation;\r\n code: string;\r\n lang: string;\r\n translationObject: any;\r\n\r\n public isLoading: boolean = false;\r\n\r\n\r\n //translationTimeObject: any;\r\n constructor(\r\n private formBuilder: UntypedFormBuilder,\r\n private locationService: LocationService,\r\n private customerService: CustomerService,\r\n private calendarService: CalendarService,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private translate: TranslateService,\r\n private configSettingsService: ConfigSettingsService,\r\n private languageService: LanguageService,\r\n public title: Title,\r\n @Inject(DOCUMENT) private _document: Document\r\n )\r\n {\r\n }\r\n\r\n ngOnInit()\r\n {\r\n\r\n this.linkConfirmationFinished = false;\r\n this.linkConfirmationActivated = false;\r\n this.confirmError = false;\r\n // change if there should be a different implementation\r\n this.showTitleInStepper = false;\r\n\r\n this.showConfirmationForm = true;\r\n this.frmConfirmation = this.formBuilder.group({\r\n 'controlCode': [null, Validators.required],\r\n });\r\n this.finishStepIsEnabled = this.frmConfirmation.valid;\r\n\r\n if (this.contactFormSuccesful)\r\n {\r\n\r\n this.showConfirmationForm = true;\r\n }\r\n\r\n this.frmConfirmation.get('controlCode').clearValidators();\r\n this.frmConfirmation.get('controlCode').setValidators(Validators.required);\r\n this.frmConfirmation.get('controlCode').updateValueAndValidity();\r\n\r\n\r\n \r\n // delete the error message for changing input\r\n // and display the button if valid.\r\n this.subscriptions.push(this.frmConfirmation.get('controlCode').valueChanges.subscribe(() =>\r\n {\r\n //this.errorMessage = \"\",\r\n this.confirmError = false\r\n // second condition because valid is still false for pasting text.\r\n this.finishStepIsEnabled = (this.frmConfirmation.valid || this.frmConfirmation.get('controlCode').dirty);\r\n\r\n }));\r\n\r\n this.subscriptions.push(this.locationService.selectedLocationChanges$.subscribe(\r\n selectedLocation =>\r\n {\r\n this.selectedLocation = selectedLocation,\r\n this.showSelection = true,\r\n this.isInStep = true\r\n }\r\n ));\r\n\r\n\r\n \r\n\r\n if (!this.isInStep)\r\n {\r\n this.subscriptions.push( this.translate.get(['APPLICATION_TITLE', 'MENU.CODE_CONFIRM']).subscribe((translation: [string]) =>\r\n {\r\n\r\n this.translationTitleObject = translation;\r\n this.title.setTitle(this.translationTitleObject['APPLICATION_TITLE'] + \" > \" + this.translationTitleObject['MENU.CODE_CONFIRM']);\r\n }));\r\n \r\n }\r\n\r\n\r\n\r\n\r\n // check direct confirmation link.\r\n const paramCode = this.route.snapshot.paramMap.get('code');\r\n if (paramCode)\r\n {\r\n this.code = paramCode;\r\n this.subscriptions.push( this.confirmation_page(this.code).subscribe(confirm =>\r\n {\r\n this.showConfirmationForm = !confirm;\r\n }\r\n ));\r\n \r\n }\r\n\r\n const paramLang = this.route.snapshot.paramMap.get('lang');\r\n if (paramLang)\r\n {\r\n this.lang = paramLang;\r\n this.languageService.setLanguageFromCode(this.lang);\r\n // this.languageService.changeDefaultLang();\r\n this.translate.setDefaultLang(this.lang);\r\n }\r\n }\r\n\r\n getRessourceText(val: string): string\r\n {\r\n\r\n this.translationObject = this.translate.get(val);\r\n if (this.translationObject.value !== undefined)\r\n return (this.translationObject.value)\r\n\r\n return \"\";\r\n }\r\n\r\n \r\n\r\n //detection for automatic changes\r\n get selectedDate(): Date\r\n {\r\n return this.calendarService.selectedDate;\r\n }\r\n\r\n\r\n getReplaceText(value: string): string\r\n {\r\n\r\n\r\n this.translationObject = this.translate.get(value);\r\n\r\n if (this.translationObject !== undefined && this.translationObject.value !== undefined)\r\n {\r\n\r\n\r\n let str = this.translationObject.value;\r\n if (this.selectedLocation !== undefined)\r\n {\r\n str = str.replace(\"{{location}}\", this.selectedLocation.name);\r\n }\r\n if (this.selectedDate !== undefined)\r\n { //we replace the \r\n let time = this.selectedDate.toLocaleTimeString().substring(0, 5);\r\n\r\n let date = this.selectedDate.toLocaleDateString(this.configSettingsService.configSettings.cultureSetting); //, this.configSettingsService.dateDisplayOptions\r\n\r\n\r\n str = str.replace(\"{{selectedDate}}\", date + \" \" + time);\r\n }\r\n return (str);\r\n\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n\r\n\r\n // automatische Link Bestätigungsseite \r\n confirmation_page(code: string): Observable\r\n {\r\n\r\n // TER-541\r\n\r\n // nicht klar ob das drin bleibt, da die fehlervalidation message angezeigt wird bis zu dem \r\n // zeitpunkt, bis der API Call zurück kommt. \r\n // wahrscheinlich bessere Lösung den 500er Fehler im Intereptor durchzulassen. \r\n this.linkConfirmationActivated = true;\r\n\r\n if (code)\r\n {\r\n this.isLoading = true;\r\n this.subscriptions.push( this.customerService.confirmCode(code)\r\n .subscribe((ticket) =>\r\n {\r\n\r\n if(ticket != null && ticket !== undefined && ticket !== \"\" && ticket.ticket !== null && ticket.ticket !== undefined && ticket.ticket !== \"\")\r\n {\r\n this.ticketNumber = ticket.ticket;\r\n this.displayTicketNumber = true;\r\n }\r\n this.invalidValidation = false;\r\n this.finishStepIsEnabled = false;\r\n this.confirmError = false;\r\n this.showConfirmationForm = false;\r\n this.isLoading = false;\r\n return of(true);\r\n },\r\n error =>\r\n {\r\n this.isLoading = false;\r\n this.invalidValidation = true;\r\n this.onCallbackSubmit(error.status);\r\n return of(false);\r\n },\r\n () =>\r\n {\r\n this.invalidValidation = true;\r\n this.isLoading = false;\r\n return of(false);\r\n }\r\n ));\r\n \r\n }\r\n\r\n return of(true);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // 3 different submits.\r\n // one directly from the form outsite the stepper and one callback from the stepper and one with url parameters.\r\n submit(): void\r\n {\r\n\r\n //disble button for second try. Will be enabled again after post back.\r\n this.finishStepIsEnabled = false;\r\n\r\n let controlCode = this.frmConfirmation.get('controlCode').value;\r\n\r\n if ((this.frmConfirmation.valid) && (this.frmConfirmation.dirty))\r\n {\r\n this.isLoading = true;\r\n this.subscriptions.push(this.customerService.confirmCode(controlCode)\r\n .subscribe((ticket) =>\r\n {\r\n // if(responseStatus.body !== null && responseStatus.body !== undefined && responseStatus.body !== \"\" )\r\n // {\r\n // this.ticketNumber = responseStatus.body;\r\n // this.displayTicketNumber = true;\r\n // }\r\n if(ticket != null && ticket !== undefined && ticket !== \"\" && ticket.ticket !== null && ticket.ticket !== undefined && ticket.ticket !== \"\")\r\n {\r\n this.ticketNumber = ticket.ticket;\r\n this.displayTicketNumber = true;\r\n }\r\n \r\n this.invalidValidation = false;\r\n this.finishStepIsEnabled = false;\r\n this.confirmError = false;\r\n this.showConfirmationForm = false;\r\n this.isLoading = false;\r\n // this.onCallbackSubmit(responseStatus.status);\r\n },\r\n error =>\r\n {\r\n //fehlercode 500 (internal server error) \r\n // wird vom interceptor abgefangen und nicht ausgewertet. \r\n this.isLoading = false;\r\n this.invalidValidation = true;\r\n this.onCallbackSubmit(error.status);\r\n },\r\n () =>\r\n {\r\n this.isLoading = false;\r\n this.invalidValidation = true;\r\n }\r\n ));\r\n \r\n }\r\n }\r\n onCallbackSubmit(status: number): void\r\n {\r\n switch (status)\r\n {\r\n case 200: {\r\n\r\n //this.errorMessage = \"\";\r\n this.confirmError = false;\r\n this.showConfirmationForm = false;\r\n //this.finishStepIsEnabled = true;\r\n break;\r\n }\r\n case 404: {\r\n\r\n\r\n //this.translationObject = this.translate.get(\"CONFIRMATION.CONFIRM_ERROR_IN_CODE\");\r\n\r\n //this.errorMessage = this.errorMessageConfirmation;\r\n this.confirmError = true;\r\n this.showConfirmationForm = true;\r\n this.finishStepIsEnabled = true; //next try\r\n break;\r\n }\r\n // case 400: { \r\n // this.toDoMessage(\"Nachricht Fehler: die Daten wurden nicht richtig übertragen und der Termin konnte nicht gebucht werden.\");\r\n // break; \r\n // } \r\n case 500: {\r\n\r\n break;\r\n }\r\n default: {\r\n //this.errorMessage = \"Unbekannter Fehler.\";\r\n break;\r\n }\r\n }\r\n }\r\n\r\n\r\n public bookAnother(): void\r\n {\r\n // if(this.route != 'book-appointment')\r\n // this.router.navigate(['book-appointment']);\r\n\r\n let curRoute = this.router.url;\r\n if (curRoute == '/book-appointment/init')\r\n {\r\n this._document.defaultView.location.reload();\r\n return;\r\n }\r\n else\r\n {\r\n this.router.navigate(['book-appointment/init']);\r\n }\r\n \r\n \r\n }\r\n\r\n ngOnDestroy(): void\r\n {\r\n this.subscriptions.forEach(s => s.unsubscribe());\r\n }\r\n}\r\n","
\r\n \r\n

{{'CONFIRMATION.TITLE' | translate}}

\r\n

{{'CONFIRMATION.TITLE_CONFIRMED' | translate}}

\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
{{'CONFIRMATION.TICKET_MESSAGE' | translate}}
\r\n

{{ticketNumber}}

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n

{{\"CONFIRMATION.CHECK_EMAIL\" | translate}}

\r\n

{{\"CONFIRMATION.NO_CONFIRMATION\" | translate}}

\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {{'CONFIRMATION.CONTROL_CODE' | translate}}\r\n \r\n \r\n {{'MESSAGES.CONFIRM_CODE_REQUIRED' | translate}}\r\n \r\n \r\n {{'CONFIRMATION.CONFIRM_ERROR_IN_CODE' | translate}}\r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-confirmation-dialog',\r\n templateUrl: './confirmation-dialog.component.html',\r\n styleUrls: ['./confirmation-dialog.component.scss']\r\n})\r\nexport class ConfirmationDialogComponent implements OnInit {\r\n\r\n public yes: string = \"\";\r\n public no: string = \"\";\r\n public onlyOk: boolean = false;\r\n private messageToDisplay: string= \"\";\r\n constructor(public translate: TranslateService,\r\n public dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public message: string,\r\n )\r\n {\r\n this.messageToDisplay = message;\r\n this.translate.get(\"Yes\").subscribe(msg => \r\n {\r\n this.yes = msg;\r\n });\r\n this.translate.get(\"No\").subscribe(msg => \r\n {\r\n this.no = msg;\r\n });\r\n }\r\n ngOnInit(): void {\r\n document.getElementById(\"content\").innerHTML = this.messageToDisplay;\r\n }\r\n onNoClick(): void\r\n {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","
\r\n warning_amber\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
","\r\n
\r\n \r\n \r\n \"german\"\r\n \r\n \r\n
\r\n \"{{language.code}}\"\r\n
{{language.name | translate}}
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, ViewChild, OnDestroy } from '@angular/core';\r\nimport { LanguageService } from 'src/app/shared/services/language.service';\r\n\r\nimport { FormGroup, UntypedFormBuilder } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { MatSelect } from '@angular/material/select';\r\nimport { Language } from 'src/app/shared/modul/language';\r\n\r\n@Component({\r\n selector: 'app-language-settings',\r\n templateUrl: './language-settings.component.html',\r\n styleUrls: ['./language-settings.component.scss']\r\n})\r\nexport class LanguageSettingsComponent implements OnInit, OnDestroy {\r\n \r\n private subscriptions : Subscription[] = [];\r\n\r\n public isLoading: boolean = true;\r\n public availableLanguages: Language[] = [];\r\n public selectedLanguage: Language = null;\r\n \r\n constructor(\r\n private languageService:LanguageService\r\n ) { }\r\n\r\n ngOnInit() \r\n {\r\n this.subscriptions.push(this.languageService.getAllLanguages().subscribe( languages => {\r\n this.availableLanguages = languages.filter ( x => x.isActive);\r\n\r\n let index = this.availableLanguages.findIndex( x => x.code == this.languageService.currentLanguage.code);\r\n if (index > -1)\r\n {\r\n this.selectedLanguage = this.availableLanguages[index];\r\n } \r\n else\r\n {\r\n console.error(\"Could not find language for code: \" + this.languageService.currentLanguage.code);\r\n }\r\n this.isLoading = false; \r\n }));\r\n\r\n // subscribe for new flag\r\n this.subscriptions.push(this.languageService.languageChangeSubject.subscribe(language => {\r\n\r\n if(this.availableLanguages)\r\n {\r\n let index = this.availableLanguages.findIndex( x => x.code == language.code);\r\n if (index > -1)\r\n {\r\n this.selectedLanguage = this.availableLanguages[index];\r\n }\r\n else\r\n {\r\n console.error(\"Could not find availableLanguage for code: \" + language.code);\r\n }\r\n }\r\n \r\n }));\r\n }\r\n\r\n\r\n\r\n updateLanguage(event) : void\r\n {\r\n this.languageService.setLanguage(event.value.id);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach(s => s.unsubscribe());\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { CompanyService } from 'src/app/shared/services/company.service';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-legal-notice',\r\n templateUrl: './legal-notice.component.html',\r\n styleUrls: ['./legal-notice.component.scss']\r\n})\r\nexport class LegalNoticeComponent implements OnInit, OnDestroy\r\n{\r\n\r\n private subscriptions : Subscription[] = [];\r\n public legalNotice: string;\r\n\r\n constructor(private companyService: CompanyService, private translateService: TranslateService, public title: Title) { }\r\n\r\n ngOnInit()\r\n {\r\n this.subscriptions.push(this.translateService.get(['APPLICATION_TITLE','MENU.LEGAL_NOTICE']).subscribe((translation: [string]) => {\r\n this.title.setTitle(translation['APPLICATION_TITLE'] + \" > \" + translation['MENU.LEGAL_NOTICE']); \r\n }));\r\n\r\n this.subscriptions.push(this.companyService.getLegalNotice().subscribe(data => {\r\n this.legalNotice = data.legalNotice;\r\n }));\r\n }\r\n\r\n ngOnDestroy()\r\n {\r\n this.subscriptions.forEach(s => s.unsubscribe());\r\n }\r\n\r\n}\r\n","
\r\n

{{'MENU.LEGAL_NOTICE' | translate}}

\r\n
\r\n \r\n \r\n \r\n\r\n
\r\n
","\r\n\r\n\r\n\r\n// https://stackblitz.com/angular/lpnkmavgqao?file=app%2Flist-selection-example.html\r\n\r\n// https://material.angular.io/components/radio/overview\r\n\r\nimport { Component, OnInit, Output, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { ILocation } from '../../shared/model/location';\r\nimport { LocationService } from 'src/app/shared/services/location.service';\r\nimport { UntypedFormGroup, Validators, UntypedFormBuilder } from '@angular/forms';\r\nimport { MatRadioChange } from '@angular/material/radio';\r\nimport { Router } from '@angular/router';\r\nimport { UserConcernService } from 'src/app/shared/services/userconcern.service';\r\nimport { CustomerService } from 'src/app/shared/services/customer.service';\r\nimport { MessageService } from 'src/app/shared/services/messages.service';\r\nimport { GlobalSettings } from 'src/app/shared/config/globalsettings';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ServerSettingService } from 'src/app/shared/services/server-setting.service';\r\nimport { LanguageService } from 'src/app/shared/services/language.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-location',\r\n templateUrl: './location.component.html',\r\n styleUrls: ['./location.component.scss']\r\n})\r\n\r\n\r\n\r\n// todo: implement detail page in overlay\r\n// idea: display the location on the right in a map.\r\nexport class LocationComponent implements OnInit, OnDestroy\r\n{\r\n\r\n private classame = (this).constructor.name;\r\n private subscriptions : Subscription[] = [];\r\n APPLICATION_TITLE: string\r\n globalSettings: GlobalSettings = new GlobalSettings();\r\n nextStepIsEnabled: boolean = false;\r\n\r\n formFielsAreDisabled: boolean = false;\r\n locations: ILocation[];\r\n location: ILocation;\r\n frmLocation: UntypedFormGroup;\r\n textRessource: any;\r\n translationTitleObject: any;\r\n public isLoading = true;\r\n\r\n @Output() notifyLocationChange: EventEmitter = new EventEmitter();\r\n\r\n smallscreen: boolean;\r\n constructor(\r\n private locationService: LocationService,\r\n private userConcernService: UserConcernService,\r\n private formBuilder: UntypedFormBuilder,\r\n private router: Router,\r\n private customerService: CustomerService,\r\n private messageService: MessageService,\r\n public translate: TranslateService,\r\n public languageService: LanguageService,\r\n private globalSettingsServices: ServerSettingService,\r\n private title: Title,\r\n\r\n )\r\n {\r\n \r\n }\r\n\r\n\r\n ngOnInit()\r\n {\r\n \r\n this.smallscreen = true;\r\n \r\n this.frmLocation = this.formBuilder.group({\r\n 'locationChoice': ['', Validators.required],\r\n // 'messageText': ['', Validators.required]\r\n });\r\n\r\n\r\n this.nextStepIsEnabled = this.frmLocation.valid;\r\n\r\n this.subscriptions.push( this.customerService.notifyFormSent.subscribe(\r\n customerFormSent =>\r\n {\r\n this.setReadonlyForm(customerFormSent)\r\n }\r\n ));\r\n\r\n }\r\n\r\n\r\n // not sure if subscription here is the best way.\r\n // as the method is called in the stepper.\r\n getLocations(): void\r\n {\r\n this.subscriptions.push(this.locationService.getLocations(this.userConcernService.getUserConcerns(), this.userConcernService.getEmployee())\r\n .subscribe(locations =>\r\n {\r\n this.locations = locations;\r\n var employee = this.userConcernService.getEmployee();\r\n if(!GlobalSettings.isEmpty(employee))\r\n {\r\n locations = locations.filter(location => location.id == employee.fieldOfficeId);\r\n }\r\n this.isLoading = false;\r\n if(locations.length == 1)\r\n {\r\n this.frmLocation.controls[\"locationChoice\"].setValue(locations[0].id);\r\n var tmp = {\r\n value: locations[0].id\r\n }\r\n this.onLocationChange(tmp);\r\n }\r\n }\r\n ));\r\n }\r\n\r\n setReadonlyForm(isSent: boolean)\r\n {\r\n this.formFielsAreDisabled = true;\r\n this.frmLocation.get(\"locationChoice\").disable();\r\n \r\n this.nextStepIsEnabled = true;\r\n\r\n \r\n };\r\n\r\n public formatString(date : Date): string\r\n {\r\n return new Date(date).toLocaleString([], {year: 'numeric', month: 'numeric', day: 'numeric', hour: '2-digit', minute: '2-digit'});\r\n }\r\n\r\n\r\n onLocationChange(mrChange: any)\r\n {\r\n\r\n\r\n let locationId = mrChange.value;\r\n let location: ILocation = this.locations.find(x => x.id == locationId);\r\n\r\n // not sure if it should kept here, at the end the calendar must react on changes somewhere\r\n // currently the app-storage has the notification for that.\r\n\r\n\r\n // currently the stepper is doing the changes.\r\n\r\n // TER-390\r\n // calls the calendar service api\r\n //moved to stepper now.\r\n //this.locationService.changeSelectedLocation(location);\r\n\r\n this.notifyLocationChange.emit(location);\r\n\r\n this.nextStepIsEnabled = this.frmLocation.valid;\r\n\r\n\r\n }\r\n\r\n\r\n ngOnDestroy(): void\r\n {\r\n this.subscriptions.forEach(s => s.unsubscribe() );\r\n }\r\n\r\n}\r\n","\r\n \r\n \r\n \r\n
\r\n

{{'LOADING' | translate}}

\r\n
\r\n
\r\n\r\n
\r\n

{{'LOCATION.TITLE' | translate}}

\r\n
{{'LOCATION.HEADER_TEXT' | translate}}
\r\n \r\n \r\n \r\n
\r\n
\r\n {{location.name}}\r\n
\r\n
\r\n {{location.name}}\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n {{ 'LOCATION.NEXT_AVAILABLE_DATE' | translate }}{{ formatString(location.firstPossibleAppointment)}}\r\n
\r\n
\r\n \r\n {{'LOCATION.NOT_AVAILABLE_TEXT' | translate}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n Keine Standorte gefunden.\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { QFlexQRScanHistoryDto, QFlexQRScanInformationDto, QFlexQRScanInformationWithTicketImageDto, QRScanSettingsDto } from './q-flex-qr-scan.model';\r\nimport { QFlexQrScanService } from './q-flex-qr-scan.service';\r\nimport { CommonModule } from '@angular/common'; \r\nimport { BrowserModule } from '@angular/platform-browser';\r\n// import { ThrowStmt } from '@angular/compiler';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { QFlexSecurityPopupComponent } from './q-flex-security-popup/q-flex-security-popup.component';\r\nimport { Observable } from 'rxjs';\r\nimport { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-q-flex-qr-scan',\r\n templateUrl: './q-flex-qr-scan.component.html',\r\n styleUrls: ['./q-flex-qr-scan.component.scss']\r\n})\r\nexport class QFlexQrScanComponent implements OnInit \r\n{\r\n\r\n public settingsDto: QRScanSettingsDto = null;\r\n public isLoading: boolean = true;\r\n public enableFeature: boolean = false;\r\n public displayPrivateInfo: boolean = false;\r\n public displayHistory: boolean = false;\r\n public showGeneralInfo: boolean = true;\r\n\r\n private securityValue: string = \"\";\r\n private ticketId: string = null;\r\n\r\n public generalInfo: QFlexQRScanInformationWithTicketImageDto= null;\r\n public ticketImageString: string = null;\r\n\r\n public privateInfo: QFlexQRScanInformationDto = null;\r\n\r\n public history: QFlexQRScanHistoryDto = null;\r\n\r\n // HistorySettings\r\n public showTimestamp: boolean;\r\n public showEvent: boolean;\r\n public showNode: boolean;\r\n public showUser: boolean;\r\n public showEventInfo: boolean;\r\n\r\n // LeaveQueue\r\n public showError: boolean = false;\r\n public leaveQueueSuccessfull : boolean = false;\r\n\r\n // reload\r\n private hasLoadedGeneralInfoBefore: boolean = false;\r\n private hasLoadedPrivateInfoBefore: boolean = false;\r\n private hasLoadedHistoryBefore: boolean = false;\r\n public reloadDisabled: boolean = false;\r\n public timeTillReload: number = 10;\r\n private reloadTimer : any;\r\n\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private qrScanService: QFlexQrScanService,\r\n private translateService: TranslateService,\r\n public dialog: MatDialog\r\n ) \r\n { \r\n\r\n }\r\n\r\n ngOnInit() \r\n {\r\n this.ticketId = this.route.snapshot.paramMap.get('id');\r\n this.isLoading = true;\r\n this.qrScanService.getQRSettings(this.ticketId).subscribe(settings => \r\n {\r\n this.isLoading = false;\r\n this.settingsDto = settings;\r\n this.enableFeature = settings.useTicketInfoViaScanFeature;\r\n if(settings.ticketImageDataString != null && settings.ticketImageDataString != \"\")\r\n {\r\n this.ticketImageString = '';\r\n }\r\n else\r\n {\r\n this.settingsDto.showTicketImage = false;\r\n }\r\n \r\n this.getCheckedGeneralInfo(false);\r\n });\r\n }\r\n\r\n public reload(): void\r\n {\r\n this.reloadDisabled = true;\r\n this.reloadTimer = setInterval(() => {\r\n if(this.timeTillReload <= 1)\r\n {\r\n this.reloadDisabled = false;\r\n this.timeTillReload = 10;\r\n clearInterval(this.reloadTimer);\r\n }\r\n else\r\n {\r\n this.timeTillReload--;\r\n }\r\n }, 1000);\r\n if(this.settingsDto.securityQuestionEveryTime)\r\n {\r\n let requireSecurityCheck = false;\r\n requireSecurityCheck = this.settingsDto.protectGeneralInformation && this.hasLoadedGeneralInfoBefore;\r\n if(!requireSecurityCheck)\r\n {\r\n requireSecurityCheck = this.settingsDto.protectPersonalInformation && this.hasLoadedPrivateInfoBefore;\r\n }\r\n if(!requireSecurityCheck)\r\n {\r\n requireSecurityCheck = this.settingsDto.protectHistory && this.hasLoadedHistoryBefore;\r\n }\r\n if(requireSecurityCheck)\r\n {\r\n this.openSecurityQuestion(false).subscribe( result =>\r\n {\r\n if(result == null)\r\n {\r\n return;\r\n }\r\n this.securityValue = \"\" + result;\r\n this.handleIndividualDataReload();\r\n });\r\n }\r\n else\r\n {\r\n this.handleIndividualDataReload();\r\n }\r\n }\r\n else\r\n {\r\n this.handleIndividualDataReload();\r\n }\r\n }\r\n private handleIndividualDataReload(): void\r\n {\r\n if(this.hasLoadedGeneralInfoBefore)\r\n {\r\n this.getGeneralInfo();\r\n }\r\n if(this.hasLoadedPrivateInfoBefore)\r\n {\r\n this.getPrivateInfo();\r\n }\r\n if(this.hasLoadedHistoryBefore)\r\n {\r\n this.getHistory();\r\n }\r\n }\r\n\r\n // ---------------- General Info -------------------\r\n public toggleGeneralInfo()\r\n {\r\n if(!this.showGeneralInfo)\r\n {\r\n this.showGeneralInfo = true;\r\n if(this.generalInfo == null)\r\n {\r\n this.getCheckedGeneralInfo(false);\r\n }\r\n }\r\n else\r\n {\r\n this.showGeneralInfo = false;\r\n }\r\n }\r\n\r\n private getCheckedGeneralInfo(wrongAnswer: boolean)\r\n {\r\n if(!this.settingsDto.protectGeneralInformation ||\r\n (wrongAnswer == false && !this.settingsDto.securityQuestionEveryTime && this.securityValue != \"\" && this.securityValue != null && this.securityValue != undefined && wrongAnswer == false))\r\n {\r\n this.getGeneralInfo();\r\n return;\r\n }\r\n \r\n this.openSecurityQuestion(wrongAnswer).subscribe( result =>\r\n {\r\n if(result == null)\r\n {\r\n this.generalInfo = null;\r\n this.showGeneralInfo = false;\r\n return;\r\n }\r\n this.securityValue = \"\" + result;\r\n this.getGeneralInfo();\r\n });\r\n }\r\n\r\n private getGeneralInfo(): void\r\n {\r\n this.isLoading = true;\r\n this.qrScanService.getGeneralInfo(this.securityValue, this.ticketId).subscribe(info =>\r\n {\r\n this.isLoading = false;\r\n this.hasLoadedGeneralInfoBefore = true;\r\n // success = 0,\r\n // failed = 1,\r\n // noData = 2\r\n if(info.securitySuccessType == 0)\r\n {\r\n this.generalInfo = info;\r\n if(info.imageData != null && info.imageData?.length > 0)\r\n {\r\n this.ticketImageString = '';\r\n }\r\n \r\n if( (info.imageData == null || info.imageData?.length <1) && (this.settingsDto.ticketImageDataString == null || this.settingsDto.ticketImageDataString?.length <1) )\r\n {\r\n this.settingsDto.showTicketImage = false;\r\n }\r\n }\r\n else if(info.securitySuccessType == 1)\r\n {\r\n this.securityValue = \"\";\r\n this.getCheckedGeneralInfo(true);\r\n }\r\n else if(info.securitySuccessType == 2)\r\n {\r\n this.generalInfo = null;\r\n }\r\n \r\n },\r\n (error) =>\r\n {\r\n this.isLoading = false;\r\n });\r\n }\r\n\r\n // ------------------- Private Info -------------------- \r\n public togglePrivateInfo()\r\n {\r\n if(!this.displayPrivateInfo)\r\n {\r\n if(!this.settingsDto.showPrivateInformationButton)\r\n {\r\n return;\r\n }\r\n\r\n this.displayPrivateInfo = true;\r\n if(this.privateInfo == null)\r\n {\r\n this.getCheckedPrivateInfo(false);\r\n }\r\n \r\n }\r\n else\r\n {\r\n this.displayPrivateInfo = false;\r\n }\r\n }\r\n private getCheckedPrivateInfo(wrongAnswer: boolean)\r\n {\r\n if(!this.settingsDto.protectPersonalInformation ||\r\n (wrongAnswer == false && !this.settingsDto.securityQuestionEveryTime && this.securityValue != \"\" && this.securityValue != null && this.securityValue != undefined))\r\n {\r\n this.getPrivateInfo();\r\n return;\r\n }\r\n\r\n let securitySubscription = this.openSecurityQuestion(wrongAnswer).subscribe( result =>\r\n {\r\n if(result == null)\r\n {\r\n this.privateInfo = null;\r\n this.displayPrivateInfo = false;\r\n return;\r\n }\r\n this.securityValue = \"\" + result;\r\n this.getPrivateInfo();\r\n });\r\n }\r\n private getPrivateInfo()\r\n {\r\n this.isLoading = true;\r\n this.qrScanService.getPrivateInfo(this.securityValue, this.ticketId).subscribe(info =>\r\n {\r\n this.isLoading = false;\r\n this.hasLoadedPrivateInfoBefore = true;\r\n // success = 0,\r\n // failed = 1,\r\n // noData = 2\r\n if(info.securitySuccessType == 0)\r\n {\r\n this.privateInfo = info;\r\n }\r\n else if(info.securitySuccessType == 1)\r\n {\r\n this.securityValue = \"\";\r\n this.getCheckedPrivateInfo(true);\r\n }\r\n else if(info.securitySuccessType == 2)\r\n {\r\n this.privateInfo = null;\r\n } \r\n },\r\n (error)=>{\r\n this.isLoading = false;\r\n });\r\n }\r\n\r\n\r\n // --------------------- History ---------------------\r\n public toggleHistory()\r\n {\r\n if(!this.displayHistory)\r\n {\r\n if(!this.settingsDto.showTicketHistory)\r\n {\r\n return;\r\n }\r\n this.displayHistory = true;\r\n if(this.history == null)\r\n {\r\n this.getCheckedHistory(false);\r\n }\r\n }\r\n else\r\n {\r\n this.displayHistory = false;\r\n }\r\n }\r\n private getCheckedHistory(wrongAnswer: boolean)\r\n {\r\n if(!this.settingsDto.protectHistory ||\r\n (wrongAnswer == false && !this.settingsDto.securityQuestionEveryTime && this.securityValue != \"\" && this.securityValue != null && this.securityValue != undefined))\r\n {\r\n this.getHistory();\r\n return;\r\n }\r\n let securitySubscription = this.openSecurityQuestion(wrongAnswer).subscribe( result =>\r\n {\r\n if(result == null)\r\n {\r\n this.history = null;\r\n this.displayHistory = false;\r\n return;\r\n }\r\n this.securityValue = \"\" + result;\r\n this.getHistory();\r\n });\r\n }\r\n private getHistory()\r\n {\r\n this.isLoading = true;\r\n this.qrScanService.getHistory(this.securityValue, this.ticketId).subscribe(info =>\r\n {\r\n this.isLoading = false;\r\n this.hasLoadedHistoryBefore = true;\r\n // success = 0,\r\n // failed = 1,\r\n // noData = 2\r\n if(info.securitySuccessType == 0)\r\n {\r\n this.history = info;\r\n if(this.history)\r\n {\r\n if(this.history.information.length > 0)\r\n {\r\n let eventVal = this.history.information[0].localizations[0].event;\r\n let timestampVal = this.history.information[0].localizations[0].timestamp;\r\n let nodeVal = this.history.information[0].localizations[0].node;\r\n let userVal = this.history.information[0].localizations[0].user;\r\n let eventInfoVal = this.history.information[0].localizations[0].eventInfo;\r\n\r\n this.showEvent = !(eventVal == null || eventVal == \"\" || eventVal == undefined);\r\n this.showTimestamp = !(timestampVal == null || timestampVal == \"\" || timestampVal == undefined);\r\n this.showNode = !(nodeVal == null || nodeVal == \"\" || nodeVal == undefined);\r\n this.showUser = !(userVal == null || userVal == \"\" || userVal == undefined);\r\n this.showEventInfo = !(eventInfoVal == null || eventInfoVal == \"\" || eventInfoVal == undefined);\r\n\r\n }\r\n }\r\n }\r\n else if(info.securitySuccessType == 1)\r\n {\r\n this.securityValue = \"\";\r\n this.getCheckedHistory(true);\r\n }\r\n else if(info.securitySuccessType == 2)\r\n {\r\n this.history = null;\r\n }\r\n \r\n },\r\n (error) => \r\n {\r\n this.isLoading = false;\r\n });\r\n }\r\n\r\n // ---------------------- Exit Queue -------------------\r\n public async exitQueue(): Promise\r\n {\r\n this.showError = false;\r\n \r\n const msg = await this.translateService.get('QRScan.ExitQueueWarningText').toPromise();\r\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\r\n disableClose: true,\r\n width: '95%',\r\n maxWidth: '95vw',\r\n data: msg\r\n });\r\n\r\n const result = await dialogRef.afterClosed().toPromise();\r\n if(result == true)\r\n {\r\n this.exitQueueSecutiryCheck(false);\r\n }\r\n }\r\n private exitQueueSecutiryCheck(wrongAnswer: boolean)\r\n {\r\n if(!this.settingsDto.protectExitQueueButton ||\r\n (wrongAnswer == false && !this.settingsDto.securityQuestionEveryTime && this.securityValue != \"\" && this.securityValue != null && this.securityValue != undefined))\r\n {\r\n this.executeExitQueue();\r\n return;\r\n }\r\n\r\n let securitySubscription = this.openSecurityQuestion(wrongAnswer).subscribe( result =>\r\n {\r\n if(result == null)\r\n {\r\n return;\r\n }\r\n this.securityValue = \"\" + result;\r\n this.executeExitQueue();\r\n });\r\n }\r\n\r\n private executeExitQueue()\r\n {\r\n this.isLoading = true;\r\n this.qrScanService.exitQueue(this.securityValue, this.ticketId).subscribe(info =>\r\n {\r\n this.isLoading = false;\r\n // success = 0,\r\n // failed = 1,\r\n // noData = 2\r\n if(info.securitySuccessType == 1)\r\n {\r\n this.exitQueueSecutiryCheck(true);\r\n }\r\n else if(info.success)\r\n {\r\n this.history = null;\r\n this.generalInfo = null;\r\n this.privateInfo = null;\r\n this.leaveQueueSuccessfull = true;\r\n }\r\n else\r\n {\r\n this.showError = true;\r\n }\r\n \r\n },\r\n (error) => \r\n {\r\n this.isLoading = false;\r\n });\r\n }\r\n\r\n // ------------- All data --------------------\r\n private openSecurityQuestion(wrongAnswer: boolean): Observable\r\n {\r\n const dialogRef = this.dialog.open(QFlexSecurityPopupComponent, {\r\n disableClose: true,\r\n width: '95%',\r\n maxWidth: '95vw',\r\n data: {requirement: this.settingsDto.securityQuestionRequirement, wrongAnswer: wrongAnswer},\r\n });\r\n\r\n return dialogRef.afterClosed();\r\n }\r\n\r\n\r\n\r\n\r\n public bookAppointment()\r\n {\r\n this.router.navigate(['book-appointment/init']);\r\n }\r\n\r\n}\r\n","
\r\n \r\n
\r\n \r\n \r\n
\r\n

{{'QRScan.FeatureUnavailable' | translate}}

\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n

{{'QRScan.LeftQueue' |translate}}

\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n \r\n

{{'QRScan.Error' | translate}}

\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n

{{\"QRScan.GeneralTitle\" | translate}}

\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n {{info | defaultTranslation: 'name'}}:\r\n {{info | defaultTranslation: 'value'}}\r\n \r\n
\r\n

{{'QRScan.NoData' | translate}}\r\n

\r\n\r\n \r\n
\r\n
\r\n

{{\"QRScan.PersonalInfoTitle\" | translate}}

\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n {{info | defaultTranslation: 'name'}}:\r\n {{info | defaultTranslation: 'value'}}\r\n \r\n
\r\n

{{'QRScan.NoData' |\r\n translate}}

\r\n\r\n \r\n
\r\n
\r\n

{{\"QRScan.HistoryTitle\" | translate}}

\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{'QRScan.Timestamp' | translate}}{{'QRScan.Event' | translate}}{{'QRScan.EventInfo' | translate}}{{'QRScan.Node' | translate}}{{'QRScan.User' | translate}}
{{entry | defaultTranslation: 'timestamp'}}{{entry | defaultTranslation: 'event'}}{{entry | defaultTranslation: 'eventInfo'}}{{entry | defaultTranslation: 'node'}}{{entry | defaultTranslation: 'user'}}
\r\n\r\n
\r\n

{{'QRScan.NoData' | translate}}

\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
","import { ObserversModule } from '@angular/cdk/observers';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ConfigSettingsService } from 'src/app/shared/services/config-settings.service';\r\nimport { QFlexQRScanHistoryDto, QFlexQRScanInformationDto, QFlexQRScanInformationWithTicketImageDto, QFlexQRScanLeaveQueueResponseDto, QFlexQRScanTicketInformationDto, QRScanSettingsDto, SecurityDto } from './q-flex-qr-scan.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class QFlexQrScanService \r\n{\r\n\r\n constructor(private http: HttpClient, private configSettingsService: ConfigSettingsService) {\r\n\r\n }\r\n\r\n public getQRSettings(id: string): Observable\r\n {\r\n return this.http.get(this.configSettingsService.configSettings.apiUrl + \"/api/qflex/get-qr-scan-settings/\" + id);\r\n }\r\n\r\n public getGeneralInfo(securityValue: string, id: string): Observable\r\n {\r\n let dto: SecurityDto = \r\n {\r\n id: id,\r\n securityValue: securityValue\r\n };\r\n return this.http.post(this.configSettingsService.configSettings.apiUrl + \"/api/qflex/get-qr-general-info/\", dto);\r\n }\r\n\r\n public getPrivateInfo(securityValue: string, id: string): Observable\r\n {\r\n let dto: SecurityDto = \r\n {\r\n id: id,\r\n securityValue: securityValue\r\n };\r\n return this.http.post(this.configSettingsService.configSettings.apiUrl + \"/api/qflex/get-qr-private-info/\", dto);\r\n }\r\n\r\n public getHistory(securityValue: string, id: string): Observable\r\n {\r\n let dto: SecurityDto = \r\n {\r\n id: id,\r\n securityValue: securityValue\r\n };\r\n return this.http.post(this.configSettingsService.configSettings.apiUrl + \"/api/qflex/get-qr-history/\", dto);\r\n }\r\n\r\n public exitQueue(securityValue: string, id: string): Observable\r\n {\r\n let dto: SecurityDto = \r\n {\r\n id: id,\r\n securityValue: securityValue\r\n };\r\n return this.http.post(this.configSettingsService.configSettings.apiUrl + \"/api/qflex/qr-leave-queue/\", dto);\r\n }\r\n}\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { RequirementBlueprintDto } from 'src/app/shared/model/requirement-blueprint-dto.model';\r\nimport { QFlexQrScanService } from '../q-flex-qr-scan.service';\r\n\r\n@Component({\r\n selector: 'app-q-flex-security-popup',\r\n templateUrl: './q-flex-security-popup.component.html',\r\n styleUrls: ['./q-flex-security-popup.component.scss']\r\n})\r\nexport class QFlexSecurityPopupComponent implements OnInit {\r\n\r\n public enteredSecurityValue: any = null;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: {requirement: RequirementBlueprintDto, wrongAnswer: boolean}\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public checkSecurityValue()\r\n {\r\n this.dialogRef.close(this.enteredSecurityValue);\r\n }\r\n\r\n public cancel()\r\n {\r\n this.dialogRef.close(null);\r\n }\r\n\r\n}\r\n","\r\n
\r\n \r\n
\r\n \r\n

\r\n privacy_tip\r\n \r\n \r\n
\r\n \r\n\r\n

{{'QRScan.SecurityQuestionWrong' | translate}}

\r\n

{{'QRScan.SecurityQuestionTitle' | translate}}

\r\n\r\n
\r\n

{{data.requirement | defaultTranslation: 'name'}}:

\r\n\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { ConfigSettingsService } from \"src/app/shared/services/config-settings.service\";\r\nimport { QFlexTicketInfoDto } from \"./q-flex-ticket-info-dto.model\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class QFlexTicketInfoService\r\n{\r\n\r\n constructor(private http: HttpClient, private configSettingsService: ConfigSettingsService)\r\n {\r\n }\r\n\r\n\r\n public getTicketInfo(processHandle: string): Observable\r\n {\r\n return this.http.get(this.configSettingsService.configSettings.apiUrl + \"/api/qflex/GetStatisticsByProcessHandle/\" + processHandle);\r\n }\r\n\r\n}\r\n","\r\n\r\n
\r\n

{{'Q-FLEX.Title' | translate}}

\r\n

{{'Q-FLEX.TicketInformationExplanaition' | translate}}

\r\n
\r\n
\r\n \r\n {{'Q-FLEX.TicketInput' | translate}}\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n

{{'Q-FLEX.WaitingCustomers' | translate}} {{dto.waitingCustomers}}

\r\n

0\">{{'Q-FLEX.AverageWaitingTime' | translate}} {{dto.averageWaitingTime}}

\r\n

{{'Q-FLEX.NoWaitingTimeInformation' | translate}}

\r\n
\r\n
\r\n

{{'Q-FLEX.NoInformationAvailable' | translate}}

\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { QFlexTicketInfoDto } from './q-flex-ticket-info-dto.model';\r\nimport { QFlexTicketInfoService } from './q-flex-ticket-info.service';\r\n\r\n@Component({\r\n selector: 'app-q-flex',\r\n templateUrl: './q-flex.component.html',\r\n styleUrls: ['./q-flex.component.scss']\r\n})\r\nexport class QFlexComponent implements OnInit\r\n{\r\n\r\n private translationTitleObject: string[];\r\n public dto: QFlexTicketInfoDto;\r\n public searchDisabled: boolean = true;\r\n constructor(private ticketInfoService: QFlexTicketInfoService,\r\n private route: ActivatedRoute, \r\n public title: Title,\r\n private translate: TranslateService) { }\r\n\r\n ngOnInit(): void\r\n {\r\n const ticket = this.route.snapshot.paramMap.get('ticket');\r\n if (ticket)\r\n {\r\n ( document.getElementById(\"ticketInput\")).value = ticket;\r\n this.check();\r\n }\r\n\r\n this.translate.get(['APPLICATION_TITLE','MENU.Q-FLEX']).subscribe((translation: [string]) => {\r\n this.translationTitleObject = translation;\r\n this.title.setTitle(this.translationTitleObject['APPLICATION_TITLE'] + \" > \" + this.translationTitleObject['MENU.Q-FLEX']);\r\n });\r\n }\r\n\r\n public check(): void\r\n {\r\n var input = ( document.getElementById(\"ticketInput\")).value;\r\n this.ticketInfoService.getTicketInfo(input).subscribe(result => this.dto = result);\r\n this.searchDisabled = true;\r\n setTimeout(() => this.inputChanged(), 10000);\r\n }\r\n\r\n public inputChanged():void \r\n {\r\n this.searchDisabled = ( document.getElementById(\"ticketInput\")).value.length <= 0;\r\n }\r\n\r\n}\r\n","\r\nServices:\r\n
\r\n
\r\n {{getConcern(userconcern.id)}}\r\n / Anzahl: {{userconcern.quantity}}\r\n \r\n
\r\n
\r\n\r\n
{{userConcernEmpty}}
\r\n
","\r\nimport { Component, OnInit, Input, EventEmitter, Output, OnDestroy } from '@angular/core';\r\n\r\nimport { IUserConcern } from 'src/app/shared/model/userconcern';\r\nimport { UserConcernService } from '../../shared/services/userconcern.service';\r\nimport { ConcernService } from 'src/app/shared/services/concern.service';\r\nimport { IConcern } from 'src/app/shared/model/concern';\r\nimport { MessageService } from 'src/app/shared/services/messages.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'app-userconcern',\r\n templateUrl: './userconcern.component.html',\r\n styleUrls: ['./userconcern.component.scss']\r\n})\r\n\r\n\r\n\r\nexport class UserconcernComponent implements OnInit, OnDestroy {\r\n\r\n\r\n//todo remove component!\r\n\r\nprivate subscriptions : Subscription[] = [];\r\n\r\n locationResource = 'Standord:';\r\n \r\n title = 'Bereits gewählte Anliegen:';\r\n userConcernEmpty = 'kein Anliegen ausgewählt';\r\n appointmentContinue = 'zur Terminvereinbarung';\r\n\r\n userconcerns: IUserConcern[];\r\n concerns: IConcern[];\r\n\r\n private classame = (this).constructor.name;\r\n\r\n\r\n constructor(\r\n private userconcernService: UserConcernService, \r\n private concernService: ConcernService,\r\n private messageService: MessageService\r\n ) { }\r\n\r\n ngOnInit() {\r\n\r\n this.getConcerns();\r\n this.getUserConcerns()\r\n\r\n }\r\n\r\n\r\n getConcerns(): void {\r\n this.subscriptions.push(this.concernService.getConcerns().subscribe(\r\n concerns => this.concerns = concerns\r\n ));\r\n }\r\n\r\n getUserConcerns(): void {\r\n this.subscriptions.push(this.userconcernService.getUserConcerns$().subscribe(userconcerns => {\r\n this.userconcerns = userconcerns\r\n }));\r\n }\r\n\r\n\r\n add(userconcern: IUserConcern): void {\r\n\r\n }\r\n\r\n delete(userconcern: IUserConcern): void {\r\n\r\n if (userconcern.quantity === 1) {\r\n \r\n this.userconcernService.deleteUserConcern(userconcern);\r\n\r\n this.userconcerns = this.userconcerns.filter(x => x !== userconcern);\r\n } else {\r\n \r\n \r\n }\r\n }\r\n\r\n deleteAllData(): void {\r\n \r\n }\r\n\r\n deleteUserConcerns(): void{\r\n \r\n }\r\n \r\n\r\n\r\n ngOnDestroy()\r\n {\r\n this.subscriptions.forEach(s => s.unsubscribe());\r\n }\r\n}\r\n","export class GlobalSettings \r\n{\r\n\r\n public static isEmpty(val)\r\n {\r\n return (val === undefined || val == null || val.length <= 0);\r\n }\r\n\r\n}","import { Directive, ElementRef } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Directive({\r\n selector: '[appPageAttributes]'\r\n})\r\nexport class PageAttributesDirective {\r\n\r\n translationObject: any;\r\n constructor(\r\n private el: ElementRef,\r\n private title: Title,\r\n private translate: TranslateService) {\r\n\r\n }\r\n\r\n\r\n ngAfterContentInit(){\r\n // todo: want to set the this.el.nativeElement.innerHTML\r\n // but this works only with static html\r\n // herefore currently we have the tilte of the index.html\r\n //this.translationObject = this.translate.get(\"APPLICATION_TITLE\"); \r\n \r\n // this.title = \"xyz\";\r\n \r\n this.title.setTitle(this.el.nativeElement.innerHTML);\r\n\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ElementRef, AfterViewInit, Input, OnChanges, SimpleChanges, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-filter',\r\n templateUrl: './filter.component.html',\r\n styleUrls: ['./filter.component.scss']\r\n})\r\n\r\n// not used yet. from Kurata course. Maybe use for later\r\nexport class FilterComponent implements OnInit, AfterViewInit, OnChanges {\r\n \r\n @Input() displayDetail: boolean;\r\n @Input() hitCount: number;\r\n \r\n hitMessage: string;\r\n @ViewChild('filterElement', { static: true }) filterElementRef: ElementRef;\r\n\r\n @Output() valueChange: EventEmitter = new EventEmitter();\r\n \r\n \r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n //focus element\r\n if (this.filterElementRef.nativeElement){\r\n this.filterElementRef.nativeElement.focus();\r\n }\r\n }\r\n \r\n // getter and setter for the input field.\r\n private _listFilter: string;\r\n get listFilter(): string {\r\n return this._listFilter;\r\n }\r\n set listFilter(value: string) {\r\n this._listFilter = value;\r\n this.valueChange.emit(value);\r\n }\r\n\r\n //react on changes of the input hitcount\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['hitCount'] && !changes['hitCount'].currentValue) {\r\n this.hitMessage = 'No matches found';\r\n } else {\r\n this.hitMessage = 'Hits:' + this.hitCount;\r\n }\r\n }\r\n\r\n\r\n\r\n \r\n \r\n\r\n\r\n}\r\n","
\r\n
Filter by:
\r\n
\r\n \r\n
\r\n
\r\n \r\n","import {A11yModule} from '@angular/cdk/a11y';\r\nimport {DragDropModule} from '@angular/cdk/drag-drop';\r\nimport {PortalModule} from '@angular/cdk/portal';\r\nimport {ScrollingModule} from '@angular/cdk/scrolling';\r\nimport {CdkStepperModule} from '@angular/cdk/stepper';\r\nimport {CdkTableModule} from '@angular/cdk/table';\r\nimport {CdkTreeModule} from '@angular/cdk/tree';\r\nimport {NgModule} from '@angular/core';\r\n\r\nimport {MDCRipple} from '@material/ripple';\r\n\r\n\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatBottomSheetModule } from '@angular/material/bottom-sheet';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatNativeDateModule, MatRippleModule } from '@angular/material/core';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatGridListModule } from '@angular/material/grid-list';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatTreeModule } from '@angular/material/tree';\r\nimport { UserSettingsPipe } from './pipe/user-settings.pipe';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n\r\n@NgModule({\r\n exports: [\r\n A11yModule,\r\n CdkStepperModule,\r\n CdkTableModule,\r\n CdkTreeModule,\r\n DragDropModule,\r\n MatAutocompleteModule,\r\n MatBadgeModule,\r\n MatBottomSheetModule,\r\n MatButtonModule,\r\n MatButtonToggleModule,\r\n MatCardModule,\r\n MatCheckboxModule,\r\n MatChipsModule,\r\n MatStepperModule,\r\n MatDatepickerModule,\r\n MatDialogModule,\r\n MatDividerModule,\r\n MatExpansionModule,\r\n MatGridListModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatListModule,\r\n MatMenuModule,\r\n MatNativeDateModule,\r\n MatPaginatorModule,\r\n MatProgressBarModule,\r\n MatProgressSpinnerModule,\r\n MatRadioModule,\r\n MatRippleModule,\r\n MatSelectModule,\r\n MatSidenavModule,\r\n MatSliderModule,\r\n MatSlideToggleModule,\r\n MatSnackBarModule,\r\n MatSortModule,\r\n MatTableModule,\r\n MatTabsModule,\r\n MatToolbarModule,\r\n MatTooltipModule,\r\n MatTreeModule,\r\n PortalModule,\r\n ScrollingModule,\r\n CommonModule\r\n ],\r\n declarations: [],\r\n \r\n //declarations: [DefaultTranslationPipe],\r\n})\r\nexport class MaterialModule {}\r\n","import { ILocation } from '../model/location';\r\n\r\n\r\n\r\nexport const LOCATIONS: ILocation[] = [\r\n\r\n { id: '1', name: 'Köln Nippes', city: 'Beschreibung', address: 'Beschreibung', firstPossibleAppointment: 'datum'},\r\n { id: '2', name: 'Köln Mülheim', city: 'Beschreibung',address: 'Beschreibung', firstPossibleAppointment: 'datum'}\r\n];\r\n","import { RequirementValueDto } from \"./requirement-value-dto.model\";\r\nimport { IUserConcern } from \"./userconcern\";\r\n\r\nexport class BookAppointmentDto\r\n{\r\n public id: string;\r\n\r\n public start: string;\r\n\r\n public customerLanguageCode: string;\r\n\r\n public requirementValues: RequirementValueDto[];\r\n public selectedServiceDtos: IUserConcern[];\r\n\r\n public qMobileEndUserId: string;\r\n\r\n}","\r\n\r\nexport class IConcernGroupLocalization {\r\n name: string;\r\n description: string;\r\n languageCode:string;\r\n}\r\n\r\nexport class IConcernGroup {\r\n id: string;\r\n localizations:IConcernGroupLocalization[];\r\n //languageKey: string;\r\n //descriptionLanguageKey: string;\r\n amount:number;\r\n duration: number;\r\n }\r\n\r\n export class IConcernGroupCounter {\r\n id: string;\r\n amount: number;\r\n duration: number;\r\n }","\r\nexport class IQFlexWorkloadDTO\r\n{\r\n public displayWorkload : boolean;\r\n public waitingCustomerCount : number;\r\n public avgWaitTime : number;\r\n public color : string;\r\n}","// object which will be sent back to the controller\r\nexport class IUserConcern {\r\n id: string;\r\n quantity: number;\r\n // only used for userconcern\r\n name:string;\r\n}\r\n\r\n// export class IUserLocation {\r\n// locationId: string;\r\n// location: string;\r\n// }\r\n","import { Pipe, PipeTransform, OnDestroy } from '@angular/core';\r\nimport { ServerSettings } from '../config/server-settings';\r\nimport { ServerSettingService } from '../services/server-setting.service';\r\nimport { ConfigSettingsService } from '../services/config-settings.service';\r\nimport { ConfigSettings } from 'src/app/config-settings';\r\nimport { GlobalSettings } from '../config/globalsettings';\r\nimport { LanguageService } from '../services/language.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Pipe({\r\n name: 'defaultTranslation',\r\n pure: false\r\n})\r\nexport class DefaultTranslationPipe implements PipeTransform, OnDestroy {\r\n\r\n private subscriptions : Subscription[] = [];\r\n serverSettingDefaultLanguage:string\r\n language:string;\r\n serverSettings:ServerSettings;\r\n configSettings: ConfigSettings;\r\n constructor(\r\n\r\n private configSettingsService: ConfigSettingsService,\r\n private languageService: LanguageService,\r\n private globalSettingService:ServerSettingService\r\n ) {\r\n\r\n this.configSettings = this.configSettingsService.configSettings;\r\n\r\n //this.language = \r\n // this.subscriptions.push( this.globalSettingService.getServerVariables().subscribe(serverSettings => {\r\n // this.serverSettingDefaultLanguage = serverSettings.defaultLanguageCode;\r\n // }));\r\n this.serverSettingDefaultLanguage = this.globalSettingService.defaultLanguageCode;\r\n }\r\n\r\n transform(value: any, args:any): any {\r\n\r\n if(value != null && value.hasOwnProperty('localizations') && value.localizations != null){\r\n \r\n // get the value from the config-settings.json\r\n // this should be the fall back value\r\n // todo: think about getting the language value from the application.\r\n // maybe local storage.\r\n \r\n // get language of users choice\r\n this.language = this.languageService.currentLanguage.code;\r\n let localizationValue = value.localizations.find(x => x.languageCode == this.language);\r\n\r\n var returnValue=\"\";\r\n if(localizationValue!=null){\r\n returnValue = localizationValue[args];\r\n }\r\n\r\n // if there is no value of users choice then\r\n // try to get the default from somewhere else\r\n if (GlobalSettings.isEmpty(returnValue)){\r\n\r\n // we have different options. Default value of client system\r\n //let language = this.configSettings.localizationLanguage;\r\n \r\n // default value of server settings.\r\n let language = this.serverSettingDefaultLanguage;\r\n localizationValue = value.localizations.find(x => x.languageCode == language);\r\n if(localizationValue!=null){\r\n returnValue = localizationValue[args];\r\n }\r\n }\r\n \r\n \r\n // this.serverSettingDefaultLanguage\r\n \r\n \r\n }\r\n return returnValue;\r\n }\r\n\r\n\r\n ngOnDestroy()\r\n {\r\n this.subscriptions.forEach(s => s.unsubscribe());\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { formatDate } from '@angular/common';\r\nimport { SessionService } from '../services/session.service';\r\nimport { GlobalSettings } from '../config/globalsettings';\r\nimport { ConfigSettingsService } from '../services/config-settings.service';\r\nimport { ConfigSettings } from 'src/app/config-settings';\r\nimport { LanguageService } from '../services/language.service';\r\nimport { ServerSettingService } from '../services/server-setting.service';\r\nimport * as moment from 'moment/moment';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Subscription, throwError } from 'rxjs';\r\n\r\n\r\n@Pipe({\r\n name: 'localdate',\r\n pure: false\r\n})\r\n\r\n// this pipe is currently applied only to ConfigTimeSettings format 09.08.19\r\n// but it is also possible not use the user configsettings for format the date and time\r\n// so the standard date formats can be applied\r\n// see for further information see predefined date options of https://angular.io/api/common/DatePipe \r\nexport class LocaldatePipe implements PipeTransform {\r\n\r\n globalSettings: GlobalSettings = new GlobalSettings();\r\n configSettings: ConfigSettings;\r\n subscription: Subscription;\r\n translationObject: any;\r\n timeUnit:string;\r\n constructor(\r\n private configSettingsService: ConfigSettingsService,\r\n private languageService: LanguageService,\r\n private translate: TranslateService,\r\n ) {\r\n this.configSettings = this.configSettingsService.configSettings;\r\n\r\n }\r\n\r\n\r\n // input date expected \r\n transform(value: any, format: string) {\r\n \r\n // currenty this cultureSetting is not applied\r\n // but if it will there must be a subscription on the language for applying the predefined languages!\r\n let cultureSetting = GlobalSettings.isEmpty(this.languageService.currentLanguage.code) ? this.configSettings.cultureSetting : this.languageService.currentLanguage.code;\r\n\r\n // special case for using the language.json configuration file\r\n if (format == \"ConfigTimeSettings\"){\r\n\r\n let date = new Date(value);\r\n let settings_time = this.languageService.replaceSettingRessources(\"SETTINGS.TIME\"); \r\n let timeStr = this.languageService.convertTime(date);\r\n return timeStr + ' ' + settings_time;\r\n\r\n }\r\n\r\n // throw error because of no subscription on cultureSetting changes.\r\n //return throwError(\"Currenty the pipe is not supported with this settings.\"); \r\n\r\n if (!value) { return ''; }\r\n if (!format) { format = 'shortDate'; }\r\n\r\n let result = formatDate(value, format, cultureSetting);\r\n\r\n return result;\r\n return formatDate(value, format, cultureSetting);\r\n //return formatDate(value, format, this.session.locale); \r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { formatNumber } from '@angular/common';\r\nimport { SessionService } from '../services/session.service';\r\n\r\n@Pipe({\r\n name: 'localnumber'\r\n})\r\nexport class LocalnumberPipe implements PipeTransform {\r\n\r\n constructor(private session: SessionService) { }\r\n\r\n transform(value: any, format: string) {\r\n if (value == null) { return ''; } // !value would also react to zeros.\r\n if (!format) { format = '.2-2'; }\r\n\r\n return formatNumber(value, this.session.locale, format);\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n// tranforms \"/n\" to a \"
\"\"\r\n// https://stackoverflow.com/questions/35999185/angular2-pipes-output-raw-html/51236958#51236958\r\n@Pipe({\r\n name: 'nl2pbr'\r\n})\r\nexport class Nl2pbrPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n // return value.replace(/\\n/g, '
');\r\n value = value.replace(/(?:\\r\\n\\r\\n|\\r\\r|\\n\\n)/g, '

');\r\n return '

' + value.replace(/(?:\\r\\n|\\r|\\n)/g, '
') + '

';\r\n }\r\n\r\n/****************************\r\n * example useage\r\n *
\r\n * \r\n * \r\n * basically this also works
with a
tag and without the pipe\r\n *

{{ myContent }}

\r\n\r\n ****************************/\r\n\r\n\r\n\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport {DomSanitizer} from \"@angular/platform-browser\";\r\n\r\n/**\r\n * Generated class for the SafeHtmlPipe pipe.\r\n *\r\n * See https://angular.io/api/core/Pipe for more info on Angular Pipes.\r\n */\r\n@Pipe({\r\n name: 'safeHtml',\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n\r\n constructor(private sanitizer:DomSanitizer){}\r\n\r\n transform(html) {\r\n return this.sanitizer.bypassSecurityTrustHtml(html);\r\n }\r\n\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { ConfigSettingsService } from '../services/config-settings.service';\r\nimport { LanguageService } from '../services/language.service';\r\nimport { ServerSettingService } from '../services/server-setting.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ConfigSettings } from 'src/app/config-settings';\r\nimport { Subscription } from 'rxjs';\r\nimport { GlobalSettings } from '../config/globalsettings';\r\nimport * as moment from 'moment/moment';\r\n\r\n@Pipe({\r\n name: 'userSettings',\r\n pure: false\r\n})\r\nexport class UserSettingsPipe implements PipeTransform {\r\n\r\n configSettings: ConfigSettings;\r\n subscription: Subscription;\r\n translationObject: any;\r\n settings_time:string;\r\n settings_minute:string;\r\n \r\n constructor(\r\n\r\n private configSettingsService: ConfigSettingsService,\r\n private languageService: LanguageService,\r\n private globalSettingService: ServerSettingService,\r\n private translate: TranslateService,\r\n ) {\r\n \r\n }\r\n\r\n // args can be of any type\r\n transform(value: string, args1?: any, args2?: any): any {\r\n\r\n\r\n value = this.languageService.replaceSettingRessources(value);\r\n //let args = args\r\n \r\n\r\n // int replace\r\n if ((value.indexOf(\"{{int}}\")) !== -1 && (args1 !== undefined)) { \r\n \r\n // only for null, different handling for undefined possible\r\n if (args1 === null){\r\n return \"\"\r\n }\r\n\r\n let number = + args1;\r\n let numberString = String(number)\r\n value = value.replace(\"{{int}}\",numberString);\r\n \r\n } else if ((value.indexOf(\"{{Date}}\")) !== -1) { \r\n let date = new Date(args1);\r\n value = this.languageService.getFormatDateString(value,date);\r\n } else if ((value.indexOf(\"{{Time}}\")) !== -1) { \r\n let date = new Date(args1);\r\n value = this.languageService.getFormatDateString(value,date); \r\n \r\n } else if ((value.indexOf(\"{{DateTime}}\")) !== -1) { \r\n let date = new Date(args1);\r\n value = this.languageService.getFormatDateString(value,date);\r\n } else if (((value.indexOf(\"{{StartTime}}\")) !== -1) && (value.indexOf(\"{{EndTime}}\")) !== -1) { \r\n\r\n let startTime = new Date(args1);\r\n let endTime = new Date(args2);\r\n\r\n value = value.replace(\"{{StartTime}}\",this.languageService.convertTime(startTime)).replace(\"{{EndTime}}\",this.languageService.convertTime(endTime));\r\n return value;\r\n\r\n \r\n }\r\n\r\n // city must be before adress otherwise replacement wrong.\r\n if (((value.indexOf(\"{{CITY}}\")) !== -1) && (value.indexOf(\"{{STREET}}\")) !== -1) { \r\n value = value.replace(\"{{STREET}}\",args1).replace(\"{{CITY}}\",args2);\r\n } else if ((value.indexOf(\"{{CITY}}\")) !== -1) { \r\n value = value.replace(\"{{CITY}}\",args1);\r\n } else if ((value.indexOf(\"{{STREET}}\")) !== -1) { \r\n value = value.replace(\"{{STREET}}\",args1);\r\n }\r\n \r\n return value ;\r\n }\r\n\r\n}\r\n","import { Injectable, EventEmitter, Output, OnDestroy, Directive } from '@angular/core';\r\nimport { Observable, of, Subscription } from 'rxjs';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { catchError, map, tap } from 'rxjs/operators';\r\n//import { CalendarDay } from '../model/calendarday';\r\nimport { MessageService } from './messages.service';\r\nimport { ICalendarDay, IDateFormat } from '../model/calendarday';\r\nimport { GlobalSettings } from '../config/globalsettings';\r\nimport { IUserConcern } from '../model/userconcern';\r\nimport { ITimeSpan, ICurrentDateTime } from '../model/timespan';\r\n\r\nimport * as _ from 'lodash';\r\nimport * as moment from 'moment/moment';\r\nimport { ServerSettings } from '../config/server-settings';\r\nimport { ServerSettingService } from './server-setting.service';\r\nimport { ConfigSettings } from 'src/app/config-settings';\r\nimport { ConfigSettingsService } from './config-settings.service';\r\nimport { ServerSettingsService } from './server-settings.service';\r\nimport { IPublicEmployee } from '../model/public-employee';\r\nimport { RequirementBlueprintDto } from '../model/requirement-blueprint-dto.model';\r\n//import moment = require('moment/moment');\r\nconst MIN: number = 60000;\r\nconst HOUR: number = 3600000;\r\n\r\n@Directive()\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CalendarService implements OnDestroy\r\n{\r\n\r\n // new format date: 2019.12.20T12:00\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n private classame = (this).constructor.name;\r\n\r\n globalSettings: GlobalSettings = new GlobalSettings();\r\n serverSettings: ServerSettings;\r\n configSettings: ConfigSettings;\r\n\r\n datesToHighlight: ICalendarDay[] = [];\r\n //datesToHiglightList: Array = []; //might be used as observable or array\r\n\r\n dayTimeSpans: ITimeSpan[] = [];\r\n\r\n // so far not used. \r\n // but use it in the contact form.\r\n @Output() notifyDate: EventEmitter = new EventEmitter();\r\n\r\n @Output() notifyCalendarDay: EventEmitter = new EventEmitter();\r\n\r\n @Output() requirementsChangedEvent: EventEmitter = new EventEmitter();\r\n\r\n private serviceUrl: string;\r\n private serviceDayUrl: string;\r\n\r\n //urlApi = 'https://localhost:44338/api/days/office-id/0253705a-7b6f-43dc-ed8e-08d6c3df9b99'\r\n\r\n private urlApi: string;\r\n private urlFilePath: string;\r\n private urlFileName: string;\r\n private urlDayApi: string;\r\n private urlDayFilePath: string;\r\n private nowString: string;\r\n private now: Date;\r\n private startDate: Date;\r\n private urlDayString = '/day/';\r\n private urlDayFileName = '/calendarday.json';\r\n\r\n\r\n\r\n // Contains the server date. Will be initalised at the beginning as we have an observable \r\n // and the value are required immediatetely in some cases.\r\n // However in some cases later the value will be reinitialised later\r\n\r\n currentDateTime: ICurrentDateTime;\r\n\r\n // MOC\r\n //urlDayFile = 'http://localhost:4200/assets/days/office-id/{{officeId}}/day/{{day}}/calendarday.json'; \r\n //urlDayFile = 'http://localhost:4200/assets/days/office-id/{{officeId}}/calendarday.json';\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private messageService: MessageService,\r\n private globalSettingService: ServerSettingService,\r\n private configSettingsService: ConfigSettingsService,\r\n private serverSettingsService: ServerSettingsService,\r\n ) { }\r\n\r\n ngOnInit()\r\n {\r\n\r\n\r\n this.configSettings = this.configSettingsService.configSettings;\r\n\r\n this.urlApi = this.configSettings.apiUrl + '/api/days/office-id/';\r\n\r\n //moc\r\n this.urlFilePath = this.configSettings.clientUrl + 'assets/days/office-id/';\r\n this.urlFileName = '/calendardays.json';\r\n\r\n this.urlDayApi = this.configSettings.apiUrl + '/api/days/office-id/';\r\n\r\n this.urlDayFilePath = this.configSettings.clientUrl + 'assets/days/office-id/';\r\n\r\n this.subscriptions.push(this.globalSettingService.getServerVariables()\r\n .subscribe((serverSettings: ServerSettings) =>\r\n {\r\n this.serverSettings = serverSettings;\r\n }\r\n ));\r\n\r\n }\r\n\r\n // the date which will be booked at the end.\r\n private _selectedDate: Date;\r\n get selectedDate(): Date\r\n {\r\n return this._selectedDate;\r\n }\r\n\r\n set selectedDate(date: Date)\r\n {\r\n this._selectedDate = date;\r\n this.notifyDate.emit(this._selectedDate);\r\n }\r\n\r\n\r\n\r\n // currently this is today\r\n // todo: later data paging might be required for long loading times.\r\n private _earliestDisplayDay: string;\r\n get earliestDisplayDay(): string\r\n {\r\n return this._earliestDisplayDay;\r\n }\r\n set earliestDisplayDay(date: string)\r\n {\r\n this._earliestDisplayDay = date;\r\n }\r\n\r\n // currently this is the latest config value.\r\n // todo: later data paging might be required for long loading times.\r\n private _latestDisplayDay: string;\r\n get latestDisplayDay(): string\r\n {\r\n return this._latestDisplayDay;\r\n }\r\n set latestDisplayDay(date: string)\r\n {\r\n this._latestDisplayDay = date;\r\n }\r\n\r\n\r\n // add hours from config to current date.\r\n getStartDate(dateNow: Date): Date\r\n {\r\n\r\n if (this.serverSettings == undefined)\r\n {\r\n this.ngOnInit();\r\n }\r\n\r\n let startHours = Math.floor(this.serverSettings.earliestAppointmentStartInHours);\r\n\r\n //TER-510\r\n // IPAD verhält sich vermutlich falsch\r\n // es muss ein neues Objekt erzeugt werden, damit das Ursprungsobjekt nicht verändert wird.\r\n //let newDate = dateNow;\r\n let newDate = new Date(dateNow);\r\n\r\n\r\n // always the best option to work with moment vor conversion\r\n //let momentDate = moment(serverDate.serverTime,\"YYYY-MM-DDThh:mm\");\r\n //let serverDateHelper = momentDate.toDate();\r\n\r\n let dummy = newDate.setHours((newDate.getHours() + startHours));\r\n let startDate = new Date(dummy);\r\n\r\n\r\n return startDate\r\n }\r\n\r\n\r\n getTimeSpansDate(): Observable\r\n {\r\n\r\n\r\n this.dayTimeSpans.forEach(function (e)\r\n {\r\n\r\n if (e[\"start\"] !== undefined)\r\n {\r\n\r\n // convert to moment, best option to transform to a date\r\n e.momentStart = moment(e.start, \"YYYY-MM-DDThh:mm\");\r\n\r\n\r\n //probably better option, but not tested\r\n //let startdate = e.momentStart.toDate();\r\n let startdate = new Date(e.momentStart);\r\n e.startTimeDate = new Date(startdate);\r\n e.startTimeNumber = new Date(startdate).getTime();\r\n }\r\n if (e[\"end\"] !== undefined)\r\n {\r\n e.momentEnd = moment(e.end, \"YYYY-MM-DDThh:mm\");\r\n\r\n let enddate = new Date(e.momentEnd);\r\n e.endTimeDate = new Date(enddate);\r\n e.endTimeNumber = new Date(enddate).getTime();\r\n }\r\n });\r\n\r\n\r\n return of(this.dayTimeSpans);\r\n }\r\n\r\n\r\n\r\n //just checks if the api input makes sense\r\n checkValidSpanDate(): boolean\r\n {\r\n let IsOK = true;\r\n let startDayMidnight = new Date(this.dayTimeSpans[0].startTimeNumber).setHours(0, 0, 0, 0);\r\n\r\n for (let i = 0; i < this.dayTimeSpans.length; i = i + 1)\r\n {\r\n if ((i > 0) && (this.dayTimeSpans[i].startTimeNumber < this.dayTimeSpans[i - 1].endTimeNumber))\r\n {\r\n this.error(`The start date:${this.dayTimeSpans[i].startTimeNumber} is smaller then the previous enddate ${this.dayTimeSpans[i - 1].endTimeNumber}`);\r\n IsOK = false;\r\n }\r\n\r\n let startTime = new Date(this.dayTimeSpans[i].startTimeNumber).setHours(0, 0, 0, 0);\r\n let endTime = new Date(this.dayTimeSpans[i].startTimeNumber).setHours(0, 0, 0, 0);\r\n\r\n // if (startTime !== startDayMidnight){\r\n // this.error(`The start time is not at the same day: ${startTime}`);\r\n // }\r\n // if (endTime !== startDayMidnight){\r\n // this.error(`The start time is not at the same day: ${endTime}`);\r\n // }\r\n\r\n }\r\n return IsOK;\r\n }\r\n\r\n // here we get the days where available times exists \r\n // datesToHighlight\r\n getLocationCalendarDays(locationid: string, userConcerns: IUserConcern[], employee: IPublicEmployee, nowDate: Date): Observable\r\n {\r\n\r\n\r\n\r\n if (userConcerns.length === 0)\r\n {\r\n this.datesToHighlight = [];\r\n return of(this.datesToHighlight);\r\n }\r\n\r\n // the start date from now + configured stared hours.\r\n var earliestDisplayDay = moment(this.getStartDate(nowDate), \"YYYY-MM-DDThh:mm\");\r\n this._earliestDisplayDay = earliestDisplayDay.format(\"YYYY-MM-DD\" + \"T00:00\");\r\n\r\n\r\n // for now startd date + max days (from config) are used.\r\n var endDate = moment(new Date(), \"YYYY-MM-DD\").add(this.serverSettings.maxCalculatedDays, 'days');\r\n this._latestDisplayDay = endDate.format(\"YYYY-MM-DD\") + \"T23:59\";\r\n\r\n if (GlobalSettings.isEmpty(employee))\r\n {\r\n this.serviceUrl = this.urlApi + locationid + \"/start/\" + this._earliestDisplayDay + \"/end/\" + this._latestDisplayDay;\r\n\r\n return this.http.post(this.serviceUrl, userConcerns).pipe(\r\n\r\n tap(data => this.datesToHighlight = data),\r\n\r\n // tap(data => this.convertDates(data)), \r\n catchError(this.handleError('get LocationCalendarDays', []))\r\n );\r\n }\r\n else\r\n {\r\n // TODO: hier die neue api für days/employee-id/{employeeId}/start/{start}/end/{end}/{forOffline?}\r\n return this.http.post(this.configSettings.apiUrl + \"/api/days/employee-id/\" + employee.id + \"/start/\" + this._earliestDisplayDay + \"/end/\" + this._latestDisplayDay + \"/false\", userConcerns).pipe(\r\n\r\n tap(data => this.datesToHighlight = data),\r\n\r\n // tap(data => this.convertDates(data)), \r\n catchError(this.handleError('get LocationCalendarDays', []))\r\n );\r\n }\r\n\r\n }\r\n\r\n getLocationCalendarDay(locationid: string, numberDate: number, employee: IPublicEmployee, userConcerns: IUserConcern[]): Observable\r\n {\r\n\r\n if (userConcerns.length === 0)\r\n {\r\n this.dayTimeSpans = [];\r\n\r\n return of(this.dayTimeSpans);\r\n }\r\n\r\n\r\n // build the api path with the correct day value \r\n // example: 2019.12.20T00:00\r\n let thisDate = new Date(numberDate)\r\n var convertToMoment = moment(thisDate);\r\n var selDateString = convertToMoment.format(\"YYYY-MM-DD\");\r\n selDateString = selDateString + \"T00:00\";\r\n //selDateString = selDateString + \"T00:00\";\r\n //this._monthDate = \"2019.29.04T00:00\"\r\n\r\n\r\n if (GlobalSettings.isEmpty(employee))\r\n {\r\n //this.serviceDayUrl = this.urlDayApi;\r\n this.serviceDayUrl = this.urlDayApi + locationid + this.urlDayString + selDateString;\r\n\r\n\r\n return this.http.post(this.serviceDayUrl, userConcerns).pipe(\r\n\r\n tap(data => this.dayTimeSpans = data.timespans),\r\n tap(data => this.requirementsChangedEvent.next(data.requirementBlueprintDtos)),\r\n tap(data => this.checkValidSpanDate()),\r\n tap(data => this.getTimeSpansDate()),\r\n catchError(this.handleError('post LocationCalendarDay', []))\r\n );\r\n\r\n }\r\n else\r\n {\r\n //days/employee-id/{employeeId}/day/{day}\r\n return this.http.post(this.configSettings.apiUrl + \"/api/days/employee-id/\" + employee.id + \"/day/\" + selDateString, userConcerns).pipe(\r\n\r\n tap(data => this.dayTimeSpans = data.timespans),\r\n tap(data => this.requirementsChangedEvent.next(data.requirementBlueprintDtos)),\r\n tap(data => this.checkValidSpanDate()),\r\n tap(data => this.getTimeSpansDate()),\r\n catchError(this.handleError('post LocationCalendarDay', []))\r\n );\r\n }\r\n\r\n\r\n }\r\n\r\n /**\r\n * Handle Http operation that failed.\r\n * Let the app continue.\r\n * @param operation - name of the operation that failed\r\n * @param result - optional value to return as the observable result\r\n */\r\n private handleError(operation = 'operation', result?: T)\r\n {\r\n return (error: any): Observable =>\r\n {\r\n\r\n this.error(error);\r\n\r\n this.error(`${operation} failed: ${error.message}`);\r\n\r\n // Let the app keep running by returning an empty result.\r\n return of(result as T);\r\n };\r\n }\r\n\r\n private error(message: string)\r\n {\r\n this.messageService.error(`${this.classame} : ${message}`);\r\n }\r\n\r\n\r\n\r\n ngOnDestroy()\r\n {\r\n this.subscriptions.forEach(s => s.unsubscribe());\r\n }\r\n}\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { MessageService } from './messages.service';\r\nimport { GlobalSettings } from '../config/globalsettings';\r\nimport { ServerSettings } from '../config/server-settings';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map, tap, catchError } from 'rxjs/operators';\r\nimport { ConfigSettings } from 'src/app/config-settings';\r\nimport { ConfigSettingsService } from './config-settings.service';\r\n// import { IDateDisplayOptions } from '../model/date-display-options';\r\nimport { LanguageService } from './language.service';\r\nimport * as moment from 'moment/moment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class CompanyService\r\n{\r\n\r\n constructor(private http: HttpClient, private configSettingsService: ConfigSettingsService)\r\n {\r\n }\r\n\r\n\r\n getLegalNotice(): Observable\r\n {\r\n return this.http.get(this.configSettingsService.configSettings.apiUrl + \"/api/company-settings/get-legal-notice\");\r\n }\r\n\r\n}\r\n","\r\n\r\n// implement an init\r\n// https://www.tektutorialshub.com/angular/angular-how-to-use-app-initializer/\r\n\r\n\r\n// https://davembush.github.io/where-to-store-angular-configurations/\r\n\r\nimport { Observable, of } from 'rxjs';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { catchError, map, tap, reduce } from 'rxjs/operators';\r\nimport { IConcern } from '../model/concern';\r\nimport { Injectable } from '@angular/core';\r\nimport { MessageService } from './messages.service';\r\nimport { GlobalSettings } from '../config/globalsettings';\r\nimport { CustomerService } from './customer.service';\r\nimport { ConfigSettings } from 'src/app/config-settings';\r\nimport { ConfigSettingsService } from './config-settings.service';\r\nimport { UserConcernService } from './userconcern.service';\r\nimport { IConcernGroupCounter } from '../model/concerngroup';\r\nimport { IPublicEmployee } from '../model/public-employee';\r\n//import { ConfigSettings } from '/config-settings';\r\n\r\n\r\n//import { TestSettings } from '../config/config-settings';\r\n\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\n\r\nexport class ConcernService\r\n{\r\n\r\n\r\n private classame = (this).constructor.name;\r\n\r\n configSettings: ConfigSettings;\r\n globalSettings: GlobalSettings = new GlobalSettings();\r\n\r\n // Holds the records for the entire application\r\n private concerns: IConcern[];\r\n\r\n private urlFile: string;\r\n private urlApi: string;\r\n private serviceUrl: string;\r\n\r\n public selectedEmployee : IPublicEmployee;\r\n\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private messageService: MessageService,\r\n private configSettingsService: ConfigSettingsService,\r\n\r\n )\r\n {\r\n\r\n \r\n }\r\n\r\n\r\n\r\n getConcerns(): Observable\r\n {\r\n \r\n this.configSettings = this.configSettingsService.configSettings;\r\n this.urlFile = this.configSettings.clientUrl + \"/assets/concern.json\";\r\n this.urlApi = this.configSettings.apiUrl + \"/api/concerns\";\r\n\r\n if (this.concerns)\r\n {\r\n return of(this.concerns);\r\n }\r\n\r\n \r\n this.serviceUrl = this.urlApi;\r\n \r\n // calls the service if it is not done by initialisation.\r\n return (this.http.get(this.serviceUrl)\r\n .pipe(\r\n \r\n tap(data => this.concerns = data),\r\n \r\n ));\r\n }\r\n\r\n\r\n\r\n disableOtherGroupConcerns(groupGuid: string)\r\n {\r\n this.concerns.forEach(function (concern)\r\n {\r\n if (concern.serviceGroupId !== groupGuid)\r\n {\r\n concern.addEnabled = false;\r\n concern.reduceEnabled = false;\r\n \r\n }\r\n });\r\n }\r\n\r\n public setEmployee(employee: IPublicEmployee )\r\n {\r\n this.selectedEmployee = employee;\r\n this.emptyConcernSelectForm();\r\n if(!GlobalSettings.isEmpty(employee))\r\n {\r\n this.concerns.forEach(concern => {\r\n if(employee.serviceIds.indexOf(concern.id) < 0)\r\n {\r\n concern.addEnabled = false;\r\n concern.reduceEnabled = false;\r\n }\r\n concern.countSelected = 0;\r\n });\r\n }\r\n // TODO neues event sodass concern component und evtl andere die zeiten neu berechnen können\r\n \r\n }\r\n\r\n // this is called last when a concern was selected. Therefor this only disables the add button if necessary\r\n public handleMaxEstimatedDuration(concernGroupCounter: IConcernGroupCounter[] ,maxDuration: number, currentDuration: number): void\r\n {\r\n this.concerns.forEach(concern =>\r\n {\r\n if(!GlobalSettings.isEmpty(this.selectedEmployee) && this.selectedEmployee.serviceIds.indexOf(concern.id) < 0)\r\n {\r\n concern.addEnabled = false;\r\n }\r\n else if (currentDuration >= maxDuration)\r\n { \r\n concern.addEnabled = false; \r\n }\r\n else if(concern.countSelected == 0)\r\n {\r\n if(currentDuration + concern.initialDuration > maxDuration)\r\n {\r\n concern.addEnabled = false;\r\n }\r\n else if(concern.maxRepetitions > 0)\r\n {\r\n concern.addEnabled = true;\r\n }\r\n }\r\n else\r\n {\r\n if(currentDuration + concern.consecutiveDuration > maxDuration)\r\n {\r\n concern.addEnabled = false;\r\n }\r\n else if(concern.countSelected < concern.maxRepetitions)\r\n {\r\n concern.addEnabled = true;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n emptyConcernSelectForm()\r\n {\r\n if (this.concerns !== undefined && this.concerns.length > 0)\r\n {\r\n this.concerns.forEach(function (concern)\r\n {\r\n concern.addEnabled = true;\r\n concern.reduceEnabled = false;\r\n concern.countSelected = 0;\r\n })\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n enableOtherGroupConcerns(groupGuid: string)\r\n {\r\n this.concerns.forEach((concern) =>\r\n {\r\n if(!GlobalSettings.isEmpty(this.selectedEmployee) && this.selectedEmployee.serviceIds.indexOf(concern.id) < 0)\r\n {\r\n concern.addEnabled = false;\r\n }\r\n else if (concern.serviceGroupId !== groupGuid)\r\n {\r\n \r\n let maxAmount = concern.maxRepetitions !== undefined ? concern.maxRepetitions : 5;\r\n if (concern.countSelected < maxAmount)\r\n {\r\n concern.addEnabled = true;\r\n }\r\n if (concern.countSelected > 0)\r\n {\r\n concern.reduceEnabled = true;\r\n }\r\n }\r\n })\r\n }\r\n\r\n //\r\n\r\n\r\n getConcern(guid: string): Observable\r\n {\r\n\r\n const foundItem = this.concerns.find(x => x.id === guid)\r\n return of(foundItem);\r\n }\r\n\r\n getConcernInGroup(guid: string): IConcern[]\r\n {\r\n //previously I was a subscription, but this is changed now.\r\n // the concern component is subscibing here\r\n // so the concerns records must already been loaded in the component\r\n\r\n if (this.concerns === undefined)\r\n {\r\n \r\n }\r\n\r\n\r\n if (this.concerns[0][\"addEnabled\"] === undefined)\r\n {\r\n\r\n this.concerns.forEach( (e) =>\r\n {\r\n if (typeof e === \"object\")\r\n {\r\n e[\"addEnabled\"] = true;\r\n e[\"reduceEnabled\"] = false;\r\n e[\"countSelected\"] = 0;\r\n }\r\n });\r\n }\r\n const foundItems = this.concerns.filter(concern => concern.serviceGroupId === guid);\r\n return (foundItems);\r\n }\r\n\r\n getSelectedConcernsQuantityInGroup(groupGuid: string): number\r\n {\r\n\r\n const foundItems = this.concerns.filter(x => x.serviceGroupId === groupGuid)\r\n let result = 0\r\n foundItems.forEach( (item) =>\r\n {\r\n result += item.countSelected\r\n });\r\n\r\n return (result);\r\n }\r\n\r\n getSelectedRecordDurationInGroup(guid: string): number\r\n {\r\n\r\n const foundItems = this.concerns.filter(concern => concern.serviceGroupId === guid);\r\n let result = 0\r\n foundItems.forEach( (item) =>\r\n {\r\n\r\n if (item.countSelected === 1)\r\n {\r\n result = result + (item.countSelected * item.initialDuration)\r\n } else if (item.countSelected > 1)\r\n {\r\n result = result + (1 * item.initialDuration) + (item.countSelected - 1) * item.consecutiveDuration;\r\n }\r\n });\r\n\r\n return (result);\r\n }\r\n\r\n updateSelectedCount(guid: string, countChange: number)\r\n {\r\n const foundIndex = this.concerns.findIndex(x => x.id === guid);\r\n\r\n if (foundIndex > -1)\r\n {\r\n\r\n const foundRecord = this.concerns.find(x => x.id === guid);\r\n foundRecord.countSelected = foundRecord.countSelected + countChange;\r\n\r\n this.concerns[foundIndex] = foundRecord;\r\n\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Handle Http operation that failed.\r\n * Let the app continue.\r\n * @param operation - name of the operation that failed\r\n * @param result - optional value to return as the observable result\r\n */\r\n private handleError(operation = 'operation', result?: T)\r\n {\r\n\r\n\r\n return (error: any): Observable =>\r\n {\r\n\r\n // Let the app keep running by returning an empty result.\r\n return of(result as T);\r\n };\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable, of, forkJoin } from 'rxjs';\r\nimport { IConcernGroup } from '../model/concerngroup';\r\nimport { tap, catchError } from 'rxjs/operators';\r\nimport { MessageService } from './messages.service';\r\nimport { GlobalSettings } from '../config/globalsettings';\r\nimport { ConfigSettings } from 'src/app/config-settings';\r\nimport { ConfigSettingsService } from './config-settings.service';\r\nimport { IPublicEmployee } from '../model/public-employee';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConcernGroupService\r\n{\r\n configSettings: ConfigSettings;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private messageService: MessageService,\r\n private configSettingsService: ConfigSettingsService\r\n )\r\n {\r\n this.configSettings = this.configSettingsService.configSettings;\r\n \r\n }\r\n\r\n\r\n getConcernGroupsVM(): Observable\r\n {\r\n return forkJoin(\r\n this.http.get(this.configSettings.apiUrl + \"/api/concern-groups\"),\r\n this.http.get(this.configSettings.apiUrl + \"/api/public-employees\")\r\n );\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ConfigSettings } from 'src/app/config-settings';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { lastValueFrom, Observable, of } from 'rxjs';\r\nimport { MessageService } from './messages.service';\r\nimport { catchError, map, tap } from 'rxjs/operators';\r\nimport { GlobalSettings } from '../config/globalsettings';\r\n// import { IDateDisplayOptions } from '../model/date-display-options';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigSettingsService {\r\n\r\n private classame = (this).constructor.name;\r\n \r\n// https://www.bennadel.com/blog/3487-defining-dynamic-ajax-driven-service-providers-using-app-initializer-in-angular-6-1-4.htm\r\n\r\n // store the values also in a static variable\r\n // that they can also be used as provider settings.\r\n //public static AppConfig:ConfigSettings;\r\n\r\n // todo: TER-113 only temp value, because the other do not work in the calendar component.\r\n // 'de-DE' 'fr-FR' 'en-GB' \r\n //public static CultureSetting = \"de-DE\";\r\n\r\n private configSettingFile: string;\r\n\r\n// dateDisplayOptions: IDateDisplayOptions;\r\n // todo: TER-113\r\n //globalSettings: GlobalSettings = new GlobalSettings();\r\n \r\n\r\n// private dateDisplayOptionsFileData = './assets/date-display-options.json';\r\n // contains the config settings for the entire application\r\n configSettings: ConfigSettings;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private messageService: MessageService,\r\n ) {\r\n \r\n }\r\n\r\n // app in the app initializer\r\n init(){\r\n\r\n \r\n \r\n this.configSettingFile = './assets/config-setting.json';\r\n let promise = new Promise((resolve, reject) => {\r\n lastValueFrom( this.http.get(this.configSettingFile)\r\n )\r\n .then(\r\n res => { // Success\r\n this.configSettings = res;\r\n \r\n // this.dateDisplayOptions = res.dateDisplayOptions;\r\n //ConfigSettingsService.AppConfig = res;\r\n \r\n if(this.configSettings.apiUrl.slice(-1) == \"/\")\r\n {\r\n this.configSettings.apiUrl = this.configSettings.apiUrl.slice(0,this.configSettings.apiUrl.length -1);\r\n }\r\n\r\n resolve(null);\r\n }\r\n );\r\n }).catch(error => this.handleError(error));\r\n \r\n return promise;\r\n }\r\n\r\n \r\n /**\r\n * Handle Http operation that failed.\r\n * Let the app continue.\r\n * @param operation - name of the operation that failed\r\n * @param result - optional value to return as the observable result\r\n */\r\n private handleError (operation = 'operation', result?: T) {\r\n \r\n \r\n return (error: any): Observable => {\r\n\r\n \r\n this.error(error); // log to console instead\r\n // TODO: better job of transforming error for user consumption\r\n this.error(`${operation} failed: ${error.message}`);\r\n\r\n // Let the app keep running by returning an empty result.\r\n return of(result as T);\r\n };\r\n }\r\n\r\n\r\n private error(message: string) {\r\n this.messageService.error(`${this.classame} : ${message}`);\r\n }\r\n\r\n\r\n}\r\n","import { Injectable, EventEmitter } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpResponse, HttpEvent, HttpErrorResponse } from '@angular/common/http';\r\nimport { MessageService } from './messages.service';\r\nimport { GlobalSettings } from '../config/globalsettings';\r\nimport { IUserConcern } from '../model/userconcern';\r\nimport { tap, catchError, map } from 'rxjs/operators';\r\nimport { Observable, of, throwError } from 'rxjs';\r\nimport { IContactData } from '../model/contactdata';\r\nimport { ConfigSettings } from 'src/app/config-settings';\r\nimport { ConfigSettingsService } from './config-settings.service';\r\nimport { LanguageService } from './language.service';\r\nimport { ServerSettingService } from './server-setting.service';\r\nimport { IPublicEmployee } from '../model/public-employee';\r\nimport { BookAppointmentDto } from '../model/book-appointment-dto.model';\r\nimport { QMobileAppointmentDetailDto } from '../model/qmobile-appointment-detail-dto';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CustomerService\r\n{\r\n\r\n private classame = (this).constructor.name;\r\n\r\n configSettings: ConfigSettings;\r\n globalSettings: GlobalSettings = new GlobalSettings();\r\n\r\n\r\n private bookAtFieldOfficeAPIUrl: string;\r\n private confirmAppointmentAPIUrl: string;\r\n private deleteAppointmentAPIUrl: string;\r\n\r\n customerFormSent: boolean = false;\r\n notifyFormSent: EventEmitter = new EventEmitter();\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private messageService: MessageService,\r\n private configSettingsService: ConfigSettingsService,\r\n private languageService: LanguageService,\r\n private globalSettingService: ServerSettingService\r\n )\r\n {\r\n\r\n this.configSettings = this.configSettingsService.configSettings;\r\n this.bookAtFieldOfficeAPIUrl = this.configSettings.apiUrl + \"/api/appointment/book/fieldoffice\";\r\n this.confirmAppointmentAPIUrl = this.configSettings.apiUrl + \"/api/appointments/confirm/\";\r\n this.deleteAppointmentAPIUrl = this.configSettings.apiUrl + \"/api/appointments/customer-delete/\";\r\n\r\n }\r\n\r\n // submit the customer form\r\n // error is catched somewhere else. \r\n saveData(dto: BookAppointmentDto, employee: IPublicEmployee): any \r\n {\r\n let languageCode = GlobalSettings.isEmpty(this.languageService.currentLanguage.code) ? this.globalSettingService.configSettings.localizationLanguage : this.languageService.currentLanguage.code;\r\n dto.customerLanguageCode = languageCode;\r\n\r\n dto.requirementValues.forEach(element => \r\n {\r\n element.value = element.value == null ? null: element.value.toString();\r\n });\r\n\r\n dto.qMobileEndUserId = null;\r\n\r\n if (GlobalSettings.isEmpty(employee))\r\n {\r\n return this.http.post(this.bookAtFieldOfficeAPIUrl, dto);\r\n }\r\n else\r\n {\r\n return this.http.post(this.configSettings.apiUrl + \"/api/appointment/book/employee/true\", dto);\r\n }\r\n\r\n }\r\n\r\n // error is catched somewhere else.\r\n confirmCode(confirmCode: string): any\r\n {\r\n return this.http.get(this.confirmAppointmentAPIUrl + confirmCode);\r\n }\r\n\r\n deleteAppointmentCode(deleteCode: string): Observable>\r\n {\r\n return this.http.get>(this.deleteAppointmentAPIUrl + deleteCode);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, of } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { IInfoBanner } from '../model/info-banner.model';\r\nimport { ConfigSettingsService } from './config-settings.service';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class InfoBannerService\r\n{\r\n constructor( private http: HttpClient, private configSettingsService: ConfigSettingsService ) { }\r\n\r\n public getInfoBannerSettings() : Observable\r\n {\r\n return this.http.get(this.configSettingsService.configSettings.apiUrl + \"/api/info-banner/get\");\r\n }\r\n\r\n\r\n}\r\n","import { Injectable, Output, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { Language } from '../modul/language';\r\nimport { Subject, Observable, Subscription } from 'rxjs';\r\nimport { MessageService } from './messages.service';\r\nimport { ConfigSettingsService } from './config-settings.service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { tap } from 'rxjs/operators';\r\nimport * as moment from 'moment/moment';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { GlobalSettings } from '../config/globalsettings';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LanguageService implements OnDestroy {\r\n \r\n \r\n public currentLanguage:Language;\r\n private allLanguages:Language[] = [];\r\n public languageChangeSubject = new Subject();\r\n\r\n\r\n private subscriptions : Subscription[] = [];\r\n\r\n\r\n // translations\r\n translationObject: any;\r\n settings_time:string;\r\n settings_minute:string;\r\n \r\n\r\n\r\n\r\n constructor(\r\n private messageService: MessageService,\r\n private configSettingsService:ConfigSettingsService,\r\n private http: HttpClient, \r\n private translate: TranslateService,\r\n\r\n ) \r\n {\r\n this.getAllLanguages().subscribe(result => \r\n {\r\n this.allLanguages = result;\r\n let defaultLanguage = this.allLanguages.find(l => l.isDefaultLanguage);\r\n this.changeLanguage(defaultLanguage);\r\n })\r\n }\r\n\r\n public getAllLanguages(): Observable\r\n {\r\n return this.http.get(this.configSettingsService.configSettings.apiUrl + \"/api/language/get-all/\");\r\n }\r\n\r\n public changeLanguage(language:Language): void\r\n {\r\n this.currentLanguage = language;\r\n this.setDefaultLang();\r\n this.languageChangeSubject.next(language);\r\n }\r\n\r\n\r\n public setDefaultLang(): void\r\n {\r\n // after this settings, the language resources will be loaded.\r\n // will be only called once at the beginning (app.component)\r\n this.translate.setDefaultLang(this.currentLanguage.code);\r\n\r\n // the time settings are defined at the language settings after language change\r\n // in the first initialisation is must be read from the configsettings.json\r\n if (this.currentLanguage.timeFormat === undefined){\r\n this.currentLanguage.timeFormat = this.configSettingsService.configSettings.timeSettings\r\n }\r\n\r\n this.subscriptions.push(\r\n this.translate.get(['SETTINGS.TIME','SETTINGS.MINUTE']).subscribe((translation: [string]) => {\r\n this.translationObject = translation;\r\n this.settings_time = this.translationObject['SETTINGS.TIME'];\r\n this.settings_minute = this.translationObject['SETTINGS.MINUTE'];\r\n })\r\n );\r\n \r\n }\r\n\r\n public setLanguage(id:string): void\r\n {\r\n\r\n let selectedLanguage = this.allLanguages.find(l => l.id == id);\r\n if(selectedLanguage)\r\n {\r\n this.changeLanguage(selectedLanguage);\r\n }\r\n }\r\n\r\n public setLanguageFromCode(languageCode:string) : void\r\n {\r\n\r\n let selectedLanguage = this.allLanguages.find(l => l.code == languageCode.toLocaleLowerCase());\r\n if(selectedLanguage)\r\n {\r\n this.changeLanguage(selectedLanguage);\r\n }\r\n }\r\n\r\n\r\n replaceSettingRessources(value:string){\r\n\r\n if(GlobalSettings.isEmpty(value))\r\n return \"NotFound\";\r\n\r\n if ((value.indexOf(\"SETTINGS.TIME\")) !== -1){\r\n value = value.replace(\"SETTINGS.TIME\",this.settings_time );\r\n }\r\n\r\n if ((value.indexOf(\"SETTINGS.MINUTE\")) !== -1){\r\n value = value.replace(\"SETTINGS.MINUTE\",this.settings_minute);\r\n\r\n }\r\n\r\n return (value);\r\n}\r\n\r\n // replaces DateTime, Date, Time in a local string \r\n getFormatDateString(str: string, inputDate:Date):string {\r\n\r\n if ((str.indexOf(\"{{DateTime}}\")) !== -1) { //date with time place holder\r\n str = str.replace(\"{{DateTime}}\", this.convertDateTime(new Date(inputDate)));\r\n return str;\r\n } else if (str.indexOf(\"{{Date}}\") !== -1 ){ // date placeholder\r\n str = str.replace(\"{{Date}}\", this.convertDate( new Date(inputDate)));\r\n return str;\r\n } else if (str.indexOf(\"{{Time}}\") !== -1 ){ // date placeholder\r\n str = str.replace(\"{{Time}}\", this.convertTime( new Date(inputDate)));\r\n return str; \r\n } else {\r\n return (str);\r\n }\r\n }\r\n\r\n public replacePlaceholder( originalString: string, stringToReplace: string, value: any)\r\n {\r\n if(originalString.indexOf(stringToReplace) !== -1)\r\n {\r\n return originalString.replace(stringToReplace, value.toString());\r\n }\r\n console.warn(\"Could not find string: \" + stringToReplace + \"in: \" + originalString);\r\n return originalString;\r\n }\r\n\r\n convertTime(date:Date):string {\r\n var convertToMoment = moment(date);\r\n let time = convertToMoment.format(this.currentLanguage.timeFormat);\r\n return time;\r\n }\r\n\r\n // one dependency and low risk configSettingsService, config-setting.json\r\n convertDate(date:any):string {\r\n let dateStr = new Date(date).toLocaleDateString(this.currentLanguage.code); //,this.configSettingsService.dateDisplayOptions\r\n return dateStr;\r\n }\r\n\r\n // risk of time settings.\r\n convertDateTime(dateTime:Date):string {\r\n var convertToMoment = moment(dateTime);\r\n // e.g. timeSettings HH:MM for german\r\n let time = convertToMoment.format(this.currentLanguage.timeFormat);\r\n\r\n let date = dateTime.toLocaleDateString(this.currentLanguage.code); //,this.configSettingsService.dateDisplayOptions\r\n let dateTimeString = date + \" \" + time\r\n \r\n //dateTimeString = dateTimeString.replace(\"{{DateTime}}\", date + \" \" + time);\r\n return dateTimeString;\r\n }\r\n\r\n\r\n ngOnDestroy()\r\n {\r\n this.subscriptions.forEach(s => s.unsubscribe() );\r\n }\r\n\r\n}\r\n","import { Injectable, EventEmitter, Output } from \"@angular/core\";\r\n\r\nimport { Observable, of, Subject } from \"rxjs\";\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { catchError, map, tap } from \"rxjs/operators\";\r\n\r\nimport { LOCATIONS } from \"../mock/mock-location\";\r\nimport { ILocation } from \"../model/location\";\r\nimport { MessageService } from \"./messages.service\";\r\nimport { IUserConcern } from \"../model/userconcern\";\r\nimport { GlobalSettings } from \"../config/globalsettings\";\r\nimport { ConfigSettings } from \"src/app/config-settings\";\r\nimport { ConfigSettingsService } from \"./config-settings.service\";\r\nimport { IPublicEmployee } from \"../model/public-employee\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class LocationService {\r\n private classame = (this).constructor.name;\r\n\r\n configSettings: ConfigSettings;\r\n globalSettings: GlobalSettings = new GlobalSettings();\r\n\r\n private serviceUrl: string;\r\n private urlFile: string;\r\n private urlApi: string;\r\n loadedLocationsInvalid: boolean = true;\r\n\r\n // Holds the records for the entire application\r\n private locations: ILocation[] | null;\r\n\r\n private selectedLocationSource = new Subject();\r\n selectedLocationChanges$ = this.selectedLocationSource.asObservable();\r\n\r\n //value can be changed from the component with this method.\r\n changeSelectedLocation(selectedLocation: ILocation | undefined): void {\r\n this.selectedLocationSource.next(selectedLocation);\r\n }\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private messageService: MessageService,\r\n private configSettingsService: ConfigSettingsService\r\n ) {\r\n this.configSettings = this.configSettingsService.configSettings;\r\n this.urlFile = this.configSettings.clientUrl + \"assets/location.json\";\r\n this.urlApi = this.configSettings.apiUrl + \"/api/offices/\";\r\n }\r\n\r\n private _selectedLocation: ILocation;\r\n get selectedLocation(): ILocation {\r\n return this._selectedLocation;\r\n }\r\n\r\n getLocations(\r\n userConcerns: IUserConcern[],\r\n employee: IPublicEmployee\r\n ): Observable {\r\n // the loaded locations are hopefully invalid if the concerns have changed.\r\n if (!this.loadedLocationsInvalid) {\r\n return of(this.locations);\r\n }\r\n\r\n // without userConcerns in the body a request is useless!\r\n // instead: no locations will be displayed!\r\n if (userConcerns.length === 0) {\r\n this.locations = [];\r\n return of(this.locations);\r\n }\r\n\r\n this.serviceUrl = this.urlApi;\r\n\r\n let employeeId = \"\";\r\n if (!GlobalSettings.isEmpty(employee)) {\r\n employeeId = employee.id;\r\n }\r\n\r\n return this.http\r\n .post(\r\n this.configSettings.apiUrl + \"/api/offices/employee/\" + employeeId,\r\n userConcerns\r\n )\r\n .pipe(\r\n tap((data) => (this.loadedLocationsInvalid = false)),\r\n catchError(this.handleError(\"post Locations\", []))\r\n );\r\n }\r\n\r\n getLocation(id: string): Observable {\r\n const foundItem = this.locations.find((x) => x.id === id);\r\n return of(foundItem);\r\n }\r\n\r\n getLocationsMock(): ILocation[] {\r\n return LOCATIONS;\r\n }\r\n\r\n /**\r\n * Handle Http operation that failed.\r\n * Let the app continue.\r\n * @param operation - name of the operation that failed\r\n * @param result - optional value to return as the observable result\r\n */\r\n private handleError(operation = \"operation\", result?: T) {\r\n return (error: any): Observable => {\r\n // TODO: send the error to remote logging infrastructure\r\n this.error(error); // log to console instead\r\n\r\n // Let the app keep running by returning an empty result.\r\n return of(result as T);\r\n };\r\n }\r\n\r\n private error(message: string) {\r\n this.messageService.error(`${this.classame} : ${message}`);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MessageService {\r\n\r\n\r\n error(message: string) {\r\n console.error(\"Error:\" + message);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, of, Subject } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { IInfoBanner } from '../model/info-banner.model';\r\nimport { ConfigSettingsService } from './config-settings.service';\r\nimport { OnlineDesign } from '../model/online-design';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class OnlineDesignService\r\n{\r\n // used as \"state-management\"\r\n public showServiceDuration: Subject = new Subject();\r\n public showServiceDurationCurrentState: boolean;\r\n\r\n public showServiceGroupDuration: Subject = new Subject();\r\n public showServiceGroupDurationCurrentState: boolean;\r\n\r\n public showTotalDuration: Subject = new Subject();\r\n public showTotalDurationCurrentState: boolean;\r\n\r\n constructor( private http: HttpClient, private configSettingsService: ConfigSettingsService ) {\r\n this.showServiceDuration.subscribe(val => this.showServiceDurationCurrentState = val);\r\n this.showServiceGroupDuration.subscribe(val => this.showServiceGroupDurationCurrentState = val);\r\n this.showTotalDuration.subscribe(val => this.showTotalDurationCurrentState = val);\r\n }\r\n\r\n public getOnlineDesignSettings() : Observable\r\n {\r\n return this.http.get(this.configSettingsService.configSettings.apiUrl + \"/api/online-design/get\");\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as signalR from \"@microsoft/signalr\";\r\nimport { QFlexWorkloadService } from './q-flex-workload.service';\r\nimport { ConfigSettingsService } from './config-settings.service';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class QFlexWorkloadHub \r\n{\r\n private hubConnection: signalR.HubConnection;\r\n\r\n constructor(private workloadService: QFlexWorkloadService, private configSettingsService: ConfigSettingsService)\r\n {\r\n\r\n }\r\n\r\n public startConnection = () =>\r\n {\r\n if (this.hubConnection == null)\r\n {\r\n this.hubConnection = new signalR.HubConnectionBuilder()\r\n .withUrl(this.configSettingsService.configSettings.apiUrl + '/QFlexWorkload')\r\n .withAutomaticReconnect()\r\n .build();\r\n\r\n // this.hubConnection.serverTimeoutInMilliseconds = 1000 * 60 * 10;\r\n \r\n }\r\n\r\n this.start();\r\n }\r\n\r\n //SignalR Verbindung zum Server starten\r\n async start()\r\n {\r\n if (this.hubConnection.state == signalR.HubConnectionState.Disconnected)\r\n {\r\n await this.hubConnection\r\n .start()\r\n .then(() => console.log('QFlexWorkloadHub Connection started'))\r\n .catch(err =>\r\n {\r\n setTimeout(() => this.start(), 5000);\r\n });\r\n }\r\n\r\n }\r\n\r\n public receiveWorkload()\r\n {\r\n this.hubConnection.on('BroadcastQFlexWorkload', (workloadDTO) =>\r\n {\r\n this.workloadService.workload = workloadDTO; \r\n });\r\n }\r\n\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, of, Subscription } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { ConfigSettingsService } from './config-settings.service';\r\nimport { IQFlexWorkloadDTO } from '../model/q-flex-workload-dto';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class QFlexWorkloadService implements OnDestroy\r\n{\r\n\r\n private subscriptions : Subscription[] = [];\r\n public workload : IQFlexWorkloadDTO;\r\n\r\n constructor( private http: HttpClient, private configSettingsService: ConfigSettingsService ) { \r\n this.workload = new IQFlexWorkloadDTO();\r\n }\r\n\r\n public loadWorkload()\r\n {\r\n this.subscriptions.push(this.http.get(this.configSettingsService.configSettings.apiUrl + \"/api/qflex-workload/get-dto\").subscribe(wl => this.workload = wl));\r\n }\r\n\r\n ngOnDestroy()\r\n {\r\n this.subscriptions.forEach(s => s.unsubscribe());\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { MessageService } from './messages.service';\r\nimport { GlobalSettings } from '../config/globalsettings';\r\nimport { ServerSettings } from '../config/server-settings';\r\nimport { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { map, tap, catchError } from 'rxjs/operators';\r\nimport { ConfigSettings } from 'src/app/config-settings';\r\nimport { ConfigSettingsService } from './config-settings.service';\r\n// import { IDateDisplayOptions } from '../model/date-display-options';\r\nimport { LanguageService } from './language.service';\r\nimport * as moment from 'moment/moment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class ServerSettingService\r\n{\r\n\r\n private classame = (this).constructor.name;\r\n\r\n configSettings: ConfigSettings;\r\n globalSettings: GlobalSettings = new GlobalSettings();\r\n cultureSetting;\r\n\r\n public defaultLanguageCode = \"de\";\r\n private serverSettings: ServerSettings;\r\n private serviceUrl: string;\r\n private urlFile: string;\r\n private urlApi: string;\r\n\r\n public settingsBehaviourSubject: BehaviorSubject;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private configSettingsService: ConfigSettingsService,\r\n private languageService: LanguageService,\r\n )\r\n {\r\n \r\n this.configSettings = this.configSettingsService.configSettings;\r\n this.urlFile = this.configSettings.clientUrl + \"/assets/appointment-settings\";\r\n this.urlApi = this.configSettings.apiUrl + \"/api/appointment-settings\";\r\n const tmpServerSettings : ServerSettings = {\r\n appointmentRoundStartMinutes: true,\r\n appointmentStartTimeSteps: 10,\r\n canSelectEmployeeOnline : false,\r\n dataProtectionURL : \"\",\r\n defaultLanguageCode: \"de\",\r\n earliestAppointmentStartInHours: 2,\r\n maxCalculatedDays: 120,\r\n maxEstimatedAppointmentDuration: 500,\r\n mutuallyExclusiveServiceGroups: false,\r\n reCaptchaSiteKey: \"\",\r\n useReCaptcha: false,\r\n enableOnlineShiftAppointment: false,\r\n shiftAppointmentMinDistToStartInHours: 2,\r\n useSMSService: false\r\n };\r\n this.settingsBehaviourSubject = new BehaviorSubject(tmpServerSettings);\r\n this.http.get(this.urlApi).subscribe(\r\n data => {\r\n this.serverSettings = data;\r\n this.defaultLanguageCode = this.serverSettings.defaultLanguageCode;\r\n this.settingsBehaviourSubject.next(data);\r\n }\r\n );\r\n }\r\n\r\n getServerVariables(): BehaviorSubject\r\n {\r\n return this.settingsBehaviourSubject;\r\n }\r\n\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { GlobalSettings } from '../config/globalsettings';\r\nimport { Observable, Subject, of } from 'rxjs';\r\nimport { ICurrentDateTime } from '../model/timespan';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { MessageService } from './messages.service';\r\nimport * as moment from 'moment/moment';\r\nimport { ServerSettingService } from './server-setting.service';\r\nimport { ConfigSettingsService } from './config-settings.service';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ServerSettingsService {\r\n\r\n // TER-510\r\n // working with the server date.\r\n private classame = (this).constructor.name;\r\n\r\n globalSettings: GlobalSettings = new GlobalSettings();\r\n currentDateTimeObj:ICurrentDateTime; \r\n \r\n updateCurrentTimeSubject = new Subject();\r\n\r\n public updateCurrentTime(date:Date): void{\r\n this.updateCurrentTimeSubject.next(date);\r\n }\r\n\r\n\r\n private _currentDateTime:Date;\r\n get currentDateTime():Date{\r\n return this._currentDateTime;\r\n }\r\n\r\n set currentDateTime(date:Date) { \r\n this._currentDateTime = date;\r\n this.updateCurrentTime(date);\r\n\r\n }\r\n\r\n\r\n constructor(\r\n private http: HttpClient, \r\n private messageService: MessageService,\r\n private globalSettingService: ServerSettingService,\r\n private configSettingsService: ConfigSettingsService\r\n ) {\r\n\r\n }\r\n\r\n getDateFromString(str:string):any {\r\n \r\n let help = moment(str,\"YYYY-MM-DDThh:mm\");\r\n return (help.toDate());\r\n }\r\n\r\n getServerDate():Observable{\r\n\r\n if (this.currentDateTimeObj !== undefined) \r\n return of (this.currentDateTimeObj)\r\n \r\n var urlSystemDateTime = \"\";\r\n //let url = this.configSettings.clientUrl + \"assets/data/system-time.json\";\r\n \r\n \r\n urlSystemDateTime = this.configSettingsService.configSettings.apiUrl + '/api/system/time';\r\n \r\n \r\n return this.http.get(urlSystemDateTime).pipe( \r\n tap(data => this.currentDateTimeObj = data),\r\n tap(data => this.currentDateTimeObj.serverTime = data.serverTime.toString()), \r\n tap(data => this.currentDateTimeObj.momentNow = moment(data.serverTime)), \r\n tap(data => this.currentDateTimeObj.dateTimeNow = this.getDateFromString(data.serverTime.toString())), \r\n tap(data => this._currentDateTime = this.getDateFromString(data.serverTime.toString())),\r\n );\r\n\r\n }\r\n\r\n private error(message: string) {\r\n this.messageService.error(`${this.classame} : ${message}`);\r\n }\r\n\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { registerLocaleData } from '@angular/common';\r\nimport localeGerman from '@angular/common/locales/de';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SessionService {\r\n private _locale: string;\r\n\r\n set locale(value: string) {\r\n this._locale = value;\r\n }\r\n get locale(): string {\r\n return this._locale || 'de-DE';\r\n }\r\n //todo: implement other languages\r\n registerCulture(culture: string) {\r\n if (!culture) {\r\n return;\r\n }\r\n this.locale = culture;\r\n\r\n // Register locale data since only the en-US locale data comes with Angular\r\n switch (culture) {\r\n case 'de-DE': {\r\n registerLocaleData(localeGerman);\r\n break;\r\n }\r\n }\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\n\r\nimport { IUserConcern } from '../model/userconcern';\r\nimport { IPublicEmployee } from '../model/public-employee';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\n\r\nexport class UserConcernService {\r\n\r\n private userconcerns: IUserConcern[] = [];\r\n\r\n private employee: IPublicEmployee;\r\n \r\n constructor(private http: HttpClient) {\r\n\r\n }\r\n\r\n public setEmployee(employee)\r\n {\r\n this.employee = employee;\r\n this.deleteUserConcerns();\r\n }\r\n\r\n public getEmployee(): IPublicEmployee\r\n {\r\n return this.employee;\r\n }\r\n\r\n getUserConcerns$(): Observable {\r\n return of(this.userconcerns);\r\n }\r\n \r\n getUserConcerns(): IUserConcern[] {\r\n return this.userconcerns;\r\n }\r\n\r\n deleteUserConcerns() {\r\n this.userconcerns = [];\r\n }\r\n\r\n deleteUserConcern(userconcern: IUserConcern) {\r\n const foundIndex = this.userconcerns.findIndex (x => x.id === userconcern.id)\r\n this.userconcerns.splice(foundIndex,1);\r\n \r\n }\r\n\r\n deleteUserConcernById(concernid: string) {\r\n const foundIndex = this.userconcerns.findIndex (x => x.id === concernid)\r\n this.userconcerns.splice(foundIndex,1);\r\n \r\n }\r\n\r\n updateUserConcern(userconcern: IUserConcern): Observable {\r\n\r\n const foundIndex = this.userconcerns.findIndex (x => x.id === userconcern.id)\r\n \r\n if (foundIndex > -1){ \r\n this.userconcerns[foundIndex] = userconcern;\r\n } else {\r\n this.userconcerns.push(userconcern);\r\n } \r\n return of(userconcern);\r\n }\r\n\r\n updateUserConcernQuantity(concernid: string, quantity: number): Observable {\r\n \r\n const foundIndex = this.userconcerns.findIndex (x => x.id === concernid)\r\n \r\n if ((foundIndex === -1) && (quantity > 0)) { //add new record\r\n \r\n \r\n let userconcern = new IUserConcern();\r\n userconcern.id = concernid;\r\n userconcern.quantity = quantity;\r\n this.userconcerns.push(userconcern);\r\n\r\n } else if (foundIndex > -1){\r\n\r\n const foundRecord = this.userconcerns.find (x => x.id === concernid)\r\n \r\n // new value from old and changes.\r\n foundRecord.quantity = foundRecord.quantity + quantity;\r\n \r\n if (foundRecord.quantity <= 0){ // if count >= 0 => delete the record\r\n\r\n this.userconcerns.splice(foundIndex,1);\r\n } else { // update quantity of record\r\n \r\n this.userconcerns[foundIndex] = foundRecord;\r\n }\r\n }\r\n return of(quantity);\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n ViewContainerRef,\r\n TemplateRef,\r\n ChangeDetectorRef,\r\n OnDestroy,\r\n} from \"@angular/core\";\r\nimport { FormBuilder, UntypedFormGroup, Validators } from \"@angular/forms\";\r\nimport { ConcernComponent } from \"src/app/components/concern/concern.component\";\r\nimport { LocationComponent } from \"src/app/components/location/location.component\";\r\nimport { ConcactFormComponent } from \"src/app/components/concactform/concactform.component\";\r\nimport { AppointmentcalendarComponent } from \"src/app/components/appointmentcalendar/appointmentcalendar.component\";\r\nimport { MatStep } from \"@angular/material/stepper\"; //, MatHorizontalStepper\r\nimport { Router, ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { ConcernGroupComponent } from \"src/app/components/concerngroup/concerngroup.component\";\r\nimport { LocationService } from \"../services/location.service\";\r\nimport { ILocation } from \"../model/location\";\r\nimport { observable, Observable, Subscription } from \"rxjs\";\r\nimport { CalendarService } from \"../services/calendar.service\";\r\nimport { MessageService } from \"../services/messages.service\";\r\nimport { ConfirmationComponent } from \"src/app/components/confirm-appointment/confirmation.component\";\r\nimport { IContactData } from \"../model/contactdata\";\r\nimport { ICustomer } from \"../model/customer\";\r\nimport * as moment from \"moment/moment\";\r\nimport { UserConcernService } from \"../services/userconcern.service\";\r\nimport { CustomerService } from \"../services/customer.service\";\r\nimport { GlobalSettings } from \"../config/globalsettings\";\r\nimport { MediaMatcher } from \"@angular/cdk/layout\";\r\nimport { StepperSelectionEvent } from \"@angular/cdk/stepper\";\r\nimport { ConfigSettingsService } from \"../services/config-settings.service\";\r\nimport { ConfigSettings } from \"src/app/config-settings\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { ConcernService } from \"../services/concern.service\";\r\nimport { MatStepper } from \"@angular/material/stepper\";\r\nimport { Title } from \"@angular/platform-browser\";\r\n\r\n// this components is the routing start point for all other pages\r\n\r\nexport enum pageIndex {\r\n concern = 0,\r\n location,\r\n appointmentCalender,\r\n contactForm,\r\n confirmation,\r\n}\r\n\r\n@Component({\r\n selector: \"app-stepper\",\r\n templateUrl: \"./stepper.component.html\",\r\n styleUrls: [\"./stepper.component.scss\"],\r\n})\r\nexport class StepperComponent implements OnInit, OnDestroy {\r\n private classame = (this).constructor.name;\r\n private subscriptions: Subscription[] = [];\r\n\r\n configSettings: ConfigSettings;\r\n globalSettings: GlobalSettings = new GlobalSettings();\r\n\r\n translationTitleObject: any;\r\n\r\n stepperVertical: boolean;\r\n stepperHorizontal: boolean;\r\n\r\n mobileQuery: MediaQueryList;\r\n\r\n @ViewChild(\"stepper\") stepper!: MatStepper;\r\n\r\n //if enabled stepping only possible, if previous is finished.\r\n isLinear = true;\r\n\r\n @ViewChild(ConcernGroupComponent)\r\n concernGroupFormGroup!: ConcernGroupComponent;\r\n @ViewChild(LocationComponent) locationFormGroup!: LocationComponent;\r\n @ViewChild(ConcactFormComponent) contactFormGroup!: ConcactFormComponent;\r\n @ViewChild(AppointmentcalendarComponent)\r\n appointmentCalenderFormGroup!: AppointmentcalendarComponent;\r\n @ViewChild(ConfirmationComponent)\r\n confirmationFormGroup!: ConfirmationComponent;\r\n\r\n // handle the location\r\n selectedLocation: ILocation | undefined;\r\n\r\n constructor(\r\n //private formBuilder: FormBuilder,\r\n //private router: Router,\r\n private location: Location,\r\n private locationService: LocationService,\r\n private messageService: MessageService,\r\n private concernservice: ConcernService,\r\n //private customerService: CustomerService,\r\n private configSettingsService: ConfigSettingsService,\r\n // changeDetectorRef: ChangeDetectorRef,\r\n private media: MediaMatcher,\r\n private translate: TranslateService,\r\n private title: Title,\r\n private route: ActivatedRoute\r\n ) {\r\n this.configSettings = this.configSettingsService.configSettings;\r\n this.mobileQuery = media.matchMedia(\r\n `(max-width: ${this.configSettings.SMALL_WIDTH_BREAKPOINT}px)`\r\n );\r\n\r\n // when canging devices the stepper can't handle, and horizontal vertikal do not changes\r\n //this._mobileQueryListener = () => changeDetectorRef.detectChanges();\r\n // //this.mobileQuery.addListener(this._mobileQueryListener);\r\n\r\n // not change the device anymore after intialsation.\r\n this.stepperVertical = this.mobileQuery.matches;\r\n this.stepperHorizontal = !this.stepperVertical;\r\n }\r\n\r\n stepToInitPage(navUrl: string): void {\r\n // don't now if it is the best postition but at least it works.\r\n this.subscriptions.push(\r\n this.translate\r\n .get([\"APPLICATION_TITLE\", \"MENU.BOOK_APPOINTMENT\"])\r\n .subscribe((translation: [string]) => {\r\n this.translationTitleObject = translation;\r\n this.title.setTitle(\r\n this.translationTitleObject[\"APPLICATION_TITLE\"] +\r\n \" > \" +\r\n this.translationTitleObject[\"MENU.BOOK_APPOINTMENT\"]\r\n );\r\n })\r\n );\r\n\r\n if (navUrl.startsWith(\"/location\")) {\r\n this.stepper.selectedIndex = pageIndex.location;\r\n } else if (navUrl.startsWith(\"/appointmentcalendar\")) {\r\n //appointment calendar page\r\n this.stepper.selectedIndex = pageIndex.appointmentCalender;\r\n } else if (navUrl.startsWith(\"/contactform\")) {\r\n //appointment calendar page\r\n this.stepper.selectedIndex = pageIndex.contactForm;\r\n } else if (navUrl.startsWith(\"/confirmation\")) {\r\n //confirmation page.\r\n this.stepper.selectedIndex = pageIndex.confirmation;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n const param = this.route.snapshot.paramMap.get(\"init\");\r\n if (param) {\r\n if (param == \"init\") {\r\n // delete the concern form again when renavigating.\r\n this.concernservice.emptyConcernSelectForm();\r\n }\r\n }\r\n\r\n this.subscriptions.push(\r\n this.locationService.selectedLocationChanges$.subscribe(\r\n (selectedLocation) => (this.selectedLocation = selectedLocation)\r\n )\r\n );\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.stepToInitPage(this.location.path());\r\n }\r\n\r\n // validations of the steps if component are loaded\r\n // or empty FormGroup, mehtods will be called more then once.\r\n private emtpyFormGroup = {} as UntypedFormGroup;\r\n\r\n get stepConcernCheck(): UntypedFormGroup {\r\n return this.concernGroupFormGroup\r\n ? this.concernGroupFormGroup.frmConcern\r\n : this.emtpyFormGroup;\r\n }\r\n\r\n get stepLocationCheck(): UntypedFormGroup {\r\n return this.locationFormGroup\r\n ? this.locationFormGroup.frmLocation\r\n : this.emtpyFormGroup;\r\n }\r\n\r\n get stepAppointmentCalendarCheck(): UntypedFormGroup {\r\n return this.appointmentCalenderFormGroup\r\n ? this.appointmentCalenderFormGroup.form\r\n : this.emtpyFormGroup;\r\n }\r\n\r\n get stepContactFormCheck(): UntypedFormGroup {\r\n return this.contactFormGroup\r\n ? this.contactFormGroup.frmContact\r\n : this.emtpyFormGroup;\r\n }\r\n\r\n get stepConfirmationFormCheck(): UntypedFormGroup {\r\n return this.confirmationFormGroup\r\n ? this.confirmationFormGroup.frmConfirmation\r\n : this.emtpyFormGroup;\r\n }\r\n\r\n // react on concern form changes.\r\n notifyNumberOfConcerns(event: number): void {\r\n // the calendar entry is deleted and the related form unvalid.\r\n // clarify if this is the wished behavior\r\n\r\n // values are deleted from other forms\r\n this.appointmentCalenderFormGroup.form.get(\"selectedDateWithTime\")?.setValue(null);\r\n this.locationFormGroup.frmLocation.get(\"locationChoice\")?.setValue(null);\r\n }\r\n\r\n // react on location change\r\n notifyLocationChange(event: ILocation | undefined): void {\r\n // the selected date is deleted, if the location has changed.\r\n this.appointmentCalenderFormGroup.form.get(\"selectedDateWithTime\")?.setValue(null);\r\n }\r\n\r\n selectionChange(event: any, stepper: MatStepper) {\r\n if (\r\n event.selectedIndex === pageIndex.location &&\r\n event.previouslySelectedIndex === pageIndex.concern\r\n ) {\r\n // here the locations will be loaded from the api if loaded locations are invalid.\r\n if (this.locationService.loadedLocationsInvalid) {\r\n this.locationFormGroup.getLocations();\r\n }\r\n } else if (\r\n event.selectedIndex === pageIndex.appointmentCalender &&\r\n event.previouslySelectedIndex === pageIndex.location\r\n ) {\r\n // switching from the location to the calendar.\r\n\r\n let locationId =\r\n this.locationFormGroup.frmLocation.get(\"locationChoice\")?.value;\r\n // test if the service can be called here\r\n\r\n // TER-390\r\n let location: ILocation | undefined =\r\n this.locationFormGroup.locations.find((x) => x.id === locationId);\r\n this.locationService.changeSelectedLocation(location);\r\n } else if (\r\n event.selectedIndex === pageIndex.contactForm &&\r\n event.previouslySelectedIndex === pageIndex.appointmentCalender\r\n ) {\r\n //init the error message again, there might be old ones from previous contact form\r\n this.contactFormGroup.errorMessage = \"\";\r\n }\r\n }\r\n\r\n notifyContactFormSuccessfulySent() {\r\n this.stepper.selectedIndex = pageIndex.confirmation;\r\n }\r\n\r\n private error(message: string) {\r\n this.messageService.error(`${this.classame} : ${message}`);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach((s) => s.unsubscribe());\r\n }\r\n}\r\n","
\r\n \r\n \r\n {{'STEP.CONCERN_TEXT' | translate}} \r\n \r\n \r\n \r\n {{'STEP.LOCATION_TEXT' | translate}} \r\n \r\n \r\n \r\n {{'STEP.APPOINTMENT_TEXT' | translate}}\r\n \r\n \r\n \r\n {{'STEP.CONTACT_TEXT' | translate}}\r\n \r\n \r\n \r\n \r\n {{'STEP.CONFIRM_TEXT' | translate}}\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n {{'STEP.CONCERN_TEXT' | translate}}\r\n \r\n \r\n \r\n {{'STEP.LOCATION_TEXT' | translate}}\r\n \r\n \r\n \r\n {{'STEP.APPOINTMENT_TEXT' | translate}}\r\n \r\n \r\n \r\n {{'STEP.CONTACT_TEXT' | translate}}\r\n \r\n \r\n \r\n \r\n {{'STEP.CONFIRM_TEXT' | translate}}\r\n \r\n \r\n \r\n
","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n","var map = {\n\t\"./af\": 8685,\n\t\"./af.js\": 8685,\n\t\"./ar\": 254,\n\t\"./ar-dz\": 4312,\n\t\"./ar-dz.js\": 4312,\n\t\"./ar-kw\": 2614,\n\t\"./ar-kw.js\": 2614,\n\t\"./ar-ly\": 8630,\n\t\"./ar-ly.js\": 8630,\n\t\"./ar-ma\": 8674,\n\t\"./ar-ma.js\": 8674,\n\t\"./ar-sa\": 9032,\n\t\"./ar-sa.js\": 9032,\n\t\"./ar-tn\": 4730,\n\t\"./ar-tn.js\": 4730,\n\t\"./ar.js\": 254,\n\t\"./az\": 3052,\n\t\"./az.js\": 3052,\n\t\"./be\": 150,\n\t\"./be.js\": 150,\n\t\"./bg\": 3069,\n\t\"./bg.js\": 3069,\n\t\"./bm\": 3466,\n\t\"./bm.js\": 3466,\n\t\"./bn\": 8516,\n\t\"./bn-bd\": 557,\n\t\"./bn-bd.js\": 557,\n\t\"./bn.js\": 8516,\n\t\"./bo\": 6273,\n\t\"./bo.js\": 6273,\n\t\"./br\": 9588,\n\t\"./br.js\": 9588,\n\t\"./bs\": 9815,\n\t\"./bs.js\": 9815,\n\t\"./ca\": 3331,\n\t\"./ca.js\": 3331,\n\t\"./cs\": 1320,\n\t\"./cs.js\": 1320,\n\t\"./cv\": 2219,\n\t\"./cv.js\": 2219,\n\t\"./cy\": 8266,\n\t\"./cy.js\": 8266,\n\t\"./da\": 6427,\n\t\"./da.js\": 6427,\n\t\"./de\": 7435,\n\t\"./de-at\": 2871,\n\t\"./de-at.js\": 2871,\n\t\"./de-ch\": 2994,\n\t\"./de-ch.js\": 2994,\n\t\"./de.js\": 7435,\n\t\"./dv\": 2357,\n\t\"./dv.js\": 2357,\n\t\"./el\": 5649,\n\t\"./el.js\": 5649,\n\t\"./en-au\": 9961,\n\t\"./en-au.js\": 9961,\n\t\"./en-ca\": 9878,\n\t\"./en-ca.js\": 9878,\n\t\"./en-gb\": 3924,\n\t\"./en-gb.js\": 3924,\n\t\"./en-ie\": 864,\n\t\"./en-ie.js\": 864,\n\t\"./en-il\": 1579,\n\t\"./en-il.js\": 1579,\n\t\"./en-in\": 940,\n\t\"./en-in.js\": 940,\n\t\"./en-nz\": 6181,\n\t\"./en-nz.js\": 6181,\n\t\"./en-sg\": 4301,\n\t\"./en-sg.js\": 4301,\n\t\"./eo\": 5291,\n\t\"./eo.js\": 5291,\n\t\"./es\": 4529,\n\t\"./es-do\": 3764,\n\t\"./es-do.js\": 3764,\n\t\"./es-mx\": 2584,\n\t\"./es-mx.js\": 2584,\n\t\"./es-us\": 3425,\n\t\"./es-us.js\": 3425,\n\t\"./es.js\": 4529,\n\t\"./et\": 5203,\n\t\"./et.js\": 5203,\n\t\"./eu\": 678,\n\t\"./eu.js\": 678,\n\t\"./fa\": 3483,\n\t\"./fa.js\": 3483,\n\t\"./fi\": 6262,\n\t\"./fi.js\": 6262,\n\t\"./fil\": 2521,\n\t\"./fil.js\": 2521,\n\t\"./fo\": 4555,\n\t\"./fo.js\": 4555,\n\t\"./fr\": 3131,\n\t\"./fr-ca\": 8239,\n\t\"./fr-ca.js\": 8239,\n\t\"./fr-ch\": 1702,\n\t\"./fr-ch.js\": 1702,\n\t\"./fr.js\": 3131,\n\t\"./fy\": 267,\n\t\"./fy.js\": 267,\n\t\"./ga\": 3821,\n\t\"./ga.js\": 3821,\n\t\"./gd\": 1753,\n\t\"./gd.js\": 1753,\n\t\"./gl\": 4074,\n\t\"./gl.js\": 4074,\n\t\"./gom-deva\": 2762,\n\t\"./gom-deva.js\": 2762,\n\t\"./gom-latn\": 5969,\n\t\"./gom-latn.js\": 5969,\n\t\"./gu\": 2809,\n\t\"./gu.js\": 2809,\n\t\"./he\": 5402,\n\t\"./he.js\": 5402,\n\t\"./hi\": 315,\n\t\"./hi.js\": 315,\n\t\"./hr\": 410,\n\t\"./hr.js\": 410,\n\t\"./hu\": 8288,\n\t\"./hu.js\": 8288,\n\t\"./hy-am\": 7928,\n\t\"./hy-am.js\": 7928,\n\t\"./id\": 1334,\n\t\"./id.js\": 1334,\n\t\"./is\": 6959,\n\t\"./is.js\": 6959,\n\t\"./it\": 4864,\n\t\"./it-ch\": 1124,\n\t\"./it-ch.js\": 1124,\n\t\"./it.js\": 4864,\n\t\"./ja\": 6141,\n\t\"./ja.js\": 6141,\n\t\"./jv\": 9187,\n\t\"./jv.js\": 9187,\n\t\"./ka\": 2136,\n\t\"./ka.js\": 2136,\n\t\"./kk\": 4332,\n\t\"./kk.js\": 4332,\n\t\"./km\": 8607,\n\t\"./km.js\": 8607,\n\t\"./kn\": 4305,\n\t\"./kn.js\": 4305,\n\t\"./ko\": 234,\n\t\"./ko.js\": 234,\n\t\"./ku\": 6003,\n\t\"./ku.js\": 6003,\n\t\"./ky\": 5061,\n\t\"./ky.js\": 5061,\n\t\"./lb\": 2786,\n\t\"./lb.js\": 2786,\n\t\"./lo\": 6183,\n\t\"./lo.js\": 6183,\n\t\"./lt\": 29,\n\t\"./lt.js\": 29,\n\t\"./lv\": 4169,\n\t\"./lv.js\": 4169,\n\t\"./me\": 8577,\n\t\"./me.js\": 8577,\n\t\"./mi\": 8177,\n\t\"./mi.js\": 8177,\n\t\"./mk\": 337,\n\t\"./mk.js\": 337,\n\t\"./ml\": 5260,\n\t\"./ml.js\": 5260,\n\t\"./mn\": 2325,\n\t\"./mn.js\": 2325,\n\t\"./mr\": 4695,\n\t\"./mr.js\": 4695,\n\t\"./ms\": 5334,\n\t\"./ms-my\": 7151,\n\t\"./ms-my.js\": 7151,\n\t\"./ms.js\": 5334,\n\t\"./mt\": 3570,\n\t\"./mt.js\": 3570,\n\t\"./my\": 7963,\n\t\"./my.js\": 7963,\n\t\"./nb\": 8028,\n\t\"./nb.js\": 8028,\n\t\"./ne\": 6638,\n\t\"./ne.js\": 6638,\n\t\"./nl\": 302,\n\t\"./nl-be\": 6782,\n\t\"./nl-be.js\": 6782,\n\t\"./nl.js\": 302,\n\t\"./nn\": 3501,\n\t\"./nn.js\": 3501,\n\t\"./oc-lnc\": 563,\n\t\"./oc-lnc.js\": 563,\n\t\"./pa-in\": 869,\n\t\"./pa-in.js\": 869,\n\t\"./pl\": 5302,\n\t\"./pl.js\": 5302,\n\t\"./pt\": 9687,\n\t\"./pt-br\": 4884,\n\t\"./pt-br.js\": 4884,\n\t\"./pt.js\": 9687,\n\t\"./ro\": 9107,\n\t\"./ro.js\": 9107,\n\t\"./ru\": 3627,\n\t\"./ru.js\": 3627,\n\t\"./sd\": 355,\n\t\"./sd.js\": 355,\n\t\"./se\": 3427,\n\t\"./se.js\": 3427,\n\t\"./si\": 1848,\n\t\"./si.js\": 1848,\n\t\"./sk\": 4590,\n\t\"./sk.js\": 4590,\n\t\"./sl\": 184,\n\t\"./sl.js\": 184,\n\t\"./sq\": 6361,\n\t\"./sq.js\": 6361,\n\t\"./sr\": 8965,\n\t\"./sr-cyrl\": 1287,\n\t\"./sr-cyrl.js\": 1287,\n\t\"./sr.js\": 8965,\n\t\"./ss\": 5456,\n\t\"./ss.js\": 5456,\n\t\"./sv\": 451,\n\t\"./sv.js\": 451,\n\t\"./sw\": 7558,\n\t\"./sw.js\": 7558,\n\t\"./ta\": 1356,\n\t\"./ta.js\": 1356,\n\t\"./te\": 3693,\n\t\"./te.js\": 3693,\n\t\"./tet\": 1243,\n\t\"./tet.js\": 1243,\n\t\"./tg\": 2500,\n\t\"./tg.js\": 2500,\n\t\"./th\": 5768,\n\t\"./th.js\": 5768,\n\t\"./tk\": 7761,\n\t\"./tk.js\": 7761,\n\t\"./tl-ph\": 5780,\n\t\"./tl-ph.js\": 5780,\n\t\"./tlh\": 9590,\n\t\"./tlh.js\": 9590,\n\t\"./tr\": 3807,\n\t\"./tr.js\": 3807,\n\t\"./tzl\": 3857,\n\t\"./tzl.js\": 3857,\n\t\"./tzm\": 654,\n\t\"./tzm-latn\": 8806,\n\t\"./tzm-latn.js\": 8806,\n\t\"./tzm.js\": 654,\n\t\"./ug-cn\": 845,\n\t\"./ug-cn.js\": 845,\n\t\"./uk\": 9232,\n\t\"./uk.js\": 9232,\n\t\"./ur\": 7052,\n\t\"./ur.js\": 7052,\n\t\"./uz\": 7967,\n\t\"./uz-latn\": 2233,\n\t\"./uz-latn.js\": 2233,\n\t\"./uz.js\": 7967,\n\t\"./vi\": 8615,\n\t\"./vi.js\": 8615,\n\t\"./x-pseudo\": 2320,\n\t\"./x-pseudo.js\": 2320,\n\t\"./yo\": 1313,\n\t\"./yo.js\": 1313,\n\t\"./zh-cn\": 4490,\n\t\"./zh-cn.js\": 4490,\n\t\"./zh-hk\": 5910,\n\t\"./zh-hk.js\": 5910,\n\t\"./zh-mo\": 8262,\n\t\"./zh-mo.js\": 8262,\n\t\"./zh-tw\": 4223,\n\t\"./zh-tw.js\": 4223\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 6700;"],"names":["RouterModule","StepperComponent","ConfirmationComponent","CancelAppointmentComponent","LanguageSettingsComponent","LegalNoticeComponent","QFlexComponent","QFlexQrScanComponent","ShiftAppointmentComponent","routes","path","component","AppRoutingModule","forRoot","initialNavigation","onSameUrlNavigation","imports","exports","GlobalSettings","DOCUMENT","NavigationEnd","i0","AppComponent","constructor","calenderService","messageService","configSettingsService","translate","route","router","languageService","onlineDesignService","changeDetectorRef","serverSettingsService","serverSettingService","workloadHub","bannerService","media","document","name","setStyle","showBanner","events","subscribe","event","url","toLowerCase","indexOf","isQRScan","startConnection","receiveWorkload","subscriptions","push","getServerDate","date","currentDateTime","dateTimeNow","tmpLang","code","flag","isActive","isDefaultLanguage","timeFormat","order","id","currentLanguage","setDefaultLang","enableDeleteAppoinmtent","configSettings","undefined","settingsBehaviourSubject","s","enableShiftAppointment","enableOnlineShiftAppointment","mobileQuery","matchMedia","SMALL_WIDTH_BREAKPOINT","mobileHeightQuery","_mobileQueryListener","detectChanges","addListener","imagePath","ngOnInit","get","translation","translationObject","RIGHT_FOOTER_TEXT","replace","Date","getFullYear","toString","getInfoBannerSettings","data","infoBanner","fontSize","italicTextVM","italicText","boldTextVM","boldText","buttonColor","buttonTextColor","useDefault","documentElement","style","setProperty","getOnlineDesignSettings","dto","primaryBackgroundColor","primaryTextColor","highlightBackgroundColor","highlightTextColor","buttonBackgroundColor","serviceInfoButtonTextColor","serviceAddButtonTextColor","serviceSubstractButtonTextColor","stepEditBackgroundColor","stepEditTextColor","inputHighlightColor","showFlags","showTicketInfo","showServiceDuration","next","showServiceGroupDuration","showTotalDuration","titleName","websiteLink","headerImageIsLink","logoImageIsLink","logoImagePath","showHeader","headerImagePath","headerBackgroundImagePath","useHeaderBackgroundImage","headerBackgroundColor","useBlackSchaufLogo","favIconElement","querySelector","href","hideBanner","styleLoader","styleUrl","Promise","resolve","reject","styleElement","createElement","onload","head","appendChild","get_right_footer_text","bookAppointment","curRoute","defaultView","location","reload","navigate","confirmAppointment","shiftAppointment","deleteAppointment","ngOnDestroy","removeListener","forEach","unsubscribe","selectors","decls","vars","consts","template","CommonModule","HashLocationStrategy","BrowserModule","BrowserAnimationsModule","HttpClientModule","HttpClient","withInterceptors","provideHttpClient","APP_INITIALIZER","inject","FormsModule","ReactiveFormsModule","ToastrModule","ToastrService","LocationComponent","ConcernComponent","UserconcernComponent","registerLocaleData","Location","LocationStrategy","PathLocationStrategy","localeDe","localeDeExtra","LocationService","ConcernService","UserConcernService","ConcernDetailComponent","AppointmentcalendarComponent","LocalnumberPipe","LocaldatePipe","ConcactFormComponent","FilterComponent","ConcernGroupService","ConcernGroupComponent","CalendarComponent","RecaptchaModule","RecaptchaFormsModule","Nl2pbrPipe","ConfigSettingsService","TranslateHttpLoader","TranslateModule","TranslateLoader","TranslateService","DefaultTranslationPipe","PageAttributesDirective","UserSettingsPipe","MaterialModule","ConfirmationDialogComponent","QFlexSecurityPopupComponent","SafeHtmlPipe","ShiftAppointmentService","catchError","of","tap","redirectTo","pathMatch","HttpLoaderFactory","http","initializeData","init","tokenGetter","localStorage","getItem","responseInterceptorFn","request","toasterService","translatorService","pipe","response","evt","message","headers","type","translatedMessage","success","positionClass","info","error","err","warning","AppModule","bootstrap","provide","useClass","useFactory","deps","multi","timeOut","preventDuplicates","loader","declarations","Validators","moment","$event","MIN","HOUR","formBuilder","shiftAppointmentService","codeForm","group","required","email","selectTimeForm","timeSectionsArray","array","settings","canSelectEmployee","canSelectEmployeeOnline","minTimeToAppointment","shiftAppointmentMinDistToStartInHours","startTimeSteps","appointmentStartTimeSteps","roundAppointmentStart","appointmentRoundStartMinutes","currentServerDate","serverDateNowString","serverTime","paramCode","snapshot","paramMap","setValue","paramLang","setLanguageFromCode","previousStep","currentStep","getAppointment","valid","value","isLoading","controlCode","app","appointment","timeDiffMS","start","diff","timeDiffMin","timeDiffHour","appointmentIsToCloseToNow","getPublicEmployees","allPublicEmployees","sort","a","b","lastName","localeCompare","displayedPublicEmployees","filterDisplayedEmployees","target","targetAny","targetId","getPossibleDays","console","input","filteredDisplayedEmployees","filter","emp","firstName","includes","selectedEmployee","targetOtherEmployee","possibleDays","day","help","dayDate","toDate","dayNumber","setHours","earliestPossibleStartDate","getHours","x","datesToHighlight","map","selectCalendarDay","selectedDate","displayStartTimes","thisDate","daySpans","getPossibleTimespans","format","e","momentStart","startdate","startTimeDate","startTimeNumber","getTime","momentEnd","end","enddate","endTimeDate","endTimeNumber","thisSpans","getDay","getMonth","setModifiedStartDay","availableDateTimesLocal","suggestedTime","availableDateTimes","initTimeSections","startHours","Math","floor","momentDate","serverDateHelper","newDate","EarliestDateNumber","minuteSpan","minutes","getMinutes","minutesCounter","helper","helper2","round","setMinutes","y","z","avilableHoursSelect","Array","getIndexHourDay2DArray","timeSections","count","controls","length","i","removeAt","timeFrom","timeFromHours","momentStartDay","helpDate","timeTo","timeFromString","convertTime","timeToString","hourHeader","radioSection","isEmpty","counterDate","row","entry","findIndex","finalRow","selectAppointmentDate","newAppointmentStart","confirmInput","getCurrentEmployeeName","employee","find","shift","appointmentId","newStartDate","shiftTarget","catch","lastValueFrom","httpClient","baseURL","apiUrl","post","factory","providedIn","ViewContainerRef","TemplateRef","_availableDateTimes","d","calendarService","locationService","userConcernService","customerService","title","APPOINTMENT_CALENDAR_DAY_HOUR_HEADER_TEXT","setTitle","isReadOnly","form","chooseAvailabeDateVisible","getServerVariables","serverSettings","selectedLocationChanges$","selectedLocation","getDayOverviewCalendarData","notifyFormSent","customerFormSent","setReadonlyForm","isSent","disable","enable","rerender","outletRef","clear","createEmbeddedView","calendarRef","reconfigHighligtDates","userconcerns","getUserConcerns","getEmployee","getLocationCalendarDays","dates","calenderDays","log","getStartDate","calDay","notifyCalendarDay","earliestAppointmentStartInHours","EarliestDateNumberDev","calculateDayDisplay","timeStep","devSpans","setAvailableDateTimeLocal","selectedDateWithTime","selectedDay","getLocationCalendarDay","timespans","SelectAppointmentDate","viewQuery","EventEmitter","MAT_MOMENT_DATE_FORMATS","MomentDateAdapter","MatCalendar","DateAdapter","MAT_DATE_FORMATS","MAT_DATE_LOCALE","renderer","globalSettingService","dateadapter","selectedMonth","now","setLocale","languageChangeSubject","language","frmCalendar","serverDate","serverSettingsMaxDisplyedDays","maxCalculatedDays","minDate","maxDate","setDate","getDate","datesToHiglightList","onSelect","dateClass","highlightDate","dateEntry","some","isSame","selectedCalendarDay","emit","useValue","dialog","confirmError","translationTitleObject","showTitleInStepper","showConfirmationForm","frmGroup","enableForm","msg","dialogRef","open","width","afterClosed","result","markAsDirty","updateValueAndValidity","appointment_delete_code","confirm","lang","contactFormSuccesful","clearValidators","setValidators","valueChanges","dirty","getRessourceText","val","getReplaceText","str","deleteAppointmentCode","responseStatus","invalidValidation","onCallbackSubmit","status","submit","UntypedFormControl","BookAppointmentDto","checkCheckbox","c","createForm","requirementsChangedEvent","requirementBlueprints","frmContact","requiredTrue","sortNumber","requirementValues","bp","newValue","blueprintId","validators","getValidatorsForRequirementBlueprint","getDefaultValueForRequirementBlueprint","onChanges","displayNumber","useSMSService","useReCaptcha","siteKey","reCaptchaSiteKey","dataProtectionURL","formIsReadonly","isRequiredOnline","useValidation","regexp","RegExp","regularExpression","regularExpressionValidator","regExValidator","control","test","intValidator","intValidatorFN","parseInt","minDoubleValue","maxDoubleValue","doubleValidator","doubleValidatorFN","parseFloat","dateValidator","dateValidatorFN","multiSelectValidator","multiSelectValidatorFN","minSelectedValues","maxSelectedValue","formatDate","month","year","join","useDefaultValue","defaultTextValue","defaultBoolValue","defaultDoubleValue","defaultDateValue","selectedDefaultEnumValues","getName","index","postfix","languageCode","toLocaleLowerCase","local","localizations","defaultLocal","isDefault","getDescription","description","getCustomEnumName","bpIndex","enumIndex","customEnums","getCustomEnumTooltip","getSortedCustomEnums","getValidationError","validationMessage","errorMessage","nextStepIsEnabled","resolved","captchaResponse","submitForm","formSubmitProcess","bookAppointmentDto","convertToMoment","selDateString","selectedServiceDtos","saveData","formSuccessFullySent","notifyContactFormSuccessfulySent","deleteUserConcerns","outputs","IConcernGroupCounter","concernService","snackBar","CONCERN_DURATION_TEXT","showServiceDurationCurrentState","showInfo","concernShowInfoButton","concerns","getConcernInGroup","concernGroupid","ngAfterViewInit","calculateDuration","concern","countSelected","initialDuration","consecutiveDuration","changeUserConcern","action","updateUserConcernQuantity","updateSelectedCount","maxRepetitions","maxNumberOfConcernsGlobal","addEnabled","reduceEnabled","concernGroupCounter","amount","getSelectedConcernsQuantityInGroup","duration","getSelectedRecordDurationInGroup","concernGroupCounterNotify","loadedLocationsInvalid","openDialog","height","setReadonlyForm2","inputs","MAT_DIALOG_DATA","onClick","close","ctx","concernGroupService","workloadService","ngAfterContentInit","loadWorkload","frmConcern","showTotalDurationCurrentState","showServiceGroupDurationCurrentState","mutuallyExclusiveServiceGroups","maxEstimatedAppointmentDuration","getConcerns","_","getConcernGroups","getConcernGroupsVM","allConcernGroups","displayedConcernGroups","foundGroupIndex","concernGroupsCounter","calculateTotalDuration","grp","modifyConcern","item","totalServiceAmount","totalServiceDuration","notifyNumberOfConcerns","handleMaxEstimatedDuration","disableOtherGroupConcerns","enableOtherGroupConcerns","getGroupServiceNumber","guid","foundGroupRecord","getGroupServiceTime","setEmployee","_document","linkConfirmationFinished","linkConfirmationActivated","frmConfirmation","finishStepIsEnabled","showSelection","isInStep","confirmation_page","time","toLocaleTimeString","substring","toLocaleDateString","cultureSetting","confirmCode","ticket","ticketNumber","displayTicketNumber","bookAnother","messageToDisplay","yes","no","getElementById","innerHTML","onNoClick","getAllLanguages","languages","availableLanguages","selectedLanguage","updateLanguage","setLanguage","companyService","translateService","getLegalNotice","legalNotice","globalSettingsServices","smallscreen","frmLocation","getLocations","locations","fieldOfficeId","tmp","onLocationChange","formFielsAreDisabled","formatString","toLocaleString","hour","minute","mrChange","locationId","notifyLocationChange","qrScanService","ticketId","getQRSettings","settingsDto","enableFeature","useTicketInfoViaScanFeature","ticketImageDataString","ticketImageString","showTicketImage","getCheckedGeneralInfo","reloadDisabled","reloadTimer","setInterval","timeTillReload","clearInterval","securityQuestionEveryTime","requireSecurityCheck","protectGeneralInformation","hasLoadedGeneralInfoBefore","protectPersonalInformation","hasLoadedPrivateInfoBefore","protectHistory","hasLoadedHistoryBefore","openSecurityQuestion","securityValue","handleIndividualDataReload","getGeneralInfo","getPrivateInfo","getHistory","toggleGeneralInfo","showGeneralInfo","generalInfo","wrongAnswer","securitySuccessType","imageData","togglePrivateInfo","displayPrivateInfo","showPrivateInformationButton","privateInfo","getCheckedPrivateInfo","securitySubscription","toggleHistory","displayHistory","showTicketHistory","history","getCheckedHistory","information","eventVal","timestampVal","timestamp","nodeVal","node","userVal","user","eventInfoVal","eventInfo","showEvent","showTimestamp","showNode","showUser","showEventInfo","exitQueue","showError","toPromise","disableClose","maxWidth","exitQueueSecutiryCheck","protectExitQueueButton","executeExitQueue","leaveQueueSuccessfull","requirement","securityQuestionRequirement","QFlexQrScanService","checkSecurityValue","enteredSecurityValue","cancel","QFlexTicketInfoService","getTicketInfo","processHandle","ticketInfoService","check","searchDisabled","setTimeout","inputChanged","userconcernService","getUserConcerns$","add","userconcern","delete","quantity","deleteUserConcern","deleteAllData","el","nativeElement","filterElementRef","focus","listFilter","_listFilter","valueChange","ngOnChanges","changes","currentValue","hitMessage","hitCount","A11yModule","DragDropModule","PortalModule","ScrollingModule","CdkStepperModule","CdkTableModule","CdkTreeModule","MatAutocompleteModule","MatBadgeModule","MatBottomSheetModule","MatButtonModule","MatButtonToggleModule","MatCardModule","MatCheckboxModule","MatChipsModule","MatNativeDateModule","MatRippleModule","MatDatepickerModule","MatDialogModule","MatDividerModule","MatExpansionModule","MatGridListModule","MatIconModule","MatInputModule","MatListModule","MatMenuModule","MatPaginatorModule","MatProgressBarModule","MatProgressSpinnerModule","MatRadioModule","MatSelectModule","MatSidenavModule","MatSlideToggleModule","MatSliderModule","MatSnackBarModule","MatSortModule","MatStepperModule","MatTableModule","MatTabsModule","MatToolbarModule","MatTooltipModule","MatTreeModule","LOCATIONS","city","address","firstPossibleAppointment","IConcernGroupLocalization","IConcernGroup","IQFlexWorkloadDTO","IUserConcern","serverSettingDefaultLanguage","defaultLanguageCode","transform","args","hasOwnProperty","localizationValue","returnValue","pure","settings_time","replaceSettingRessources","timeStr","formatNumber","session","locale","sanitizer","html","bypassSecurityTrustHtml","args1","args2","number","numberString","String","getFormatDateString","startTime","endTime","CalendarService","urlApi","urlFilePath","clientUrl","urlFileName","urlDayApi","urlDayFilePath","_selectedDate","notifyDate","earliestDisplayDay","_earliestDisplayDay","latestDisplayDay","_latestDisplayDay","dateNow","dummy","startDate","getTimeSpansDate","dayTimeSpans","checkValidSpanDate","IsOK","startDayMidnight","locationid","userConcerns","nowDate","endDate","serviceUrl","handleError","numberDate","serviceDayUrl","urlDayString","requirementBlueprintDtos","operation","classame","CompanyService","urlFile","groupGuid","serviceGroupId","emptyConcernSelectForm","serviceIds","maxDuration","currentDuration","maxAmount","getConcern","foundItem","foundItems","countChange","foundIndex","foundRecord","forkJoin","configSettingFile","promise","then","res","slice","CustomerService","bookAtFieldOfficeAPIUrl","confirmAppointmentAPIUrl","deleteAppointmentAPIUrl","localizationLanguage","customerLanguageCode","element","qMobileEndUserId","deleteCode","InfoBannerService","Subject","LanguageService","allLanguages","defaultLanguage","l","changeLanguage","timeSettings","settings_minute","inputDate","convertDateTime","convertDate","replacePlaceholder","originalString","stringToReplace","warn","dateStr","dateTime","dateTimeString","changeSelectedLocation","selectedLocationSource","asObservable","_selectedLocation","employeeId","getLocation","getLocationsMock","MessageService","OnlineDesignService","signalR","QFlexWorkloadHub","hubConnection","HubConnectionBuilder","withUrl","withAutomaticReconnect","build","state","HubConnectionState","Disconnected","on","workloadDTO","workload","QFlexWorkloadService","wl","BehaviorSubject","ServerSettingService","tmpServerSettings","ServerSettingsService","updateCurrentTime","updateCurrentTimeSubject","_currentDateTime","getDateFromString","currentDateTimeObj","urlSystemDateTime","momentNow","localeGerman","SessionService","_locale","registerCulture","culture","splice","deleteUserConcernById","concernid","updateUserConcern","pageIndex","concernservice","stepperVertical","matches","stepperHorizontal","stepToInitPage","navUrl","startsWith","stepper","selectedIndex","appointmentCalender","contactForm","confirmation","param","stepConcernCheck","concernGroupFormGroup","emtpyFormGroup","stepLocationCheck","locationFormGroup","stepAppointmentCalendarCheck","appointmentCalenderFormGroup","stepContactFormCheck","contactFormGroup","stepConfirmationFormCheck","confirmationFormGroup","selectionChange","previouslySelectedIndex","environment","production","enableProdMode","__NgCli_bootstrap_1","bootstrapModule"],"sourceRoot":"webpack:///","x_google_ignoreList":[78]}