{"version":3,"file":"main.js","mappings":"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","sources":["./src/app/app-routing.module.ts","./src/app/app.component.html","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/check-in/model/attendance-limit.model.ts","./src/app/check-in/services/break-reminder.service.ts","./src/app/check-in/services/kick-out-timer.service.ts","./src/app/check-in/services/kiosk-session.service.ts","./src/app/check-in/services/kiosk.service.ts","./src/app/check-in/services/user-attendance.service.ts","./src/app/location/services/locations.service.ts","./src/app/material.module.ts","./src/app/setup/services/kiosk-setup.service.ts","./src/app/shared/components/auto-deduct-break-dialog/auto-deduct-dialog.component.ts","./src/app/shared/components/auto-deduct-break-dialog/auto-deduct-dialog.component.html","./src/app/shared/components/back-arrow-button/back-arrow-button.component.ts","./src/app/shared/components/code-input/code-input.component.ts","./src/app/shared/components/code-input/code-input.component.html","./src/app/shared/components/column-container/column-container.component.ts","./src/app/shared/components/column/column.component.ts","./src/app/shared/components/column/column.directive.ts","./src/app/shared/components/confirmation-dialog/confirmation-dialog.component.ts","./src/app/shared/components/confirmation-dialog/confirmation-dialog.component.html","./src/app/shared/components/datetime/datetime.component.ts","./src/app/shared/components/datetime/datetime.component.html","./src/app/shared/components/dialog-container/dialog-container.component.ts","./src/app/shared/components/dialog-container/dialog-container.component.html","./src/app/shared/components/empty-location/empty-location.component.ts","./src/app/shared/components/footer-bar/footer-bar.component.ts","./src/app/shared/components/footer-bar/footer-bar.component.html","./src/app/shared/components/header-bar/header-bar.component.html","./src/app/shared/components/header-bar/header-bar.component.ts","./src/app/shared/components/hold-button/hold-button.component.ts","./src/app/shared/components/hold-button/hold-button.component.html","./src/app/shared/components/icon/icon.component.ts","./src/app/shared/components/icon/icon.component.html","./src/app/shared/components/language-picker/language-picker.component.ts","./src/app/shared/components/language-picker/language-picker.component.html","./src/app/shared/components/loading-spinner/loading-spinner.component.ts","./src/app/shared/components/primary-button/primary-button.component.ts","./src/app/shared/components/primary-button/primary-button.component.html","./src/app/shared/components/progress-bar/progress-bar.component.ts","./src/app/shared/components/progress-bar/progress-bar.component.html","./src/app/shared/components/raised-button/raised-button.component.ts","./src/app/shared/components/raised-button/raised-button.component.html","./src/app/shared/components/refresh-button/refresh-button.component.ts","./src/app/shared/components/secondary-button/secondary-button.component.ts","./src/app/shared/components/secondary-button/secondary-button.component.html","./src/app/shared/components/sidebar/sidebar.component.html","./src/app/shared/components/sidebar/sidebar.component.ts","./src/app/shared/components/success-screen-container/success-screen-container.component.ts","./src/app/shared/components/transactional-dialog/transactional-dialog.component.ts","./src/app/shared/components/transactional-dialog/transactional-dialog.component.html","./src/app/shared/components/user-avatar/user-avatar.component.html","./src/app/shared/components/user-avatar/user-avatar.component.ts","./src/app/shared/directives/click-outside.directive.ts","./src/app/shared/directives/holdable.directive.ts","./src/app/shared/handlers/global-error-handler.ts","./src/app/shared/helpers/attendance.helpers.ts","./src/app/shared/illustrations/error-illustration.component.ts","./src/app/shared/illustrations/logged-out-illustration.component.ts","./src/app/shared/illustrations/mountain-illustration.component.ts","./src/app/shared/illustrations/success-illustration.component.ts","./src/app/shared/pipes/compact-duration.pipe.ts","./src/app/shared/pipes/duration.pipe.ts","./src/app/shared/pipes/hour.pipe.ts","./src/app/shared/pipes/translate-with-data.pipe.ts","./src/app/shared/pipes/translate.pipe.ts","./src/app/shared/services/auth.service.ts","./src/app/shared/services/error.service.ts","./src/app/shared/services/guard-loading.service.ts","./src/app/shared/services/http-client.service.ts","./src/app/shared/services/internationalization.service.ts","./src/app/shared/services/navigation.service.ts","./src/app/shared/services/persistence.service.ts","./src/app/shared/services/progress.service.ts","./src/app/shared/services/theme-color.service.ts","./src/app/shared/services/translation.service.ts","./src/app/shared/services/user-event-logger.service.ts","./src/app/shared/shared.module.ts","./src/environments/environment.ts","./src/main.ts","./src/app/i18n/i18n.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nconst routes: Routes = [\n {\n path: 'sign-in',\n loadChildren: () => import('./sign-in/sign-in.module').then(m => m.SignInModule)\n },\n {\n path: 'locations',\n loadChildren: () => import('./location/location.module').then(m => m.LocationModule),\n },\n {\n path: 'setup',\n loadChildren: () => import('./setup/setup.module').then(m => m.SetupModule)\n },\n {\n path: 'check-in',\n loadChildren: () => import('./check-in/check-in.module').then(m => m.CheckInModule),\n },\n {\n path: '**',\n redirectTo: 'sign-in'\n }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","
\n \n \n \n
\n \n \n \n \n \n\n","import { Component } from '@angular/core';\nimport { ChildrenOutletContexts } from '@angular/router';\nimport { GuardLoadingService } from './shared/services/guard-loading.service';\nimport { ThemeColorService } from './shared/services/theme-color.service';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n})\nexport class AppComponent {\n title = 'kenjo-kiosk';\n guardLoading$ = this.guardLoadingService.guardLoading$;\n constructor(private contexts: ChildrenOutletContexts, private guardLoadingService: GuardLoadingService, private colorThemeService: ThemeColorService) {\n this.colorThemeService.applyStoredColor();\n }\n\n getRouteAnimationData() {\n return this.contexts.getContext('primary')?.route?.snapshot?.data?.animation;\n }\n}\n","import { BrowserModule } from '@angular/platform-browser';\nimport { ErrorHandler, LOCALE_ID, NgModule } from '@angular/core';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { SharedModule } from './shared/shared.module';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { RouterModule } from '@angular/router';\nimport { GlobalErrorHandler } from './shared/handlers/global-error-handler';\n\n@NgModule({\n declarations: [\n AppComponent\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n SharedModule,\n BrowserAnimationsModule\n ],\n exports: [\n RouterModule\n ],\n providers: [{ provide: LOCALE_ID, useValue: 'kenjo-locale' }, { provide: ErrorHandler, useClass: GlobalErrorHandler }],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { IUserAttendance } from './user-attendance.model';\nimport { IAttendancePolicy } from '@app/setup/model/attendance-settings.model';\n\ntype AttendanceLimitKey = 'breakReminder' | 'maxHoursPerDay';\n\nexport async function checkLimits(\n userProfile: string,\n attendanceEntry: IUserAttendance,\n attendanceOfTheDay: Array,\n attendancePolicy: IAttendancePolicy\n): Promise {\n if (['admin', 'hr-admin'].includes(userProfile)) {\n return undefined;\n }\n\n const maxHoursPerDayLimit = new MaxHoursPerDayAttendanceLimit(\n attendanceEntry,\n attendancePolicy\n );\n const maxHoursPerDayStatus =\n maxHoursPerDayLimit.checkLimit(attendanceOfTheDay);\n\n if (maxHoursPerDayStatus?.broken) {\n return maxHoursPerDayLimit;\n }\n\n return undefined;\n}\n\nexport class AttendanceLimit {\n public key: AttendanceLimitKey = 'breakReminder';\n public newEndTime?: number;\n public allowsSaving: boolean = true;\n public modalTitleKey: string = '';\n public modalTextKey: string = '';\n public modalData: Record;\n\n constructor(\n public attendanceEntry: IUserAttendance,\n public attendancePolicy: IAttendancePolicy\n ) {}\n\n getEntryDuration(entry?: IUserAttendance) {\n const attendanceEntry = entry || this.attendanceEntry;\n if (\n attendanceEntry.endTime === undefined ||\n attendanceEntry.startTime === undefined\n ) {\n return 0;\n }\n\n const breakDuration = attendanceEntry.breaks\n ? attendanceEntry.breaks.reduce(\n (total, iBreak) =>\n total + (iBreak.end !== undefined ? iBreak.end - iBreak.start : 0),\n 0\n )\n : attendanceEntry.breakTime ?? 0;\n\n return attendanceEntry.endTime - attendanceEntry.startTime - breakDuration;\n }\n}\n\nexport class MaxHoursPerDayAttendanceLimit extends AttendanceLimit {\n key: AttendanceLimitKey = 'maxHoursPerDay';\n public modalTitleKey: string = 'maxHoursPerDayTitle';\n public modalTextKey: string = 'maxHoursPerDayText';\n\n checkLimit(todayAttendance: Array) {\n const limitDailyHours = this.attendancePolicy.limitDailyHours;\n if (!limitDailyHours.isActive || limitDailyHours.conflicts) {\n return undefined;\n }\n\n const otherEntries = todayAttendance.filter(\n (iAttendance) => iAttendance._id !== this.attendanceEntry._id\n );\n\n const totalTracked = [...otherEntries, this.attendanceEntry].reduce(\n (total, iAttendance) => total + this.getEntryDuration(iAttendance),\n 0\n );\n\n const { limit } = limitDailyHours;\n const difference = totalTracked - limit;\n const newEndTime = this.attendanceEntry.endTime - difference;\n this.newEndTime = newEndTime;\n\n this.modalData = { newEndTime, maxHoursPerDay: limit };\n return { broken: difference > 0, difference };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClientService } from '@app/shared/services/http-client.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { IUserAttendance } from '../model/user-attendance.model';\nimport { IBreakReminderInfo } from '../model/break-reminder.model';\nimport { AuthService } from '@app/shared/services/auth.service';\nimport { environment } from '@env';\nimport { ErrorService } from '@app/shared/services/error.service';\nimport { TranslatePipe } from '@app/shared/pipes/translate.pipe';\nimport { IBreakReminderDuration } from '../components/break-reminder/break-reminder.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BreakReminderService {\n public breakReminderInfo$ = new BehaviorSubject({ openReminder: false });\n\n constructor(private http: HttpClientService, private auth: AuthService, private errorService: ErrorService, private translatePipe: TranslatePipe) { }\n\n async checkBreakReminder({ _userId, date }: IUserAttendance, todayAttendance: Array) {\n const thereAreBreaksTodayAlready = todayAttendance.some(iEntry => !!iEntry.breaks?.length);\n if (thereAreBreaksTodayAlready) {\n return { openReminder: false }\n }\n const body = { _userId, date, interface: 'kiosk-pin-code' };\n const result = await this.http.post(`${environment.PEOPLE_CLOUD_APP_URL}/controller/attendance/break-reminder/get-configuration`, body, this.auth.getAuthHeader());\n this.breakReminderInfo$.next(result);\n }\n\n clearBreakReminder() {\n this.breakReminderInfo$.next({ openReminder: false });\n }\n\n async saveBreak(\n attendanceEntry: IUserAttendance,\n breakReminderDuration: IBreakReminderDuration,\n id: string\n ) {\n try {\n const userId = id;\n const date = attendanceEntry.date;\n const entryInterface = 'kiosk-pin-code';\n const { breakStart, breakEnd, total } = breakReminderDuration;\n const newBreaks = [{ start: breakStart, end: breakEnd }];\n const breaks = [...this.breakReminderInfo$.getValue().breaks, newBreaks[0]];\n const body = { _userId: userId, date, _interface: entryInterface, breaks, pinCode: breakReminderDuration.pincode };\n await this.http.post(`${environment.PEOPLE_CLOUD_APP_URL}/controller/attendance/break-reminder/distribute-breaks`, body, this.auth.getAuthHeader());\n const lastModifiedEntry = { ...attendanceEntry, breaks: newBreaks, breakTime: total };\n return lastModifiedEntry;\n } catch(e) {\n if (e.error === 'Break conflict') {\n this.errorService.displayError(this.translatePipe.transform('breakReminderBreakConflict'));\n } else if (e.error === 'Time off conflict') {\n this.errorService.displayError(this.translatePipe.transform('breakReminderTimeOffConflict'));\n } else {\n this.errorService.displayError(\n this.translatePipe.transform('somethingWentWrongActionNotSaved')\n );\n }\n\n if (e.status === 0) {\n this.errorService.connectionErrorHandler();\n return false;\n }\n this.errorService.logErrorForDevelopers(e);\n return false;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { KioskService } from './kiosk.service';\nimport { MatLegacyDialog as MatDialog } from '@angular/material/legacy-dialog';\nimport { NavigationService } from '@app/shared/services/navigation.service';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport { BreakReminderService } from './break-reminder.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class KickOutTimerService {\n timeoutIntervalRef: any;\n constructor(\n private kioskService: KioskService,\n private navigationService: NavigationService,\n private dialogRef: MatDialog,\n private breakReminderService: BreakReminderService\n ) {}\n\n initTimeout() {\n this.timeoutIntervalRef = setTimeout(() => {\n this.kickOut();\n }, 20 * 1000);\n }\n\n restartTimeout() {\n this.flushTimeout();\n this.initTimeout();\n }\n\n flushTimeout() {\n clearTimeout(this.timeoutIntervalRef);\n }\n\n kickOut() {\n const breakReminderActive =\n this.breakReminderService.breakReminderInfo$.getValue()?.openReminder;\n\n if (breakReminderActive) {\n this.breakReminderService.clearBreakReminder();\n this.kioskService.handleAutoDeductBreak(\n this.kioskService.lastAttendanceEntry$.getValue(),\n this.kioskService.pincodeUser$.getValue()?.userPolicy,\n this.kioskService.lastAttendanceEntry$.getValue(),\n this.kioskService.pincodeUser$.getValue()?.userProfile\n );\n }\n this.flushTimeout();\n this.dialogRef.closeAll();\n this.kioskService.flushPincodeUser();\n this.navigationService.goToPinCode();\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { TranslatePipe } from '@app/shared/pipes/translate.pipe';\nimport { AuthService } from '@app/shared/services/auth.service';\nimport { ErrorService } from '@app/shared/services/error.service';\nimport { HttpClientService } from '@app/shared/services/http-client.service';\nimport { NavigationService } from '@app/shared/services/navigation.service';\nimport { PersistenceService } from '@app/shared/services/persistence.service';\nimport { environment } from '@env';\nimport { EntryMethod, IKioskSession } from '../model/kiosk-session.model';\nimport { ThemeColorService } from '@app/shared/services/theme-color.service';\nimport * as dayjs from 'dayjs';\n\ndeclare const window: any;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class KioskSessionService {\n public qrCodeHash$ = new BehaviorSubject(undefined);\n public sessionAvailableMethods$ = new BehaviorSubject>([]);\n public welcomeMessage$ = new BehaviorSubject(undefined);\n public imageUrl$ = new BehaviorSubject(undefined);\n public selectedEntryMethod: EntryMethod;\n public kioskSession$ = new BehaviorSubject(\n undefined\n );\n\n private checkInterval: any;\n private timeOutRef: any;\n\n private connectionStatusSubject = new BehaviorSubject(true);\n public connectionStatus$ = this.connectionStatusSubject.asObservable();\n\n constructor(\n private injector: Injector,\n private errorService: ErrorService,\n private persistenceService: PersistenceService\n ) {}\n\n public updateOnlineStatus(isOnline: boolean) {\n this.connectionStatusSubject.next(isOnline);\n }\n\n async createKioskSession(\n locationId: string,\n entryMethods: Array,\n welcomeMessage: string,\n themeColor?: string,\n name?: string\n ) {\n try {\n const currentDate = dayjs();\n const expirationDate = currentDate.add(1, 'year');\n\n const session = await this.injector\n .get(HttpClientService)\n .post(\n `${environment.PEOPLE_CLOUD_APP_URL}/attendance-kiosk-session-db/`,\n {\n locationId,\n entryMethods,\n welcomeMessage,\n themeColor,\n name,\n expirationDate,\n },\n this.injector.get(AuthService).getAuthHeader()\n );\n\n this.kioskSession$.next(session);\n this.clearPreLaunchPersistence();\n this.injector.get(PersistenceService).setItem('sessionId', session._id);\n return { error: false };\n } catch (error) {\n this.injector\n .get(ErrorService)\n .displayError(\n this.injector\n .get(TranslatePipe)\n .transform('couldNotActivateKioskErrorMessage')\n );\n this.errorService.logErrorForDevelopers(error);\n return { error: true };\n }\n }\n\n clearPreLaunchPersistence() {\n this.injector.get(PersistenceService).clearItem('sessionId');\n this.injector.get(PersistenceService).clearItem('welcomeMessage');\n this.injector.get(PersistenceService).clearItem('locationId');\n this.injector.get(PersistenceService).clearItem('selectedThemeColor');\n this.injector.get(PersistenceService).clearItem('pinCodeActive');\n this.injector.get(PersistenceService).clearItem('qrCodeActive');\n }\n\n async initCheckKioskStatusInterval() {\n clearTimeout(this.checkInterval);\n await this.checkKioskStatusInInterval();\n }\n\n async checkKioskStatusInInterval() {\n clearTimeout(this.timeOutRef);\n clearTimeout(this.checkInterval);\n try {\n const session = this.getCurrentSession();\n if (session === undefined) {\n this.injector.get(NavigationService).goToLogIn();\n }\n\n let kioskSession = {} as IKioskSession;\n try {\n kioskSession = await this.injector\n .get(HttpClientService)\n .get(\n `${environment.PEOPLE_CLOUD_APP_URL}/controller/kiosk/status/${session._id}/${this.selectedEntryMethod}`,\n this.injector.get(AuthService).getAuthHeader()\n );\n\n if (kioskSession.token) {\n this.persistenceService.setItem('accessToken', kioskSession.token);\n this.persistenceService.setItem('userId', kioskSession.userId);\n this.reloadApp();\n }\n\n this.checkKioskVersion(kioskSession.version);\n } catch (networkError) {\n this.errorService.logErrorForDevelopers(networkError);\n const qrHasBeenDisabled =\n networkError?.error?.errorKey === 'qrCodeNotEnabled';\n if (qrHasBeenDisabled) {\n kioskSession = await this.injector\n .get(HttpClientService)\n .get(\n `${environment.PEOPLE_CLOUD_APP_URL}/controller/kiosk/status/${session._id}/pincode`,\n this.injector.get(AuthService).getAuthHeader()\n );\n } else {\n throw networkError;\n }\n }\n\n this.kioskSession$.next(kioskSession);\n if (kioskSession.themeColor) {\n this.injector\n .get(ThemeColorService)\n .setSelectedThemeColor(kioskSession.themeColor);\n this.injector.get(ThemeColorService).applyTheme();\n }\n this.sessionAvailableMethods$.next(kioskSession.entryMethods);\n const noMethodsAvailable = this.checkEntryMethods(\n kioskSession.entryMethods\n );\n if (noMethodsAvailable) {\n return;\n }\n\n this.emitNewQRHash(kioskSession);\n\n const nextCheckInSeconds = kioskSession.expiresInSeconds\n ? kioskSession.expiresInSeconds + 2\n : 30;\n this.checkInterval = setTimeout(() => {\n this.checkKioskStatusInInterval();\n }, nextCheckInSeconds * 1000);\n this.updateOnlineStatus(true);\n } catch (error) {\n this.errorService.logErrorForDevelopers(error);\n const kioskWasClosed = error?.status === 410;\n if (kioskWasClosed) {\n this.closeKiosk();\n return;\n }\n\n this.timeOutRef = setTimeout(() => {\n this.checkKioskStatusInInterval();\n }, 40000);\n\n if (error.status === 0) {\n this.updateOnlineStatus(false);\n } else {\n this.injector\n .get(ErrorService)\n .displayError(\n this.injector.get(TranslatePipe).transform('somethingWentWrong')\n );\n }\n }\n }\n\n setEntryMethod(entryMethod: EntryMethod) {\n this.selectedEntryMethod = entryMethod;\n this.injector\n .get(PersistenceService)\n .setItem('selectedEntryMethod', entryMethod);\n }\n\n getCurrentSession() {\n const currentOne = this.kioskSession$.getValue();\n if (currentOne !== undefined) {\n return currentOne;\n }\n const storedSessionId = this.injector\n .get(PersistenceService)\n .getItem('sessionId');\n if (storedSessionId === undefined) {\n return undefined;\n }\n return { _id: storedSessionId } as IKioskSession;\n }\n\n emitNewQRHash(kioskStatus: IKioskSession) {\n if (\n kioskStatus._qrHash !== undefined &&\n this.selectedEntryMethod === 'qrCode'\n ) {\n this.qrCodeHash$.next(kioskStatus._qrHash);\n }\n }\n\n checkEntryMethods(entryMethods: Array) {\n if (entryMethods.length === 0) {\n this.goBackToLocations();\n return true;\n }\n\n if (entryMethods.includes(this.selectedEntryMethod)) {\n return false;\n }\n\n this.injector.get(NavigationService).goToCheckIn(entryMethods);\n return false;\n }\n\n goBackToLocations() {\n this.clearSession();\n this.injector.get(NavigationService).goToLocations();\n }\n\n closeKiosk() {\n this.clearSession();\n this.injector.get(AuthService).killKioskSession();\n }\n\n clearSession() {\n this.qrCodeHash$.next(undefined);\n this.kioskSession$.next(undefined);\n this.selectedEntryMethod = undefined;\n\n this.injector.get(PersistenceService).clearItem('selectedEntryMethod');\n this.injector.get(PersistenceService).clearItem('locationId');\n this.injector.get(PersistenceService).clearItem('sessionId');\n\n this.injector.get(ThemeColorService).clearSelectedThemeColor();\n this.injector.get(ThemeColorService).restoreTheme();\n }\n\n checkKioskVersion(version: string) {\n if (!version) {\n return;\n }\n\n const currentVersion = this.injector\n .get(PersistenceService)\n .getItem('version');\n if (!currentVersion || Number(currentVersion) < Number(version)) {\n this.injector\n .get(PersistenceService)\n .setItem('version', version.toString());\n this.reloadApp();\n }\n }\n\n reloadApp() {\n window.location.reload(true);\n }\n}\n","import { environment } from '@env';\nimport { BehaviorSubject } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { BreakReminderService } from './break-reminder.service';\nimport { AuthService } from '@app/shared/services/auth.service';\nimport { TranslatePipe } from '@app/shared/pipes/translate.pipe';\nimport { ErrorService } from '@app/shared/services/error.service';\nimport { HttpClientService } from '@app/shared/services/http-client.service';\nimport { UserEventLoggerService } from '@app/shared/services/user-event-logger.service';\nimport {\n IAttendanceCategory,\n IAttendancePolicy,\n} from '@app/setup/model/attendance-settings.model';\nimport {\n AttendanceLimit,\n checkLimits as checkPreSaveLimits,\n} from '../model/attendance-limit.model';\nimport {\n IAttendanceAutomation,\n IAttendanceBreak,\n IUserAttendance,\n IUserAttendanceInfo,\n} from '../model/user-attendance.model';\nimport {\n filterForbiddenUserAttendanceFields,\n isAutoDeductBreakNeeded,\n} from '@app/shared/helpers/attendance.helpers';\nimport { UserAttendanceService } from './user-attendance.service';\nimport {\n PunchClockValidator,\n UserAttendance as IUserAttendanceLib,\n} from '@carlos-orgos/kenjo-shared-libs';\nimport * as dayjs from 'dayjs';\n\ntype PincodeValidationResponse = {\n response?: IUserAttendanceInfo;\n error?: string;\n};\n@Injectable({\n providedIn: 'root',\n})\nexport class KioskService {\n public pincodeUser$ = new BehaviorSubject(\n undefined\n );\n public attendancePolicy$ = new BehaviorSubject(\n undefined\n );\n public attendanceCategoriesInfo$ = new BehaviorSubject<\n Array | undefined\n >(undefined);\n public userPinCode: string;\n public actualAttendance$ = new BehaviorSubject(\n {}\n );\n\n public lastAttendanceEntry$ = new BehaviorSubject<\n IUserAttendance | undefined\n >({});\n public currentOpenBreak$ = new BehaviorSubject(\n undefined\n );\n public brokenAttendanceLimit$ = new BehaviorSubject<\n AttendanceLimit | undefined\n >(undefined);\n public lastModifiedEntry: IUserAttendance;\n private OVERNIGHT_MARGIN = 14;\n private DAY_HOURS = 24;\n\n public showDailyTotal = false;\n\n public splittedAttendanceEntries: {\n modifiedEntries: IUserAttendance[];\n originalEntries: IUserAttendance[];\n result: string;\n };\n public splittedAttendanceEntries$ = new BehaviorSubject<\n IUserAttendance[] | undefined\n >(undefined);\n\n HTTP_ERROR_MESSAGES = {\n INACTIVE_POLICY: 'Your attendance policy does not allow PIN code',\n };\n\n constructor(\n private http: HttpClientService,\n private auth: AuthService,\n private errorService: ErrorService,\n private translatePipe: TranslatePipe,\n private userEventLogger: UserEventLoggerService,\n private breakReminderService: BreakReminderService,\n private userAttendanceService: UserAttendanceService\n ) {}\n\n async validatePincode(pincode: string): Promise {\n try {\n const userAttendanceInfo = await this.http.get(\n `${environment.PEOPLE_CLOUD_APP_URL}/controller/kiosk/validate-pincode/${pincode}`,\n this.auth.getAuthHeader()\n );\n this.checkAttendanceEntries(userAttendanceInfo);\n this.pincodeUser$.next(userAttendanceInfo);\n this.attendanceCategoriesInfo$.next(\n userAttendanceInfo.attendanceCategories\n );\n this.userPinCode = pincode;\n this.computeLastAttendanceEntry(userAttendanceInfo.userAttendance);\n return { response: userAttendanceInfo };\n } catch (error) {\n if (error.error === this.HTTP_ERROR_MESSAGES.INACTIVE_POLICY) {\n return { error: 'invalidPolicy' };\n }\n\n if (error.status === 422 || error.status === 401) {\n return { error: 'incorrectCode' };\n }\n\n this.errorService.logErrorForDevelopers(error);\n return { error };\n }\n }\n\n async refreshAttendanceInfo() {\n try {\n const currentUserId = this.pincodeUser$.getValue().userId;\n const userAttendance = await this.http.get>(\n `${environment.PEOPLE_CLOUD_APP_URL}/controller/kiosk/attendance-info/${currentUserId}`,\n this.auth.getAuthHeader()\n );\n this.actualAttendance$.next(userAttendance[userAttendance.length - 1]);\n this.pincodeUser$.next({\n ...this.pincodeUser$.getValue(),\n userAttendance,\n });\n this.computeLastAttendanceEntry(userAttendance);\n return { response: userAttendance };\n } catch (error) {\n this.errorService.logErrorForDevelopers(error);\n return { error: 'NOT FOUND' };\n }\n }\n\n async clockIn(): Promise<{ error: boolean }> {\n const newAttendanceEntry = this.createEmptyAttendanceEntry();\n newAttendanceEntry.startTime =\n new Date().getHours() * 60 + new Date().getMinutes();\n newAttendanceEntry['pinCode'] = this.userPinCode;\n const overlappingShift = this.checkOverlapping(\n newAttendanceEntry,\n this.pincodeUser$.getValue().userAttendance\n );\n if (overlappingShift) {\n this.errorService.displayError(\n this.translatePipe.transform('overlappingEntry')\n );\n return { error: true };\n }\n\n try {\n await this.http.post(\n `${environment.PEOPLE_CLOUD_APP_URL}/user-attendance-db/`,\n newAttendanceEntry,\n this.auth.getAuthHeader()\n );\n await this.userEventLogger.logEvent('CHECK_IN_PIN');\n await this.refreshAttendanceInfo();\n return { error: false };\n } catch (error) {\n if (error.status === 0) {\n this.errorService.connectionErrorHandler();\n return { error };\n } else if (\n error.error ===\n 'Attendance entry can not be within a time time off request.'\n ) {\n this.errorService.displayError(\n this.translatePipe.transform('timeOffEntryError')\n );\n return { error };\n }\n this.errorService.logAndDisplayUnrecognizedError(error);\n return { error };\n }\n }\n\n async checkOut(params?: { fromBreak: boolean }): Promise {\n const currentAttendanceEntry = this.lastAttendanceEntry$.getValue();\n const attendancePolicy =\n this.attendancePolicy$.getValue() ??\n this.pincodeUser$.getValue()?.userPolicy;\n const minutes = new Date().getHours() * 60 + new Date().getMinutes();\n currentAttendanceEntry.endTime =\n minutes < currentAttendanceEntry.startTime ? minutes + 1440 : minutes;\n let userAttendance = [...this.pincodeUser$.getValue().userAttendance];\n userAttendance = userAttendance.filter(\n (iUserAttendance) =>\n iUserAttendance.startTime !== currentAttendanceEntry.startTime &&\n iUserAttendance.endTime !== currentAttendanceEntry.endTime\n );\n\n const isOverlapping = this.checkOverlapping(\n currentAttendanceEntry,\n userAttendance\n );\n let [_, todayAttendance] = this.splitAttendanceEntries(\n this.pincodeUser$.getValue().userAttendance\n );\n const preSaveBrokenLimit = await checkPreSaveLimits(\n this.pincodeUser$.getValue().userProfile,\n currentAttendanceEntry,\n todayAttendance,\n this.pincodeUser$.getValue()?.userPolicy\n );\n\n if (preSaveBrokenLimit?.allowsSaving === false) {\n return;\n }\n\n let endTime =\n preSaveBrokenLimit?.newEndTime !== undefined &&\n !attendancePolicy?.limitDailyHours.conflicts\n ? preSaveBrokenLimit?.newEndTime\n : currentAttendanceEntry.endTime;\n\n try {\n const requestBody = {\n endTime,\n pinCode: this.userPinCode,\n interface: 'kiosk-pin-code',\n } as IUserAttendance;\n if (preSaveBrokenLimit?.key === 'maxHoursPerDay') {\n await this.userEventLogger.logEvent('MAX_DAILY_HOURS');\n requestBody.automation =\n params?.fromBreak === true\n ? this.getMaxHoursPerDayFromBreakAutomationInfo(\n currentAttendanceEntry,\n preSaveBrokenLimit.newEndTime\n )\n : this.getMaxHoursPerDayAutomationInfo(\n currentAttendanceEntry,\n preSaveBrokenLimit.newEndTime\n );\n }\n\n if (isOverlapping) {\n const body = {\n entryToBeSplit: {\n ...currentAttendanceEntry,\n interface: 'kiosk-pin-code',\n pinCode: this.userPinCode,\n profileKey: this.pincodeUser$.getValue().userProfile,\n },\n };\n\n const { modifiedEntries, originalEntries, result } =\n await this.http.post<{\n result: string;\n modifiedEntries: IUserAttendance[];\n originalEntries: IUserAttendance[];\n }>(\n `${environment.PEOPLE_CLOUD_APP_URL}/user-attendance-db/split-entries`,\n body,\n this.auth.getAuthHeader()\n );\n this.splittedAttendanceEntries = {\n modifiedEntries,\n originalEntries,\n result,\n };\n\n if (!modifiedEntries || !originalEntries) {\n return;\n }\n\n this.splittedAttendanceEntries$.next(\n this.splittedAttendanceEntries.modifiedEntries\n );\n const currentEntry = this.getCurrentEntry(modifiedEntries);\n endTime = currentEntry.endTime;\n this.lastAttendanceEntry$.next(currentEntry);\n this.lastModifiedEntry = currentEntry;\n } else {\n await this.http.put(\n `${environment.PEOPLE_CLOUD_APP_URL}/user-attendance-db/${currentAttendanceEntry._id}`,\n {\n ...requestBody,\n profileKey: this.pincodeUser$.getValue().userProfile,\n },\n this.auth.getAuthHeader()\n );\n }\n\n await this.breakReminderService.checkBreakReminder(\n currentAttendanceEntry,\n todayAttendance\n );\n if (\n !this.splittedAttendanceEntries ||\n this.splittedAttendanceEntries.result !== 'errors'\n ) {\n this.brokenAttendanceLimit$.next(preSaveBrokenLimit);\n }\n\n if (!this.splittedAttendanceEntries$.getValue()) {\n this.lastModifiedEntry = { ...currentAttendanceEntry, endTime };\n }\n if (\n !this.breakReminderService?.breakReminderInfo$?.getValue()?.openReminder\n ) {\n await this.handleAutoDeductBreak(\n currentAttendanceEntry,\n attendancePolicy,\n {\n ...requestBody,\n endTime,\n },\n this.pincodeUser$.getValue().userProfile\n );\n }\n await this.refreshAttendanceInfo();\n\n return true;\n } catch (error) {\n if (error.status === 0) {\n this.errorService.connectionErrorHandler();\n return false;\n }\n this.errorService.logAndDisplayUnrecognizedError(error);\n return false;\n }\n }\n\n private getCurrentMinutes = (): number => {\n const currentTime = dayjs();\n const hours = currentTime.hour();\n const minutes = currentTime.minute();\n const totalMinutes = hours * 60 + minutes;\n return totalMinutes;\n };\n\n private getCurrentEntry(\n entries: IUserAttendance[]\n ): IUserAttendance | undefined {\n const currentMinutes = this.getCurrentMinutes();\n\n const currentEntry = entries.find(\n (entry) =>\n entry.startTime !== undefined &&\n entry.endTime !== undefined &&\n entry.startTime <= currentMinutes &&\n entry.endTime >= currentMinutes\n );\n\n if (currentEntry) {\n return currentEntry;\n }\n\n const lastValidEntry = entries\n .filter(\n (entry) =>\n entry.endTime !== undefined && entry.endTime <= currentMinutes\n )\n .sort((a, b) => (b.endTime ?? 0) - (a.endTime ?? 0))[0];\n\n return lastValidEntry;\n }\n\n checkAttendanceLimits(\n attendanceEntry: IUserAttendance\n ): AttendanceLimit | undefined {\n const otherAttendanceEntries = this.pincodeUser$.getValue().userAttendance;\n // otherAttendanceEntries.pop();\n const overlappingShift = this.checkOverlapping(\n attendanceEntry,\n otherAttendanceEntries\n );\n if (overlappingShift) {\n // TO-DO: Open split request dialog\n // this.errorService.displayError(this.translatePipe.transform('overlappingEntry'));\n // this.brokenAttendanceLimit$.next(new AttendanceLimit('overlap'));\n }\n\n return undefined;\n }\n\n getMaxHoursPerDayAutomationInfo(\n attendanceEntry: IUserAttendance,\n newEndTime: number\n ): IAttendanceAutomation {\n return {\n key: 'attendance-automation-max-hours',\n changes: [\n {\n fieldChanged: 'endTime',\n newValue: newEndTime,\n oldValue: attendanceEntry.endTime,\n },\n ],\n };\n }\n\n getMaxHoursPerDayFromBreakAutomationInfo(\n attendanceEntry: IUserAttendance,\n newEndTime: number\n ): IAttendanceAutomation {\n return {\n key: 'attendance-automation-max-hours',\n changes: [\n {\n fieldChanged: 'breaks',\n newValue: '',\n oldValue: `${attendanceEntry.endTime}-`,\n },\n {\n fieldChanged: 'endTime',\n newValue: newEndTime,\n oldValue: undefined,\n },\n ],\n };\n }\n\n clearAttendanceLimitModal() {\n this.brokenAttendanceLimit$.next(undefined);\n }\n\n async startBreak() {\n const currentAttendanceEntry = this.lastAttendanceEntry$.getValue();\n const startBreakTime = this.getBreakTimeFor(currentAttendanceEntry);\n\n const [_, todayAttendance] = this.splitAttendanceEntries(\n this.pincodeUser$.getValue().userAttendance\n );\n const brokenLimitIfItWasCheckOut = await checkPreSaveLimits(\n this.pincodeUser$.getValue().userProfile,\n { ...currentAttendanceEntry, endTime: startBreakTime },\n todayAttendance,\n this.pincodeUser$.getValue()?.userPolicy\n );\n\n if (brokenLimitIfItWasCheckOut?.key === 'maxHoursPerDay') {\n return { error: brokenLimitIfItWasCheckOut?.key };\n }\n\n const breaks = currentAttendanceEntry.breaks\n ? [...currentAttendanceEntry.breaks, { start: startBreakTime }]\n : [{ start: startBreakTime }];\n const requestBody = {\n breaks,\n pinCode: this.userPinCode,\n interface: 'kiosk-pin-code',\n };\n\n const tempUserAttendance = { ...currentAttendanceEntry };\n const minutes = new Date().getHours() * 60 + new Date().getMinutes();\n tempUserAttendance.endTime =\n minutes < tempUserAttendance.startTime ? minutes + 1440 : minutes;\n let userAttendance = [...this.pincodeUser$.getValue().userAttendance];\n userAttendance = userAttendance.filter(\n (iUserAttendance) =>\n iUserAttendance.startTime !== tempUserAttendance.startTime &&\n iUserAttendance.endTime !== tempUserAttendance.endTime &&\n iUserAttendance.date === tempUserAttendance.date\n );\n\n const isOverlapping = this.checkOverlapping(\n tempUserAttendance,\n userAttendance\n );\n\n if (isOverlapping) {\n const body = {\n entryToBeSplit: {\n ...tempUserAttendance,\n interface: 'kiosk-pin-code',\n pinCode: this.userPinCode,\n profileKey: this.pincodeUser$.getValue().userProfile,\n },\n breakStart: tempUserAttendance.endTime,\n };\n\n const { modifiedEntries, originalEntries, result } =\n await this.http.post<{\n result: string;\n modifiedEntries: IUserAttendance[];\n originalEntries: IUserAttendance[];\n }>(\n `${environment.PEOPLE_CLOUD_APP_URL}/user-attendance-db/split-entries`,\n body,\n this.auth.getAuthHeader()\n );\n this.splittedAttendanceEntries = {\n modifiedEntries,\n originalEntries,\n result,\n };\n this.splittedAttendanceEntries$.next(\n this.splittedAttendanceEntries.modifiedEntries\n );\n this.lastAttendanceEntry$.next(\n modifiedEntries[modifiedEntries.length - 1]\n );\n this.lastModifiedEntry = modifiedEntries[modifiedEntries.length - 1];\n return { error: false };\n }\n\n try {\n await this.http.put(\n `${environment.PEOPLE_CLOUD_APP_URL}/user-attendance-db/${currentAttendanceEntry._id}`,\n requestBody,\n this.auth.getAuthHeader()\n );\n await this.userEventLogger.logEvent('KIOSK_BREAK');\n await this.refreshAttendanceInfo();\n return { error: false };\n } catch (error) {\n if (error.status === 0) {\n this.errorService.connectionErrorHandler();\n return { error };\n }\n this.errorService.logAndDisplayUnrecognizedError(error);\n return { error };\n }\n }\n\n async finishBreak() {\n const currentAttendanceEntry = this.lastAttendanceEntry$.getValue();\n const currentOpenBreak = this.currentOpenBreak$.getValue();\n const currentBreak = this.currentOpenBreak$.getValue();\n if (!currentBreak) {\n return;\n }\n\n const updatedBreaks = [...currentAttendanceEntry.breaks];\n const breakToFinish = updatedBreaks.find(\n (iBreak) => iBreak.start === currentOpenBreak.start\n );\n breakToFinish.end = this.getBreakTimeFor(currentAttendanceEntry);\n const requestBody = {\n breaks: updatedBreaks,\n pinCode: this.userPinCode,\n interface: 'kiosk-pin-code',\n };\n try {\n await this.http.put(\n `${environment.PEOPLE_CLOUD_APP_URL}/user-attendance-db/${currentAttendanceEntry._id}`,\n requestBody,\n this.auth.getAuthHeader()\n );\n await this.refreshAttendanceInfo();\n return { error: false };\n } catch (error) {\n if (error.status === 0) {\n this.errorService.connectionErrorHandler();\n return { error };\n }\n this.errorService.logAndDisplayUnrecognizedError(error);\n return { error };\n }\n }\n\n async insertBreakOfDuration(breakDuration: number): Promise {\n try {\n const currentAttendanceEntry = this.lastAttendanceEntry$.getValue();\n const breakEnd = currentAttendanceEntry.endTime;\n const newBreak: IAttendanceBreak = {\n end: breakEnd,\n start: breakEnd - breakDuration,\n };\n const requestBody = {\n breaks: [newBreak],\n pinCode: this.userPinCode,\n interface: 'kiosk-pin-code',\n };\n await this.http.put(\n `${environment.PEOPLE_CLOUD_APP_URL}/user-attendance-db/${currentAttendanceEntry._id}`,\n requestBody,\n this.auth.getAuthHeader()\n );\n this.brokenAttendanceLimit$.next(undefined);\n this.lastModifiedEntry = {\n ...currentAttendanceEntry,\n breaks: [newBreak],\n breakTime: breakDuration,\n };\n await this.refreshAttendanceInfo();\n return true;\n } catch (error) {\n if (error.status === 0) {\n this.errorService.connectionErrorHandler();\n }\n return false;\n }\n }\n\n async updateAttendanceCategory(category: IAttendanceCategory | null) {\n try {\n const payload = {\n attendanceCategoryId: null,\n attendanceSubCategoryId: null,\n };\n if (category !== null) {\n if (category.parentCategoryId !== undefined) {\n payload.attendanceCategoryId = category.parentCategoryId;\n payload.attendanceSubCategoryId = category._id;\n } else {\n payload.attendanceCategoryId = category._id;\n payload.attendanceSubCategoryId = null;\n }\n }\n const currentAttendanceEntry = this.lastAttendanceEntry$.getValue();\n const result = await this.http.put(\n `${environment.PEOPLE_CLOUD_APP_URL}/user-attendance-db/${currentAttendanceEntry._id}`,\n payload,\n this.auth.getAuthHeader()\n );\n await this.refreshAttendanceInfo();\n return { result };\n } catch (error) {\n this.errorService.logAndDisplayUnrecognizedError(error);\n if (error.status === 0) {\n this.errorService.connectionErrorHandler();\n }\n return { error };\n }\n }\n\n async getDailyTime(): Promise<{ totalWorkTime: number }> {\n if (this.showDailyTotal) {\n try {\n const userId = this.pincodeUser$.getValue().userId;\n const date = new Date();\n const currentMinutes = date.getMinutes() + date.getHours() * 60;\n\n const result = await this.http.post<{ totalWorkTime: number }>(\n `${environment.PEOPLE_CLOUD_APP_URL}/controller/attendance/punch-clock/daily-time`,\n {\n date: new Date(date).setUTCHours(0, 0, 0, 0),\n currentMinutes,\n _id: userId,\n },\n this.auth.getAuthHeader()\n );\n return result;\n } catch (error) {\n this.errorService.logErrorForDevelopers(error);\n }\n }\n return { totalWorkTime: 0 };\n }\n\n private checkAttendanceEntries(\n userAttendanceInfo: IUserAttendanceInfo\n ): void {\n const validatedAttendanceEntries = userAttendanceInfo.userAttendance.filter(\n (attendanceEntries) =>\n !attendanceEntries._deleted &&\n new Date(attendanceEntries.date).toISOString().split('T')[0] ===\n new Date().toISOString().split('T')[0]\n );\n this.showDailyTotal = validatedAttendanceEntries.length > 1;\n }\n\n computeLastAttendanceEntry(\n yesterdayAndTodayAttendance: Array\n ) {\n if (!yesterdayAndTodayAttendance?.length) {\n this.lastAttendanceEntry$.next(undefined);\n return;\n }\n\n const [yesterdayAttendance, todayAttendance] = this.splitAttendanceEntries(\n yesterdayAndTodayAttendance\n );\n\n if (this.lastModifiedEntry) {\n this.lastAttendanceEntry$.next(this.lastModifiedEntry);\n this.lastModifiedEntry = null;\n return;\n }\n\n const isTimeOff = todayAttendance.every(\n (attendance) => attendance._allowanceType !== undefined\n );\n if (todayAttendance.length === 0 || isTimeOff) {\n const yesterdayEntry =\n this.getYesterdayOpenAttendanceEntry(yesterdayAttendance);\n const openBreak = yesterdayEntry?.breaks?.find(\n (iBreak) => iBreak.start !== undefined && iBreak.end === undefined\n );\n this.lastAttendanceEntry$.next(yesterdayEntry);\n this.currentOpenBreak$.next(openBreak);\n return;\n }\n\n const sorted = todayAttendance.sort((a, b) => {\n if (a.startTime !== b.startTime) {\n if (a.endTime === undefined && b.endTime !== undefined) {\n return 1;\n } else if (b.endTime === undefined && a.endTime !== undefined) {\n return -1;\n }\n return (a.startTime ?? 0) > (b.startTime ?? 0) ? 1 : -1;\n } else {\n return (a.endTime ?? 0) > (b.endTime ?? 0) ? -1 : 1;\n }\n });\n const lastAttendanceEntry = sorted[sorted.length - 1];\n const openBreak = lastAttendanceEntry?.breaks?.find(\n (iBreak) => iBreak.start !== undefined && iBreak.end === undefined\n );\n this.lastAttendanceEntry$.next(lastAttendanceEntry);\n this.currentOpenBreak$.next(openBreak);\n }\n\n createEmptyAttendanceEntry() {\n return {\n _userId: this.pincodeUser$.getValue().userId,\n ownerId: this.pincodeUser$.getValue().userId,\n date: this.getTodayAsIfItWasUTC(),\n startTime: undefined,\n endTime: undefined,\n startBreakTime: undefined,\n breakTime: undefined,\n comment: undefined,\n breaks: [],\n interface: 'kiosk-pin-code',\n };\n }\n\n getTodayAsIfItWasUTC() {\n const today = new Date();\n const todayDate = today.getDate();\n const todayMonth = today.getMonth() + 1;\n const todayYear = today.getFullYear();\n const isoString = `${todayYear}-${\n todayMonth < 10 ? '0' + todayMonth : todayMonth\n }-${todayDate < 10 ? '0' + todayDate : todayDate}T00:00:00.000Z`;\n return new Date(isoString);\n }\n\n checkOverlapping(\n entry: IUserAttendance,\n otherEntries: Array\n ) {\n if (entry.startTime === undefined) {\n return false;\n }\n const policy = this.pincodeUser$.getValue().userPolicy;\n const isOverlappingWithTimeOf = PunchClockValidator.checkCheckOut({\n currentAttendanceEntry: entry as IUserAttendanceLib,\n timeOffRequests: this.pincodeUser$.getValue().timeOffRequest,\n attendancePolicy: policy,\n });\n if (\n isOverlappingWithTimeOf !== true &&\n !policy.overlappingWithTimeOff.conflicts\n ) {\n return true;\n }\n return otherEntries.some((iEntry) => {\n if (\n iEntry.startTime === undefined ||\n iEntry.endTime === undefined ||\n new Date(iEntry.date).getDate() !== new Date().getDate() ||\n iEntry._allowanceType\n ) {\n return false;\n }\n const startIsInsideOtherEntry =\n entry.startTime < iEntry.endTime && entry.startTime >= iEntry.startTime;\n if (entry.endTime === undefined) {\n return startIsInsideOtherEntry;\n }\n const endIsInsideOtherEntry =\n entry.endTime !== undefined &&\n entry.endTime >= iEntry.startTime &&\n entry.endTime <= iEntry.endTime;\n const otherEntryIsInside =\n entry.endTime !== undefined &&\n entry.startTime <= iEntry.startTime &&\n entry.endTime >= iEntry.endTime;\n return (\n startIsInsideOtherEntry || endIsInsideOtherEntry || otherEntryIsInside\n );\n });\n }\n\n flushPincodeUser() {\n this.pincodeUser$.next(undefined);\n this.attendancePolicy$.next(undefined);\n this.attendanceCategoriesInfo$.next(undefined);\n this.actualAttendance$.next(undefined);\n this.lastAttendanceEntry$.next(undefined);\n this.brokenAttendanceLimit$.next(undefined);\n this.splittedAttendanceEntries$.next(undefined);\n this.userPinCode = undefined;\n }\n\n getYesterdayOpenAttendanceEntry(yesterdayAttendance: Array) {\n const result = yesterdayAttendance.find((iAttendance) => {\n const isOpen =\n iAttendance.endTime === undefined &&\n iAttendance.startTime !== undefined;\n if (!isOpen) {\n return false;\n }\n const yesterdayShiftStartHour = iAttendance.startTime / 60;\n const todayCurrentHour = new Date().getHours();\n const differenceInHours =\n this.DAY_HOURS + todayCurrentHour - yesterdayShiftStartHour;\n return differenceInHours <= this.OVERNIGHT_MARGIN;\n });\n return result;\n }\n\n getLastYesterdayEntry(yesterdayAttendance: Array) {\n const lastAttendanceEntry = yesterdayAttendance.reduce(\n (lastEntry, iAttendance) => {\n return lastEntry.startTime < iAttendance.startTime\n ? iAttendance\n : lastEntry;\n },\n yesterdayAttendance[0]\n );\n return lastAttendanceEntry;\n }\n\n splitAttendanceEntries(\n attendanceEntries: Array\n ): [Array, Array] {\n return attendanceEntries.reduce(\n ([yesterday, today]: any, iAttendance) => {\n const isToday =\n new Date(iAttendance.date).toUTCString() ===\n this.getTodayAsIfItWasUTC().toUTCString();\n if (isToday) {\n return [yesterday, [...today, iAttendance]];\n }\n return [[...yesterday, iAttendance], today];\n },\n [new Array(), new Array()]\n );\n }\n\n getEntryDuration(entry: IUserAttendance) {\n if (entry.endTime === undefined || entry.startTime === undefined) {\n return 0;\n }\n\n const breakDuration = entry.breaks\n ? entry.breaks.reduce(\n (total, iBreak) =>\n total + (iBreak.end !== undefined ? iBreak.end - iBreak.start : 0),\n 0\n )\n : entry.breakTime ?? 0;\n\n return entry.endTime - entry.startTime - breakDuration;\n }\n\n getBreakDuration(entry: IUserAttendance) {\n if (!entry) {\n return;\n }\n const currentMinutes = new Date().getHours() * 60 + new Date().getMinutes();\n const isOvernight = this.getIsOvernight(entry);\n const onGoingBreak = entry.breaks.find((iBreak) => !iBreak.end);\n const duration =\n (isOvernight ? currentMinutes + 1440 : currentMinutes) -\n (onGoingBreak ? onGoingBreak.start : 0);\n return duration;\n }\n\n getBreakTimeFor(entry: IUserAttendance) {\n let numberOfMinutes = new Date().getHours() * 60 + new Date().getMinutes();\n if (this.getIsOvernight(entry)) {\n numberOfMinutes += 1440;\n }\n return numberOfMinutes;\n }\n\n getIsOvernight(entry: IUserAttendance): boolean {\n const today = new Date();\n const entryDate = new Date(entry.date);\n const isPreviousDay = entryDate.getDate() < today.getDate();\n const isPreviousMonth = entryDate.getMonth() < today.getMonth();\n const isPreviousYear = entryDate.getFullYear() < entryDate.getFullYear();\n\n return isPreviousDay || isPreviousMonth || isPreviousYear;\n }\n\n async handleAutoDeductBreak(\n currentEntry: IUserAttendance,\n attendancePolicy: IAttendancePolicy,\n updateBody: IUserAttendance,\n profileKey: string\n ) {\n const userProfile = this.pincodeUser$.getValue().userProfile;\n const isBreakNeeded = (entry) => {\n return (\n isAutoDeductBreakNeeded(entry, attendancePolicy, userProfile) &&\n entry?._id !== undefined\n );\n };\n\n try {\n if (!this.splittedAttendanceEntries$.getValue()?.length) {\n const entryToUpdate = { ...currentEntry, endTime: updateBody.endTime };\n if (isBreakNeeded(entryToUpdate)) {\n const updateBodyFiltered =\n filterForbiddenUserAttendanceFields(updateBody);\n await this.userAttendanceService.updateAttendanceEntry(\n currentEntry,\n updateBodyFiltered,\n profileKey\n );\n }\n } else {\n const promises = this.splittedAttendanceEntries$\n ?.getValue()\n .filter(isBreakNeeded)\n .map((entry) => {\n this.userAttendanceService.updateAttendanceEntry(\n entry,\n { endTime: entry?.endTime },\n profileKey\n );\n });\n await Promise.all(promises);\n }\n } catch {\n // Do nothing\n } finally {\n await this.refreshAttendanceInfo();\n }\n }\n}\n","import { environment } from '@env';\nimport { Injectable } from '@angular/core';\n\nimport {\n IAttendanceAutomation,\n IAttendanceBreak,\n IUserAttendance,\n IUserAttendanceInfo,\n} from '../model/user-attendance.model';\nimport { HttpClientService } from '@app/shared/services/http-client.service';\nimport { AuthService } from '@app/shared/services/auth.service';\nimport { ErrorService } from '@app/shared/services/error.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserAttendanceService {\n constructor(\n private http: HttpClientService,\n private auth: AuthService,\n private errorService: ErrorService\n ) {}\n\n async updateAttendanceEntry(\n entry: IUserAttendance,\n body: IUserAttendance,\n profileKey: string\n ) {\n try {\n await this.http.put(\n `${environment.PEOPLE_CLOUD_APP_URL}/user-attendance-db/${entry._id}`,\n {\n ...body,\n profileKey,\n autoDeductBreak: true,\n interface: 'kiosk-pin-code',\n },\n this.auth.getAuthHeader()\n );\n } catch (error) {\n this.errorService.displayError(error?.error);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClientService } from '@app/shared/services/http-client.service';\nimport { environment } from '@env';\nimport { BehaviorSubject } from 'rxjs';\nimport { AuthService } from '@shared/services/auth.service';\n\ntype LocationsResponse = { locations: Array, error?: undefined } | { locations?: undefined, error: any };\n@Injectable({ providedIn: 'root' })\nexport class LocationsService {\n public availableLocations$ = new BehaviorSubject | 'loading' | 'error'>('loading');\n public locationsError$ = new BehaviorSubject(undefined);\n\n constructor(private httpClient: HttpClientService, private authService: AuthService) { }\n\n async initAvailableLocations(): Promise {\n const isAlreadyInit = Array.isArray(this.availableLocations$.value);\n if (isAlreadyInit) {\n return;\n }\n return this.getAvailableLocations();\n }\n\n async getAvailableLocations(): Promise {\n try {\n this.availableLocations$.next('loading');\n const locations = await this.httpClient.get>(`${environment.PEOPLE_CLOUD_APP_URL}/controller/kiosk/locations`, this.authService.getAuthHeader());\n this.availableLocations$.next(locations);\n return { locations };\n } catch(error) {\n this.availableLocations$.next('error');\n this.locationsError$.next(error);\n return { error };\n }\n }\n}\n\nexport interface ILocation {\n _id: string,\n name: string,\n street: string,\n postalCode: string,\n city: string,\n country: string,\n calendarId: string,\n companyId: string,\n _createdById: string,\n _updatedById: string,\n ownerId: string,\n activeForShiftplan?: boolean\n}\n","import { NgModule } from \"@angular/core\";\nimport { MatIconModule, MatIconRegistry } from \"@angular/material/icon\";\nimport { MatLegacySnackBarModule as MatSnackBarModule } from '@angular/material/legacy-snack-bar';\n\n@NgModule({\n exports: [\n MatIconModule,\n MatSnackBarModule\n ]\n})\nexport class MaterialModule {\n constructor(private matIconRegistry: MatIconRegistry) {\n this.matIconRegistry.setDefaultFontSetClass('kenjo-font');\n }\n}\n","import { BehaviorSubject } from 'rxjs';\nimport { Injectable, Injector } from '@angular/core';\nimport { EntryMethod } from '@app/check-in/model/kiosk-session.model';\nimport { TranslatePipe } from '@app/shared/pipes/translate.pipe';\nimport { HttpClientService } from '@app/shared/services/http-client.service';\nimport { AuthService } from '@app/shared/services/auth.service';\nimport { ErrorService } from '@app/shared/services/error.service';\nimport { environment } from '@env';\nimport { KioskSessionService } from '@app/check-in/services/kiosk-session.service';\nimport { PersistenceService } from '@app/shared/services/persistence.service';\nimport { ThemeColorService } from '@app/shared/services/theme-color.service';\n\n@Injectable({ providedIn: 'root' })\nexport class KioskSetupService {\n public welcomeMessage$ = new BehaviorSubject(null);\n public orgAvailableMethods$ = new BehaviorSubject<\n Array | undefined\n >(undefined);\n public pinCodeActive$ = new BehaviorSubject(true);\n public qrCodeActive$ = new BehaviorSubject(true);\n public selectedLocationId$ = new BehaviorSubject(\n undefined\n );\n public name$ = new BehaviorSubject(null);\n public hasJustActivatedKiosk: boolean = false;\n public sessionNames: string[] = [];\n private ATTENDANCE_SETTINGS_URL = `${environment.PEOPLE_CLOUD_APP_URL}/attendance-settings-db`;\n\n constructor(private injector: Injector) {\n this.initValuesFromPersistence();\n }\n\n initValuesFromPersistence() {\n const persistence = this.injector.get(PersistenceService);\n const savedLocationId = persistence.getItem('locationId');\n const savedWelcomeMessage = persistence.getItem('welcomeMessage');\n const savedPinCodeActive = persistence.getItem('pinCodeActive');\n const savedQrCodeActive = persistence.getItem('qrCodeActive');\n\n if (savedLocationId !== undefined) {\n this.selectedLocationId$.next(savedLocationId);\n }\n\n if (savedWelcomeMessage !== undefined) {\n this.welcomeMessage$.next(savedWelcomeMessage);\n }\n\n if (savedPinCodeActive !== undefined) {\n this.pinCodeActive$.next(savedPinCodeActive === 'true');\n }\n\n if (savedQrCodeActive !== undefined) {\n this.qrCodeActive$.next(savedQrCodeActive === 'true');\n }\n }\n\n saveMethodsInitialState() {\n this.injector\n .get(PersistenceService)\n .setItem('pinCodeActive', `${this.pinCodeActive$.getValue()}`);\n this.injector\n .get(PersistenceService)\n .setItem('qrCodeActive', `${this.qrCodeActive$.getValue()}`);\n }\n\n async fetchOrgAvailableMethods() {\n Promise.resolve().then(() =>\n this.orgAvailableMethods$.next(['pinCode', 'qrCode'])\n );\n }\n\n setSelectedLocationId(value?: string) {\n this.selectedLocationId$.next(value);\n this.injector.get(PersistenceService).setItem('locationId', value);\n }\n\n setWelcomeMessage(value?: string) {\n this.welcomeMessage$.next(value);\n this.injector.get(PersistenceService).setItem('welcomeMessage', value);\n }\n\n setName(value?: string) {\n this.name$.next(value);\n this.injector.get(PersistenceService).setItem('name', value);\n }\n\n setPinCodeActive(value: boolean) {\n this.pinCodeActive$.next(value);\n this.injector.get(PersistenceService).setItem('pinCodeActive', `${value}`);\n }\n\n setQrCodeActive(value: boolean) {\n this.qrCodeActive$.next(value);\n this.injector.get(PersistenceService).setItem('qrCodeActive', `${value}`);\n }\n\n async activateKiosk() {\n const methods = new Array();\n if (this.pinCodeActive$.getValue()) {\n methods.push('pinCode');\n }\n if (this.qrCodeActive$.getValue()) {\n methods.push('qrCode');\n }\n\n const locationId = this.selectedLocationId$.getValue();\n const welcomeMessage = this.welcomeMessage$.getValue() || '';\n const name = this.name$.getValue() || null;\n const themeColor = this.injector\n .get(ThemeColorService)\n .selectedThemeColor$.getValue();\n const { error } = await this.injector\n .get(KioskSessionService)\n .createKioskSession(\n locationId,\n methods,\n welcomeMessage,\n themeColor,\n name\n );\n if (!error) {\n this.hasJustActivatedKiosk = true;\n }\n return { error };\n }\n\n getEntryMethods() {\n const result = new Array();\n if (this.pinCodeActive$.getValue()) {\n result.push('pinCode');\n }\n if (this.qrCodeActive$.getValue()) {\n result.push('qrCode');\n }\n return result;\n }\n}\n","import {\n Component,\n Inject,\n Injector,\n OnInit,\n Optional,\n} from '@angular/core';\nimport { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA, MatLegacyDialogRef as MatDialogRef } from '@angular/material/legacy-dialog';\nimport { IAttendanceBreak } from '@app/check-in/model/user-attendance.model';\nimport { KickOutTimerService } from '@app/check-in/services/kick-out-timer.service';\nimport { IAttendancePolicy } from '@app/setup/model/attendance-settings.model';\nimport { DurationPipe } from '@app/shared/pipes/duration.pipe';\nimport { TranslateWithDataPipe } from '@app/shared/pipes/translate-with-data.pipe';\nimport { TranslatePipe } from '@app/shared/pipes/translate.pipe';\n\n@Component({\n selector: 'kenjo-auto-deduct-dialog',\n templateUrl: 'auto-deduct-dialog.component.html',\n styleUrls: ['auto-deduct-dialog.component.scss'],\n})\nexport class AutoDeductDialogComponent implements OnInit {\n translations: any;\n titleText: string;\n subtitleText: string;\n confirmButtonText: string;\n cancelButtonText: string;\n confirmButtonColor: 'Success' | 'Warning' | 'Danger' | 'Neutral' | 'Primary' =\n 'Success';\n confirmButtonId: string;\n cancelButtonId: string;\n componentId: string;\n confirmDisabled: boolean;\n cancelDisabled: boolean;\n bullets: Array<{ text: string }>;\n attendancePolicy: IAttendancePolicy;\n break: IAttendanceBreak;\n tooltipText: string = '';\n isPastAutoDeduct: boolean;\n\n constructor(\n public dialogRef: MatDialogRef,\n @Optional() @Inject(MAT_DIALOG_DATA) public data: any,\n private injector: Injector,\n private durationPipe: DurationPipe,\n private translateWithDataPipe: TranslateWithDataPipe,\n private kickOutService: KickOutTimerService\n ) {\n this.cancelButtonText = this.data.cancelButtonText;\n this.confirmButtonColor = this.data.confirmButtonColor\n ? this.data.confirmButtonColor\n : this.confirmButtonColor;\n this.confirmButtonId = this.data.confirmButtonId ?? '';\n this.cancelButtonId = this.data.cancelButtonId ?? '';\n this.componentId = this.data.componentId ?? null;\n this.confirmDisabled = this.data.confirmDisabled ?? false;\n this.cancelDisabled = this.data.cancelDisabled ?? false;\n this.dialogRef.disableClose = !!this.data.disableClose;\n this.attendancePolicy = this.data.attendancePolicy;\n this.break = this.data.break;\n }\n\n async ngOnInit(): Promise {\n this.kickOutService.restartTimeout();\n this.translations = {\n autoDeductDialog: this.injector\n .get(TranslatePipe)\n .transform('autoDeductDialog'),\n };\n this.titleText = this.translations.autoDeductDialog.title;\n this.subtitleText = this.translations.autoDeductDialog.subtitle;\n this.confirmButtonText = this.translations.autoDeductDialog.confirm;\n this.checkIsPastAutoDeduct();\n this.initTranslations();\n }\n\n closeDialog(): void {\n this.kickOutService.restartTimeout();\n this.dialogRef.close(false);\n }\n\n confirmDialog(): void {\n this.kickOutService.restartTimeout();\n if (this.data.deleteProtection) {\n this.dialogRef.close(false);\n return;\n }\n this.dialogRef.close(true);\n }\n\n private formatReminder(reminder): string {\n const data = {\n triggeredAfter: this.durationPipe.transform(reminder?.triggeredAfter),\n suggestedBreak: this.durationPipe.transform(reminder?.suggestedBreak),\n };\n const message1 = this.translateWithDataPipe.transform(\n 'breakReminderMessage1',\n data\n );\n const message2 = this.translateWithDataPipe.transform(\n 'breakReminderMessage2',\n data\n );\n return message1 + message2;\n }\n\n initTranslations() {\n const { reminders } = this.attendancePolicy?.breakReminder;\n const tooltipReminders = reminders.map((iReminder) =>\n this.formatReminder(iReminder)\n );\n\n const mainBreakData = {\n triggeredAfter: this.durationPipe.transform(this.break?.triggeredAfter),\n suggestedBreak: this.durationPipe.transform(this.break?.suggestedBreak),\n };\n const mainMessage1 = this.translateWithDataPipe.transform(\n 'breakReminderMessage1',\n mainBreakData\n );\n const mainMessage2 = this.translateWithDataPipe.transform(\n 'breakReminderMessage2',\n mainBreakData\n );\n\n this.bullets = [\n {\n text: mainMessage1 + mainMessage2,\n },\n ];\n\n this.tooltipText = `${\n this.translations.autoDeductDialog.tooltip\n } ${tooltipReminders.join(', ')}.`;\n }\n\n checkIsPastAutoDeduct() {\n const { breakReminder } = this.attendancePolicy;\n\n let isPast = true;\n\n for (let index = 0; index < breakReminder?.reminders?.length; index++) {\n const reminder = breakReminder?.reminders[index];\n if (\n reminder?.suggestedBreak === this.break?.suggestedBreak &&\n reminder?.triggeredAfter === this.break?.triggeredAfter\n ) {\n isPast = false;\n break;\n }\n }\n this.isPastAutoDeduct = isPast;\n }\n}\n\nexport interface IConfirmDialogData {\n titleText: string;\n subtitleText: string;\n confirmButtonText: string;\n confirmButtonColor: 'Success' | 'Warning' | 'Danger' | 'Neutral' | 'Primary';\n cancelButtonText: string;\n}\n","\r\n \r\n {{ subtitleText }}\r\n \r\n
\r\n
    \r\n
  • \r\n
    \r\n {{ bullet.text }}\r\n history\r\n
    \r\n
  • \r\n
\r\n
\r\n \r\n \r\n \r\n {{ cancelButtonText }}\r\n \r\n \r\n \r\n {{ confirmButtonText }}\r\n \r\n \r\n \r\n
\r\n","import { Component } from '@angular/core';\nimport { NavigationService } from '@app/shared/services/navigation.service';\n\n@Component({\n selector: 'kenjo-back-arrow-button',\n template:`\n
\n arrow_back\n
\n `,\n styleUrls: ['./back-arrow-button.component.scss']\n})\nexport class BackArrowButtonComponent {\n constructor(private navigationService: NavigationService) { }\n\n goBack() {\n this.navigationService.goBack();\n }\n}\n","import { isNgTemplate } from \"@angular/compiler\";\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, QueryList, ViewChildren } from \"@angular/core\";\nimport { Subscription } from \"rxjs\";\n\n@Component({\n selector: 'kenjo-code-input',\n templateUrl: 'code-input.component.html',\n styleUrls: ['code-input.component.scss']\n})\nexport class CodeInputComponent implements OnInit, AfterViewInit, OnDestroy {\n @ViewChildren('digit') inputsList!: QueryList;\n @Output() codeChanged = new EventEmitter();\n @Input() secureInput: boolean = false;\n @Input() codeLength: number = 6;\n @Input() incorrectCode: boolean;\n _currentCode: string = '';\n @Input() set currentCode(currentCode: string) {\n this._currentCode = currentCode;\n if (!currentCode?.length) {\n this.initControlVariables();\n this.initInputsList();\n }\n }\n get currentCode() {\n return this._currentCode;\n }\n\n inputDigit: number;\n digitsValues: string[] = [];\n digitsFilled: boolean[] = [];\n inputs: HTMLInputElement[] = [];\n private inputsListSubscription$: Subscription;\n\n constructor() {}\n\n ngOnInit(): void {\n this.initControlVariables();\n }\n\n ngAfterViewInit(): void {\n this.initInputsList();\n }\n\n ngOnDestroy(): void {\n if (this.inputsListSubscription$) {\n this.inputsListSubscription$.unsubscribe();\n }\n }\n\n initControlVariables() {\n const numbers = Array(this.codeLength - this.digitsValues.length).fill('');\n this.digitsFilled = Array(this.codeLength - this.digitsValues.length).fill(false);\n this.digitsValues.splice(this.digitsValues.length - 1, 0, ...numbers);\n }\n\n initInputsList() {\n if (!this.inputsList) {\n return;\n }\n if (!this.inputs.length) {\n const inputElements = this.inputsList.map(iElement => {\n const input = iElement.nativeElement;\n input.value = '';\n return input;\n });\n this.inputs.push(...inputElements);\n } else {\n this.inputs.forEach(input => input.value = \"\");\n }\n this.inputs[0]?.focus && this.inputs[0]?.focus();\n }\n\n onInput(e: any, i: number): void {\n const inputDigit = e.target;\n const value = e.data || inputDigit.value;\n\n if (!value?.length) {\n return;\n }\n\n if (!this.validInput(value)) {\n e.preventDefault();\n e.stopPropagation();\n inputDigit.value = '';\n return;\n }\n const values = value.toString().trim().split('');\n\n for (let j = 0; j < values.length; j++) {\n const index = j + i;\n if (index >= this.codeLength) {\n break;\n }\n this.setInputValue(this.inputs[index], values[j], index);\n }\n\n this.emitCode();\n\n const next = i + values.length;\n if (next > this.codeLength - 1) {\n this.inputs[this.codeLength - 1].blur();\n return;\n }\n\n this.inputs[next].focus();\n }\n\n isInputFilled(i: number): boolean {\n const inputValue = this.inputs[i]?.value;\n return inputValue === undefined || inputValue.length > 0;\n }\n\n private setInputValue(input: HTMLInputElement, value: any, index: number): void {\n if (!value?.length) {\n input.value = '';\n this.digitsFilled[index] = false;\n } else {\n input.value = value;\n this.digitsFilled[index] = true;\n }\n }\n\n private emitCode() {\n const currentCode = this.getCurrentFilledCode();\n this.codeChanged.emit(currentCode);\n }\n\n private validInput(value: any): boolean {\n return value?.length && /^[0-9]+$/.test(value.toString());\n }\n\n private getCurrentFilledCode(): string {\n return this.inputs.reduce((code, iInput) => {\n if (iInput.value?.length) {\n return code + iInput.value;\n }\n return code;\n }, '');\n }\n\n onKeydown(e: any, i: number): Promise {\n const target = e.target;\n const isValueEmpty = !target.value?.length;\n const prev = i - 1;\n\n // processing only the backspace and delete key events\n const isBackspaceKey = this.isBackspaceKey(e);\n const isDeleteKey = this.isDeleteKey(e);\n if (!isBackspaceKey && !isDeleteKey) {\n return;\n }\n\n e.preventDefault();\n\n this.setInputValue(target, null, i);\n if (!isValueEmpty) {\n this.emitCode();\n }\n\n // preventing to focusing on the previous field if it does not exist or the delete key has been pressed\n if (prev < 0 || isDeleteKey) {\n return;\n }\n\n if (isValueEmpty) {\n this.inputs[prev].focus();\n }\n }\n\n private isDeleteKey(e: any): boolean {\n return (e.key && e.key.toLowerCase() === 'delete') || (e.keyCode && e.keyCode === 46);\n }\n\n private isBackspaceKey(e: any): boolean {\n return (e.key && e.key.toLowerCase() === 'backspace') || (e.keyCode && e.keyCode === 8);\n }\n\n onMousedown(e: any, i: number) {\n e.stopImmediatePropagation();\n const targetInput = e.target;\n const firstInput = this.inputs[0];\n if (firstInput === targetInput) {\n return;\n }\n const firstEmptyInputIndex: number = this.findFirstEmptyInputIndex();\n\n if (firstEmptyInputIndex === undefined) {\n return;\n }\n\n // Validate which input has been pressed\n if (i > firstEmptyInputIndex) {\n e.preventDefault();\n this.inputs[firstEmptyInputIndex].focus();\n return;\n }\n }\n\n findFirstEmptyInputIndex() {\n const firstEmptyInputIndex = this.inputs.findIndex((iInput) => !iInput?.value);\n return firstEmptyInputIndex !== -1 ? firstEmptyInputIndex : undefined;\n }\n\n onPaste(e: ClipboardEvent, i: number): void {\n e.preventDefault();\n e.stopPropagation();\n\n const data = e.clipboardData ? e.clipboardData.getData('text').trim() : undefined;\n\n if (!data?.length) {\n return;\n }\n\n // Convert paste text into iterable\n const values = data.split('');\n let valIndex = 0;\n\n for (let j = i; j < this.inputs.length && valIndex < values.length; j++) {\n const input = this.inputs[j];\n const val = values[valIndex];\n\n // Cancel the loop when a value cannot be used\n if (!this.validInput(val)) {\n this.setInputValue(input, null, valIndex);\n return;\n }\n\n this.setInputValue(input, val.toString(), valIndex);\n valIndex++;\n }\n const firstEmptyInputIndex = this.findFirstEmptyInputIndex();\n if (firstEmptyInputIndex === undefined) {\n this.inputs[this.inputs.length - 1].focus();\n } else {\n this.inputs[firstEmptyInputIndex].focus();\n }\n this.emitCode();\n }\n\n focusFirstInput(index: number) {\n const firstEmptyInputIndex: number = this.findFirstEmptyInputIndex();\n if (firstEmptyInputIndex === undefined) {\n this.inputs[index].focus();\n return;\n }\n this.inputs[Math.min(index, firstEmptyInputIndex)].focus();\n }\n}\n","
\n
\n \n
index + 1 && digitsFilled[index])}\" class=\"ci-hidden-input\" (click)=\"focusFirstInput(index)\">\n
\n
\n
\n
\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'orgos-column-container',\n template: '',\n styleUrls: ['column-container.component.scss']\n})\nexport class ColumnContainerComponent {\n @Input()\n set centerColumns(centerColumns: boolean | string) {\n if (centerColumns === true || centerColumns === 'true') {\n this.alignItemsStyle = 'center';\n return;\n }\n\n this.alignItemsStyle = '';\n return;\n }\n\n @Input()\n set wrap(wrap: boolean | string) {\n if (wrap === true || wrap === 'true') {\n this.flexWrapStyle = 'wrap';\n return;\n }\n\n this.flexWrapStyle = '';\n return;\n }\n\n @HostBinding('style.align-items') alignItemsStyle: string = '';\n @HostBinding('style.flex-wrap') flexWrapStyle: string = '';\n}\n","import { Component, ElementRef, HostBinding, Input, Renderer2 } from '@angular/core';\n\nimport { ColumnDirective } from './column.directive';\n\n@Component({\n selector: 'orgos-column',\n template: ` `\n})\nexport class ColumnComponent {\n @Input()\n set size(size: string) {\n this.orgosColumn.size = size;\n }\n\n @HostBinding('attr.orgosColumn') orgosColumn: ColumnDirective = new ColumnDirective(this.renderer, this.el);\n\n constructor(private renderer: Renderer2, private el: ElementRef) {}\n}\n","import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[orgosColumn]'\n})\nexport class ColumnDirective {\n @Input('orgosColumn')\n set size(size: string) {\n if (!size) {\n this.renderer.setStyle(this.el.nativeElement, 'flex-grow', '1');\n } else if (size === '0') {\n this.renderer.setStyle(this.el.nativeElement, 'flex-grow', '0');\n this.renderer.setStyle(this.el.nativeElement, 'flex-basis', '');\n } else {\n this.renderer.setStyle(this.el.nativeElement, 'flex-grow', size);\n }\n }\n\n constructor(private renderer: Renderer2, private el: ElementRef) {\n renderer.setStyle(el.nativeElement, 'flex-grow', '1');\n renderer.setStyle(el.nativeElement, 'flex-shrink', '0');\n renderer.setStyle(el.nativeElement, 'flex-basis', '0');\n renderer.setStyle(el.nativeElement, 'word-break', 'normal');\n }\n}\n","import { Component, Inject, NgZone, Optional } from '@angular/core';\nimport { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA, MatLegacyDialogRef as MatDialogRef } from '@angular/material/legacy-dialog';\n\n@Component({\n selector: 'kenjo-confirmation-dialog',\n templateUrl: './confirmation-dialog.component.html',\n styleUrls: ['./confirmation-dialog.component.scss']\n})\nexport class ConfirmationDialogComponent {\n titleText: string;\n subtitleText: string;\n confirmButtonText: string;\n cancelButtonText: string;\n confirmButtonColor: 'Success' | 'Warning' | 'Danger' | 'Neutral' = 'Success';\n confirmButtonId: string;\n cancelButtonId: string;\n componentId: string;\n\n constructor(public dialogRef: MatDialogRef, @Optional() @Inject(MAT_DIALOG_DATA) public data: any, private ngZone: NgZone) {\n this.titleText = this.data.titleText;\n this.subtitleText = this.data.subtitleText;\n this.confirmButtonText = this.data.confirmButtonText;\n this.cancelButtonText = this.data.cancelButtonText;\n this.confirmButtonColor = this.data.confirmButtonColor ? this.data.confirmButtonColor : this.confirmButtonColor;\n this.confirmButtonId = this.data.confirmButtonId ?? '';\n this.cancelButtonId = this.data.cancelButtonId ?? '';\n this.componentId = this.data.componentId ?? null;\n }\n\n goBack(): void {\n this.closeDialog(false);\n }\n\n confirmDialog(): void {\n if (this.data.deleteProtection) {\n this.closeDialog(false);\n return;\n }\n this.closeDialog(true);\n }\n\n closeDialog(result: boolean) {\n this.ngZone.run(() => {\n this.dialogRef.close(result);\n });\n }\n}\n","\n
\n {{ subtitleText }}\n
\n\n
\n {{ cancelButtonText }}\n
\n {{ confirmButtonText }}\n
\n
\n","import { Component, OnDestroy, OnInit } from '@angular/core';\n\n@Component({\n selector: 'kenjo-datetime',\n templateUrl: './datetime.component.html',\n styleUrls: ['./datetime.component.scss']\n})\nexport class DatetimeComponent implements OnInit, OnDestroy {\n date: Date;\n dateInterval: any;\n\n ngOnInit(): void {\n this.date = new Date();\n this.dateInterval = setInterval(() => {\n this.date = new Date();\n }, 1000);\n }\n\n ngOnDestroy(): void {\n clearInterval(this.dateInterval);\n }\n}\n","
\n
\n
{{ date | date:'HH:mm' }}
\n
\n
\n
\n
\n
{{ date | date:'EEEE' }}
\n
{{ date | date:'dd MMMM' }}
\n
\n
\n
\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\n@Component({\n selector: 'kenjo-dialog-container',\n templateUrl: './dialog-container.component.html',\n styleUrls: ['./dialog-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DialogContainerComponent {\n @Input() title?: string;\n @Input() disabledCloseButton: boolean = false;\n @Input() customDivStyle: { [key: string]: string } = {};\n @Output() clickCloseButton: EventEmitter = new EventEmitter();\n}\n","
\n
\n {{ title }}\n
\n \n clear\n \n
\n
\n \n
\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'kenjo-empty-location',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `,\n styleUrls: ['./empty-location.component.scss']\n})\nexport class EmptyLocationComponent {}\n","import { Component } from '@angular/core';\nimport { ProgressService } from '@app/shared/services/progress.service';\n\n@Component({\n selector: 'kenjo-footer-bar',\n templateUrl: './footer-bar.component.html',\n styleUrls: ['./footer-bar.component.scss']\n})\nexport class FooterBarComponent {\n currentProgress$ = this.progressService.currentProgress$;\n\n constructor(private progressService: ProgressService) { }\n}\n","
0}\" >\n
{{ 'poweredBy' | translate }}
\n \n
\n\n
\n","
\n 1 && (currentProgress$ | async) < 5\">\n \n \n \n
\n","import { Component, OnInit } from '@angular/core';\nimport { KioskSessionService } from '@app/check-in/services/kiosk-session.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { ProgressService } from '../../services/progress.service';\n\n@Component({\n selector: 'kenjo-header-bar',\n templateUrl: './header-bar.component.html',\n styleUrls: ['./header-bar.component.scss']\n})\nexport class HeaderBarComponent implements OnInit {\n currentProgress$: BehaviorSubject;\n constructor(private progressService: ProgressService, public kioskSessionService: KioskSessionService) { }\n\n ngOnInit(): void {\n this.currentProgress$ = this.progressService.currentProgress$;\n }\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'kenjo-hold-button',\n templateUrl: './hold-button.component.html',\n styleUrls: ['./hold-button.component.scss']\n})\nexport class HoldButtonComponent {\n @Input() title: string;\n @Input() buttonId?: string = 'submit-button';\n @Input() flexWidth: boolean = false;\n @Input() size: 'large' | 'medium' = 'large';\n @Input() buttonStatus: 'ready' | 'loading' | 'disabled' | 'failed' = 'ready';\n @Input() disabled: boolean = false;\n\n @Output() onHoldSuccess = new EventEmitter();\n\n totalTime = 900;\n progress = 0;\n\n holdHandler(numOfMS: number) {\n this.progress = (numOfMS / this.totalTime) * 100;\n if (this.progress === 100) {\n this.onHoldSuccess.emit();\n }\n }\n}\n","
\n \n check_out\n
{{ title }}
\n
\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'kenjo-icon',\n templateUrl: 'icon.component.html',\n styleUrls: ['icon.component.scss'],\n})\nexport class IconComponent implements OnInit {\n @Input() size: number = 24;\n\n @Input() iconClass: string = '';\n\n @Input() id: string = '';\n\n @HostBinding('style.height.px') iconHeight: number = 24;\n @HostBinding('style.width.px') iconWidth: number = 24;\n @HostBinding('style.font-size.px') iconFontSize: number = 24;\n @HostBinding('class.disabled-icon') disabledClass: boolean = false;\n\n ngOnInit() {\n this.iconHeight = this.size;\n this.iconWidth = this.size;\n this.iconFontSize = this.size;\n }\n}\n","\n \n\n","import { Component } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { TranslationService } from '../../services/translation.service';\n\n@Component({\n selector: 'kenjo-language-picker',\n templateUrl: './language-picker.component.html',\n styleUrls: ['./language-picker.component.scss']\n})\nexport class LanguagePickerComponent {\n constructor(public translationService: TranslationService) { }\n\n currentLanguage$ = this.translationService.currentLanguage$;\n i18n: BehaviorSubject> = this.translationService.currentTranslations$;\n}\n","
\n \n {{ \"english\" | translate }}\n {{ \"spanish\" | translate }}\n {{ \"german\" | translate }}\n {{ \"italian\" | translate }}\n {{ \"french\" | translate }}\n {{ \"dutch\" | translate }}\n \n
\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'kenjo-loading-spinner',\n template: `\n
\n
\n
\n
\n
\n `,\n styleUrls: ['./loading-spinner.component.scss']\n})\nexport class LoadingSpinnerComponent {\n @Input() size: string = 'Regular';\n @Input() color: 'green' | 'white' = 'white';\n}\n","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'kenjo-primary-button',\n templateUrl: './primary-button.component.html',\n styleUrls: ['./primary-button.component.scss']\n})\nexport class PrimaryButtonComponent {\n @Input() title: string;\n @Input() buttonId?: string = 'submit-button';\n @Input() flexWidth: boolean = false;\n @Input() size: 'huge' | 'large' | 'medium' = 'large';\n\n @Input() loading: boolean = false;\n @Input() buttonStatus: 'ready' | 'disabled' | 'failed' | 'success' = 'ready';\n @Output() onClick = new EventEmitter();\n\n emitClick() {\n if (this.buttonStatus !== 'disabled' && this.loading === false) {\n this.onClick.emit();\n }\n }\n}\n","\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { KioskRoute } from '@app/shared/services/navigation.service';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { ProgressService } from '../../services/progress.service';\n\n@Component({\n selector: 'kenjo-progress-bar',\n templateUrl: './progress-bar.component.html',\n styleUrls: ['./progress-bar.component.scss']\n})\nexport class ProgressBarComponent implements OnInit, OnDestroy {\n currentProgress$: BehaviorSubject;\n navigationSubscription: Subscription;\n hideWithoutAnimation = true;\n initialized = false;\n\n constructor(private progressService: ProgressService, private router: Router) { }\n\n ngOnInit(): void {\n this.currentProgress$ = this.progressService.currentProgress$;\n this.progressService.getProgress();\n this.navigationSubscription = this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.initialized = true;\n this.progressService.updateProgress(event.url as KioskRoute);\n }\n });\n }\n\n ngOnDestroy(): void {\n this.navigationSubscription.unsubscribe();\n }\n\n setStep(step: number): void {\n this.progressService.setStep(step);\n }\n}\n","
\n
4 }\">\n
\n
= 1 }\">
\n
\n
\n
= 2 }\">
\n
\n
\n
= 3 }\">
\n
\n
\n
= 4 }\">
\n
\n
\n
\n","import { Component, OnInit, Input, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'kenjo-raised-button',\n templateUrl: './raised-button.component.html',\n styleUrls: ['./raised-button.component.scss']\n})\nexport class RaisedButtonComponent {\n private _disabled: boolean = false;\n\n @Input()\n set disabled(disabled: boolean) {\n this._disabled = disabled;\n this.disabledClass = disabled;\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n @Input() iconButton: boolean = false;\n @Input() color: 'Basic' | 'Primary' | 'Success' | 'Danger' | 'Disabled' | 'Neutral' | 'Sign-In' | 'Secondary' | 'Upgrade' = 'Primary';\n @Input() invertColors: boolean = false;\n @Input() padding: string = '6.75px 15px';\n @Input() id: string = '';\n\n @HostBinding('class.brc-disabled') disabledClass = false;\n}\n","\n \n\n","import { Component } from '@angular/core';\nimport { LocationsService } from '@app/location/services/locations.service';\nimport { UserEventLoggerService } from '@app/shared/services/user-event-logger.service';\n\n@Component({\n selector: 'kenjo-refresh-button',\n template: `\n
\n replay\n
\n `,\n styleUrls: ['./refresh-button.component.scss']\n})\nexport class RefreshButtonComponent {\n constructor(private locationService: LocationsService, private userEventLogger: UserEventLoggerService) { }\n\n refresh() {\n this.userEventLogger.logEvent('REFRESH_LOCATIONS');\n this.locationService.getAvailableLocations();\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'kenjo-secondary-button',\n templateUrl: './secondary-button.component.html',\n styleUrls: ['./secondary-button.component.scss']\n})\nexport class SecondaryButtonComponent implements OnInit {\n @Input() title: string;\n @Input() buttonId?: string = 'submit-button';\n @Input() flexWidth: boolean = false;\n @Input() size: 'huge' | 'large' | 'medium' = 'large';\n\n @Input() loading: boolean = false;\n @Input() buttonStatus: 'ready' | 'disabled' | 'failed' = 'ready';\n @Output() onClick = new EventEmitter();\n constructor() { }\n\n ngOnInit(): void {\n }\n\n emitClick() {\n if (this.buttonStatus !== 'disabled' && this.loading === false) {\n this.onClick.emit();\n }\n }\n}\n","\n","
\n
\n
= 5\" class=\"sb-welcome-container\">\n \n
\n {{ (kioskSession$ | async)?.welcomeMessage }}\n
\n
\n
\n\n \n \n \n\n
\n
\n \n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { KioskSessionService } from '@app/check-in/services/kiosk-session.service';\nimport { ProgressService } from '@app/shared/services/progress.service';\n\n@Component({\n selector: 'kenjo-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss']\n})\nexport class SidebarComponent implements OnInit {\n kioskSession$ = this.kioskSessionService.kioskSession$;\n currentProgress$ = this.progressService.currentProgress$;\n documentElement: any;\n\n constructor(private kioskSessionService: KioskSessionService, private progressService: ProgressService) {}\n\n ngOnInit(): void {\n this.documentElement = document.documentElement;\n }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'kenjo-success-screen-container',\n template: `\n
\n
\n \n
\n `,\n styleUrls: ['./success-screen-container.component.scss']\n})\nexport class SuccessScreenContainerComponent {\n @ViewChild('container', { read: ElementRef }) containerElementRef: ElementRef;\n @Input() originElementId?: string;\n @Input() brokenAttendanceLimit: 'breakReminder' | 'shiftDuration';\n @Input() set show(value: boolean) {\n // Workaround to Overlay CDK not animating on show\n setTimeout(() => this._show = value, 0);\n if (value === true) {\n this.setOriginOffset();\n }\n }\n get show() { return this._show; }\n\n _show: boolean = false;\n containerElement: HTMLElement;\n\n setOriginOffset() {\n const originElement = document.getElementById(this.originElementId);\n this.containerElementRef.nativeElement.style.top = `${originElement?.offsetTop ?? 0}px`;\n this.containerElementRef.nativeElement.style.left = `${originElement?.offsetLeft ?? 0}px`;\n }\n}\n","import { Component, Inject, NgZone, Optional } from '@angular/core';\nimport { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA, MatLegacyDialogRef as MatDialogRef } from '@angular/material/legacy-dialog';\nimport { TimeOffRequest } from '@app/check-in/model/time-off-request.model';\n\n@Component({\n selector: 'kenjo-transactional-dialog',\n templateUrl: './transactional-dialog.component.html',\n styleUrls: ['./transactional-dialog.component.scss'],\n})\nexport class TransactionalDialogComponent {\n titleText: string = 'Title';\n subtitleText: string = 'Subtitle';\n timeOffData: {\n color: string;\n name: string;\n partOfDay: string | { from: string; to: string };\n type: string;\n }[] = [];\n constructor(\n public dialogRef: MatDialogRef,\n @Optional() @Inject(MAT_DIALOG_DATA) public data: any\n ) {\n this.timeOffData = this.data.timeOffData;\n }\n\n confirmDialog(): void {\n if (this.data.deleteProtection) {\n this.closeDialog(false);\n return;\n }\n this.closeDialog(true);\n }\n\n closeDialog(result: boolean) {\n this.dialogRef.close(result);\n }\n}\n","\n
\n \n
\n
\n

\n {{\n iTimeOffData.name +\n \": \" +\n (iTimeOffData.type === \"Hour\"\n ? iTimeOffData.partOfDay.from +\n \" - \" +\n iTimeOffData.partOfDay.to\n : iTimeOffData.partOfDay)\n }}\n

\n
\n \n \n\n
\n {{ \"okGotIt\" | translate }}\n
\n\n","\n
\n
{{ nameInitials }}
\n
\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'kenjo-user-avatar',\n templateUrl: './user-avatar.component.html',\n styleUrls: ['./user-avatar.component.scss']\n})\nexport class UserAvatarComponent implements OnInit {\n @Input() photoUrl?: string;\n @Input() displayName?: string;\n @Input() size: 'large' | 'medium' | 'small' = 'large';\n nameInitials: string;\n\n constructor() { }\n\n ngOnInit(): void {\n this.nameInitials = this.calculateInitials(this.displayName);\n }\n\n private calculateInitials(name: string): string {\n if (name === undefined) {\n return '-';\n }\n\n const avatarName = name.trim();\n\n if (avatarName === '') {\n return '-';\n }\n\n const words = avatarName.trim().split(' ');\n if (words.length < 2) {\n return `${avatarName.charAt(0)}${avatarName.charAt(0)}`.toUpperCase();\n }\n\n if (words[0] === '+') {\n // If the name is a number (EG +22), use the whole word -> +22\n return `${words[0].trim()}${words[1].trim()}`;\n } else {\n // If the name is a proper name (EG John Smith). use the initials -> JS\n return `${words[0].trim().charAt(0)}${words[1].trim().charAt(0)}`.toUpperCase();\n }\n }\n\n}\n","// Inspired by: https://christianliebel.com/2016/05/angular-2-a-simple-click-outside-directive/\nimport { Directive, ElementRef, EventEmitter, HostListener, Output } from '@angular/core';\n\n@Directive({\n selector: '[kenjoClickOutside]'\n})\nexport class ClickOutsideDirective {\n @Output('kenjoClickOutside')\n public clickOutside: EventEmitter = new EventEmitter();\n\n @HostListener('document:click', ['$event.target'])\n public onClick(clickedElement: any): void {\n const clickedInside = this.elementRef.nativeElement.contains(clickedElement);\n if (!clickedInside) {\n this.clickOutside.emit();\n }\n }\n\n constructor(private elementRef: ElementRef) {}\n}\n","import { Directive, Output, EventEmitter, HostListener } from '@angular/core';\nimport { Subject, Observable, interval } from 'rxjs';\nimport { takeUntil, tap, filter } from 'rxjs/operators';\n\n@Directive({\n selector: '[kenjoHoldable]'\n})\nexport class HoldableDirective {\n @Output() holdTime = new EventEmitter();\n state: Subject = new Subject();\n cancel: Observable;\n\n constructor() {\n this.cancel = this.state.pipe(\n filter(v => v === 'cancel'),\n tap(v => {\n this.holdTime.emit(0);\n })\n )\n }\n\n @HostListener('mouseup', ['$event'])\n @HostListener('mouseleave', ['$event'])\n @HostListener('touchend')\n onExit() {\n this.state.next('cancel');\n }\n\n @HostListener('mousedown')\n @HostListener('touchstart')\n onHold() {\n this.state.next('start');\n const n = 100;\n\n interval(n).pipe(\n takeUntil(this.cancel),\n tap(v => {\n this.holdTime.emit(v * n)\n }))\n .subscribe();\n }\n\n}\n","import {ErrorHandler, Injectable} from '@angular/core';\n\n@Injectable()\nexport class GlobalErrorHandler implements ErrorHandler {\n handleError(error: any): void {\n const chunkFailedMessage = /Loading chunk [\\d]+ failed/;\n\n if (chunkFailedMessage.test(error.message)) {\n Promise.all(caches.keys() as any)\n .then(cacheKeys => {\n cacheKeys.map(caches.delete);\n window.location.reload();\n })\n }\n\n console.error(error);\n }\n}\n","import {\n IAttendanceBreak,\n IUserAttendance,\n} from '@app/check-in/model/user-attendance.model';\nimport { IAttendancePolicy } from '@app/setup/model/attendance-settings.model';\nimport * as check from 'check-types';\n\nconst MAX_SHIFT_LENGTH = 1440;\n\nexport const isAutoDeductBreakNeeded = (\n userAttendance: IUserAttendance,\n attendancePolicy: IAttendancePolicy,\n profileKey: string\n) => {\n const reminders = !['admin', 'hr-admin'].includes(profileKey)\n ? attendancePolicy.breakReminder.reminders\n : [];\n const shiftsAndBreaks = calculateShiftAndBreakDuration(userAttendance);\n if (\n check.nonEmptyArray(reminders) &&\n attendancePolicy.breakReminder.autoDeductBreaks\n ) {\n for (const iReminder of reminders) {\n if (\n iReminder.triggeredAfter <=\n shiftsAndBreaks.shiftDuration - shiftsAndBreaks.breakDuration &&\n iReminder.suggestedBreak > shiftsAndBreaks.breakDuration\n ) {\n return true;\n }\n }\n }\n return false;\n};\n\nexport const calculateShiftAndBreakDuration = (\n userAttendance: IUserAttendance\n) => {\n const totalBreakTime = calculateTotalBreakDuration(userAttendance);\n const shiftDurationWithoutBreaks =\n userAttendance?.endTime < userAttendance?.startTime\n ? userAttendance?.endTime - userAttendance?.startTime + MAX_SHIFT_LENGTH\n : userAttendance?.endTime - userAttendance?.startTime;\n return {\n shiftDuration: shiftDurationWithoutBreaks,\n breakDuration: totalBreakTime,\n };\n};\n\nexport const calculateTotalBreakDuration = (\n userAttendance: IUserAttendance\n) => {\n if (checkNotAssignedBreak(userAttendance)) {\n return 0;\n }\n return userAttendance.breaks?.reduce((total, iBreak) => {\n if (\n check.not.assigned(iBreak?.duration) &&\n check.assigned(iBreak?.end) &&\n check.assigned(iBreak.start)\n ) {\n iBreak.duration = iBreak.end - iBreak.start;\n }\n return total + (iBreak?.duration ?? 0);\n }, 0);\n};\n\nexport const checkNotAssignedBreak = (\n userAttendance: IUserAttendance\n): boolean => {\n return (\n check.not.assigned(userAttendance?.breaks) ||\n userAttendance?.breaks?.length === 0\n );\n};\n\nexport const filterForbiddenUserAttendanceFields = (\n iUserAttendance: IUserAttendance\n) => {\n const userAttendance = { ...iUserAttendance };\n const fieldsUsed = Object.keys(userAttendance) ?? [];\n fieldsUsed.forEach((iField) => {\n if (iField.startsWith('s_') || iField?.startsWith('_')) {\n delete userAttendance[iField];\n }\n });\n return userAttendance;\n};\n\nexport const calculateAutoDeductedBreaksDuration = (userAttendance: IUserAttendance) => {\n const clonedUserAttendance = { ...userAttendance };\n if (!userAttendance?.breaks) return 0;\n clonedUserAttendance.breaks = clonedUserAttendance?.breaks.filter((iBreak) => iBreak.autoDeducted);\n return calculateTotalBreakDuration(clonedUserAttendance);\n};","import { Component } from '@angular/core';\n\n@Component({\n selector: 'kenjo-error-illustration',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n})\nexport class ErrorIllustrationComponent {}\n","import { Component} from '@angular/core';\n\n@Component({\n selector: 'kenjo-logged-out-illustration',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `,\n})\nexport class LoggedOutComponentIllustration {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'kenjo-mountain-illustration',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `,\n styleUrls: ['./illustration-styles.scss']\n})\nexport class MountainIllustrationComponent { }\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'kenjo-success-illustration',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `,\n styleUrls: ['./illustration-styles.scss']\n})\nexport class SuccessIllustrationComponent {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateWithDataPipe } from './translate-with-data.pipe';\n\n@Pipe({\n name: 'compactDuration'\n})\nexport class CompactDurationPipe implements PipeTransform {\n constructor(private translateWithDataPipe: TranslateWithDataPipe) {}\n\n transform(value: number, showPlus?: boolean): string {\n if (isNaN(value)) {\n return this.translateWithDataPipe.transform('hoursUnit', { hours: 0 });\n }\n const { hours, minutes } = this.getHoursAndMinutes(value);\n\n\n if (minutes === 0) {\n return this.translateHours(hours, showPlus)\n }\n if (hours === 0) {\n return this.translateMinutes(minutes, showPlus);\n }\n\n return this.translateHoursAndMinutes(hours, minutes);\n }\n\n getHoursAndMinutes(value: number) {\n return {\n hours: Math.floor(value / 60),\n minutes: Math.floor(value % 60)\n }\n }\n\n translateHours(value: number, showPlus?: boolean) {\n const hours = this.addPlus(value, showPlus);\n return this.translateWithDataPipe.transform('hoursUnit', { hours });\n }\n\n translateMinutes(value: number, showPlus?: boolean) {\n const minutes = this.addPlus(value, showPlus);\n return this.translateWithDataPipe.transform('minutesUnit', { minutes });\n }\n\n translateHoursAndMinutes(hours: number, minutes: number) {\n return `${this.translateHours(hours)} ${this.translateMinutes(minutes)}`;\n }\n\n addPlus(value: number, showPlus?: boolean) {\n return showPlus ? `${value}+` : value;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateWithDataPipe } from './translate-with-data.pipe';\n\n@Pipe({ name: 'duration' })\nexport class DurationPipe implements PipeTransform {\n constructor(private translateWithDataPipe: TranslateWithDataPipe) {}\n transform(value: number = 0): string {\n if (isNaN(value)) {\n return this.translateWithDataPipe.transform('hoursAndMinutes', { hours: 0, minutes: 0 });\n }\n if (value < 0) {\n value = this.calculateOvernightEntryDuration(value);\n }\n const hours = Math.floor(value / 60);\n const minutes = Math.floor(value % 60);\n return this.translateWithDataPipe.transform('hoursAndMinutes', { hours, minutes });\n }\n\n calculateOvernightEntryDuration(value: number) {\n return (24 * 60) + value;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'hour' })\nexport class HourPipe implements PipeTransform {\n transform(value?: number): string {\n if (value === undefined) {\n return '--:--';\n }\n const hours = this.getHours(value);\n const hoursString = hours < 10 ? '0' + hours : `${hours}`;\n const minutes = Math.floor(value % 60);\n const minutesString = minutes < 10 ? '0' + minutes : `${minutes}`;\n return `${hoursString}:${minutesString}`;\n }\n\n getHours(nOfMinutes: number) {\n let hours = Math.floor(nOfMinutes / 60);\n const isOvernight = hours > 23;\n if (isOvernight) {\n hours = hours - 24;\n }\n return hours;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslationService } from '../services/translation.service';\n\n@Pipe({\n name: 'translateWithData'\n})\nexport class TranslateWithDataPipe implements PipeTransform {\n constructor(private translationService: TranslationService) {}\n transform(translationKey: string, data: any = {}): string {\n const translation = this.translationService.currentTranslations$.value[translationKey];\n if (translation === undefined) {\n return '';\n }\n\n if (Object.keys(data).length === 0) {\n return translation;\n }\n\n const finalValue = translation.split('%%').map((iTerm) => {\n if (iTerm.startsWith('data.') === false) {\n return iTerm;\n }\n\n let substitutionValue: any = Object.assign({}, data);\n iTerm.split('.').slice(1).forEach((iKey: string) => {\n substitutionValue = substitutionValue[iKey];\n });\n\n return substitutionValue;\n })\n .join('');\n\n return finalValue;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslationService } from '../services/translation.service';\n\n@Pipe({\n name: 'translate',\n pure: false\n})\nexport class TranslatePipe implements PipeTransform {\n constructor(private translationService: TranslationService) {}\n\n transform(value: string, ...args: any[]): string {\n const translation = this.translationService.currentTranslations$.value[value];\n return translation || value;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpStatusCode } from '@angular/common/http';\nimport { environment } from '@env';\nimport { HttpClientService } from './http-client.service';\nimport { PersistenceService } from './persistence.service';\nimport { NavigationService } from './navigation.service';\nimport { TranslationService } from './translation.service';\nimport { UserEventLoggerService } from './user-event-logger.service';\nimport { KioskSetupService } from '@app/setup/services/kiosk-setup.service';\n\nexport type AuthErrors = 'emailNotFound' | 'userHasNoPermission' | 'unknown';\nexport type AuthResponse = { email: string; language: string };\n\n@Injectable({ providedIn: 'root' })\nexport class AuthService {\n adminInfo: { userId?: string; orgId?: string; email?: string } = {};\n private isAuthenticated: boolean;\n private accessToken: string;\n private refreshToken: string;\n private sessionHasBeenKilled: boolean = false;\n\n constructor(\n private httpClient: HttpClientService,\n private persistenceService: PersistenceService,\n private navigationService: NavigationService,\n private translationService: TranslationService,\n private userEventLogger: UserEventLoggerService,\n private kioskSetUpService: KioskSetupService\n ) {}\n\n async signInKiosk(\n rawEmail: string\n ): Promise<{ response?: AuthResponse; error?: AuthErrors }> {\n try {\n const email = rawEmail.trim().toLowerCase();\n const response = await this.httpClient.postWithoutAuth(\n `${environment.PEOPLE_CLOUD_APP_URL}/auth/kiosk/sign-in`,\n { email }\n );\n this.adminInfo.email = response.email;\n this.translationService.setLanguage(response.language);\n return { response };\n } catch (e) {\n if (e.status === HttpStatusCode.NotFound) {\n return { error: 'emailNotFound' };\n }\n if (e.status === HttpStatusCode.Forbidden) {\n return { error: 'userHasNoPermission' };\n }\n return { error: 'unknown' };\n }\n }\n\n async sendCodeAgain(): Promise {\n const bodyData = { email: this.adminInfo.email };\n\n await this.httpClient.postWithoutAuth(\n `${environment.PEOPLE_CLOUD_APP_URL}/auth/kiosk/resend-otp-code`,\n bodyData\n );\n }\n\n async signIn2FA(hashValue: string) {\n try {\n const requestBody = { email: this.adminInfo.email, hashValue };\n const response = await this.httpClient.postWithCredentials<{\n accessToken: string;\n refreshToken: string;\n userId: string;\n sessionNames: string[];\n }>(\n `${environment.PEOPLE_CLOUD_APP_URL}/auth/kiosk/complete-2fa-sign-in`,\n requestBody\n );\n this.kioskSetUpService.sessionNames = response.sessionNames;\n this.persistenceService.setItem(\n 'sessionNames',\n JSON.stringify(response.sessionNames)\n );\n\n this.isAuthenticated = true;\n this.accessToken = `Bearer ${response.accessToken}`;\n this.refreshToken = response.refreshToken;\n this.adminInfo.userId = response.userId;\n this.persistenceService.setItem('userId', response.userId);\n this.persistenceService.setItem('refresh_token', this.refreshToken);\n this.persistenceService.setItem('accessToken', response.accessToken);\n this.persistenceService.clearItem('locationId');\n this.persistenceService.clearItem('sessionId');\n this.persistenceService.clearItem('selectedEntryMethod');\n await this.userEventLogger.initialize();\n this.userEventLogger.logEvent('VALID_2FA');\n return { response };\n } catch (error) {\n if (error.error === 'Not Found') {\n return { error: 'incorrectCode' };\n }\n if (error.error === 'Unauthorized') {\n return { error: 'noTrialsLeft' };\n }\n return { error };\n }\n }\n\n async signInStorage() {\n const userInfo: Record = {};\n try {\n const response = await this.httpClient.getWithCredentials<{\n accessToken: string;\n language: string;\n userId: string;\n }>(`${environment.PEOPLE_CLOUD_APP_URL}/auth/kiosk/sign-in-cookie`);\n userInfo.userId = response.userId;\n userInfo.language = response.language;\n userInfo.accessToken = response.accessToken;\n this.persistenceService.setItem('userId', response.userId);\n this.persistenceService.setItem('language', response.language);\n this.persistenceService.setItem('accessToken', response.accessToken);\n } catch (e) {\n const accessTokenInLocalStorage =\n this.persistenceService.getItem('accessToken');\n const cookieExistedButWasDeleted =\n accessTokenInLocalStorage !== undefined;\n if (!cookieExistedButWasDeleted) {\n return false;\n }\n userInfo.userId = this.persistenceService.getItem('userId');\n userInfo.language = this.persistenceService.getItem('language');\n userInfo.accessToken = this.persistenceService.getItem('accessToken');\n }\n userInfo.userId = this.persistenceService.getItem('userId');\n userInfo.language = this.persistenceService.getItem('language');\n userInfo.accessToken = this.persistenceService.getItem('accessToken');\n this.isAuthenticated = true;\n this.adminInfo = { userId: userInfo.userId };\n this.accessToken = `Bearer ${userInfo.accessToken}`;\n this.translationService.setLanguage(userInfo.language);\n return true;\n }\n\n async getIsAuthenticated() {\n if (this.isAuthenticated !== undefined) {\n return this.isAuthenticated;\n }\n\n try {\n const success = await this.signInStorage();\n return success;\n } catch (e) {\n return false;\n }\n }\n\n async killKioskSession() {\n this.sessionHasBeenKilled = true;\n this.navigationService.goToLoggedOut();\n\n this.adminInfo = {};\n this.isAuthenticated = false;\n this.persistenceService.clearAllData();\n }\n\n async redirectToLogIn() {\n this.adminInfo = {};\n this.isAuthenticated = false;\n this.navigationService.goToLogIn();\n }\n\n getAdminEmail(): string {\n return this.adminInfo?.email;\n }\n\n getAuthHeader() {\n return `Bearer ${this.persistenceService.getItem('accessToken')}`;\n }\n\n getSessionHasBeenKilled() {\n const wasKilled = this.sessionHasBeenKilled;\n this.sessionHasBeenKilled = false;\n return wasKilled;\n }\n}\n","import { HttpErrorResponse, HttpResponse } from '@angular/common/http';\nimport * as Sentry from '@sentry/browser';\nimport { environment } from '../../../environments/environment';\nimport { Injectable, Injector } from '@angular/core';\nimport { MatLegacySnackBar as MatSnackBar } from '@angular/material/legacy-snack-bar';\nimport { NavigationService } from './navigation.service';\nimport { TranslatePipe } from '../pipes/translate.pipe';\nimport { KioskSessionService } from '@app/check-in/services/kiosk-session.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ErrorService {\n constructor(private snackBar: MatSnackBar, private injector: Injector) {\n if (environment.production === true) {\n const config = {\n dsn: environment.SENTRY_DSN,\n release: environment.SLUG_COMMIT_AWS,\n environment: environment.APP_NAME_AWS,\n integrations: [\n Sentry.dedupeIntegration(),\n Sentry.extraErrorDataIntegration({ depth: 5 }),\n ],\n };\n\n Sentry.init(config);\n Sentry.withScope((scope) => {\n scope.setTag('git_commit', environment.SLUG_COMMIT_AWS);\n scope.setTag('aws_app_name', environment.APP_NAME_AWS);\n scope.setTag('angular_production', `${environment.production}`);\n });\n }\n }\n\n displayError(errorMessage: string) {\n const snackBarRef = this.snackBar.open(errorMessage, 'x', {\n panelClass: 'kenjo-error-snackbar',\n duration: 5000,\n });\n }\n\n displayErrorCustom(errorMessage: string, closeSymbol?: string) {\n const snackBarRef = this.snackBar.open(errorMessage, closeSymbol, {\n panelClass: ['kenjo-error-snackbar', 'custom-snackbar'],\n duration: 5000,\n });\n }\n\n public logErrorForDevelopers(error: HttpErrorResponse): void {\n if (environment.production === true) {\n Sentry.withScope((scope) => {\n scope.setExtra('Original Error - Name', error.name);\n scope.setExtra('Original Error - Status', error.status);\n scope.setExtra('Original Error - Status text', error.statusText);\n scope.setExtra('Original Error - URL', error.url);\n scope.setExtra('Original Error - Message', error.message);\n scope.setExtra('Original Error - Ok', error.ok);\n scope.setExtra('Original Error - Error', error.error);\n Sentry.captureException(error);\n });\n }\n\n if (environment.ENABLE_ERRORS_BY_CONSOLE === 'true') {\n // tslint:disable: no-console\n console.log('');\n console.log('----- ERROR -----');\n const sentryMessage: string =\n environment.production === true\n ? `Sentry id: ${Sentry.lastEventId()}`\n : 'No Sentry';\n console.log(sentryMessage);\n console.log(error);\n console.log('-----------------');\n console.log('');\n // tslint:enable: no-console\n }\n }\n\n connectionErrorHandler(): void {\n const errorMessage = this.injector\n .get(TranslatePipe)\n .transform('connectivityIssue');\n this.injector.get(NavigationService).goToPinCode();\n this.injector.get(KioskSessionService).updateOnlineStatus(false);\n this.displayErrorCustom(errorMessage);\n }\n\n logAndDisplayUnrecognizedError(error: HttpErrorResponse): void {\n this.logErrorForDevelopers(error);\n this.displayError(\n this.injector\n .get(TranslatePipe)\n .transform('somethingWentWrongActionNotSaved')\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GuardLoadingService {\n guardLoading$ = new BehaviorSubject(true);\n\n startGuardLoading() {\n this.guardLoading$.next(true);\n }\n\n endGuardLoading() {\n this.guardLoading$.next(false);\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from '@env';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HttpClientService {\n delay = environment.delay === 'true';\n\n constructor(private httpClient: HttpClient) {}\n\n getWithoutAuth = async (url: string): Promise => {\n if (this.delay) {\n await new Promise(res => setTimeout(res, 500));\n }\n const headers = new HttpHeaders().set('Content-Type', 'application/json');\n return this.httpClient.get(url, { headers }).toPromise();\n }\n\n getWithCredentials = async (url: string): Promise => {\n if (this.delay) {\n await new Promise(res => setTimeout(res, 500));\n }\n const withCredentials = true;\n return this.httpClient.get(url, { withCredentials }).toPromise();\n }\n\n postWithCredentials = async (url: string, body: any): Promise => {\n if (this.delay) {\n await new Promise(res => setTimeout(res, 500));\n }\n const headers = new HttpHeaders().set('Content-Type', 'application/json');\n const withCredentials = true;\n return this.httpClient.post(url, body, { headers, withCredentials }).toPromise();\n }\n\n postWithoutAuth = async (url: string, body: any): Promise => {\n if (this.delay) {\n await new Promise(res => setTimeout(res, 500));\n }\n const headers = new HttpHeaders().set('Content-Type', 'application/json');\n return this.httpClient.post(url, body, { headers }).toPromise();\n }\n\n get = async (url: string, authToken: string): Promise => {\n if (this.delay) {\n await new Promise(res => setTimeout(res, 500));\n }\n const headers = new HttpHeaders().set('Content-Type', 'application/json').set('Authorization', authToken);\n return this.httpClient.get(url, { headers }).toPromise();\n }\n\n post = async (url: string, body: any, authToken: string): Promise => {\n if (this.delay) {\n await new Promise(res => setTimeout(res, 500));\n }\n const headers = new HttpHeaders().set('Content-Type', 'application/json').set('Authorization', authToken);\n return this.httpClient.post(url, body, { headers }).toPromise();\n }\n\n put = async (url: string, body: any, authToken: string): Promise => {\n if (this.delay) {\n await new Promise(res => setTimeout(res, 500));\n }\n const headers = new HttpHeaders().set('Content-Type', 'application/json').set('Authorization', authToken);\n return this.httpClient.put(url, body, { headers }).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport localeDe from '@angular/common/locales/de';\nimport localeDeAT from '@angular/common/locales/de-AT';\nimport localeEnUS from '@angular/common/locales/en';\nimport localeEnGB from '@angular/common/locales/en-GB';\nimport localeEs from '@angular/common/locales/es';\nimport localeEsMX from '@angular/common/locales/es-MX';\nimport localeNl from '@angular/common/locales/nl';\nimport localeIt from '@angular/common/locales/it';\nimport localeFr from '@angular/common/locales/fr';\n\nimport { registerLocaleData } from '@angular/common';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class InternationalizationService {\n localeToUse: string;\n\n constructor() {}\n\n setUserLocale(userLocale: string = 'en-GB'): void {\n if (userLocale === 'de') {\n registerLocaleData(localeDe, 'kenjo-locale');\n this.localeToUse = userLocale;\n } else if (userLocale === 'de-AT') {\n registerLocaleData(localeDeAT, 'kenjo-locale');\n this.localeToUse = userLocale;\n } else if (userLocale === 'es') {\n registerLocaleData(localeEs, 'kenjo-locale');\n this.localeToUse = userLocale;\n } else if (userLocale === 'es-MX') {\n registerLocaleData(localeEsMX, 'kenjo-locale');\n this.localeToUse = userLocale;\n } else if (userLocale === 'en-US') {\n registerLocaleData(localeEnUS, 'kenjo-locale');\n this.localeToUse = userLocale;\n } else if (userLocale === 'fr') {\n registerLocaleData(localeFr, 'kenjo-locale');\n this.localeToUse = userLocale;\n } else if (userLocale === 'it') {\n registerLocaleData(localeIt, 'kenjo-locale');\n this.localeToUse = userLocale;\n } else if (userLocale === 'nl') {\n registerLocaleData(localeNl, 'kenjo-locale');\n this.localeToUse = userLocale;\n } else {\n registerLocaleData(localeEnGB, 'kenjo-locale');\n this.localeToUse = 'en-GB';\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { EntryMethod } from '@app/check-in/model/kiosk-session.model';\nimport { ProgressService } from './progress.service';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationService {\n constructor(private router: Router, private progressService: ProgressService) { }\n\n navigate(route: KioskRoute) {\n this.progressService.updateProgress(route);\n this.router.navigate([route]);\n }\n\n goBack() {\n const prevRoute = this.progressService.getPreviousRoute();\n this.router.navigateByUrl(prevRoute);\n }\n\n navigateToLastVisitedRoute() {\n const lastVisitedRoute = this.progressService.getLastVisitedRoute();\n this.router.navigateByUrl(lastVisitedRoute);\n }\n\n goToLogIn() {\n this.router.navigateByUrl('/sign-in/email');\n }\n\n goToLocations() {\n this.router.navigateByUrl('/locations');\n }\n\n goToMessage() {\n this.router.navigateByUrl('/setup/message');\n }\n\n goToTheme() {\n this.router.navigateByUrl('/setup/theme');\n }\n\n goToMethods() {\n this.router.navigateByUrl('/setup/methods');\n }\n\n gotToActivated() {\n this.router.navigateByUrl('/setup/activated');\n }\n\n goToCheckIn(activeMethods: Array) {\n if (activeMethods.includes('qrCode')) {\n this.goToQRCode();\n return;\n }\n\n if (activeMethods.includes('pinCode')) {\n this.goToPinCode();\n }\n }\n\n goToPinCode() {\n this.router.navigateByUrl('/check-in/pincode');\n }\n\n goToQRCode() {\n this.router.navigateByUrl('/check-in/qr');\n }\n\n goToLoggedOut() {\n this.router.navigateByUrl('/sign-in/logged-out');\n }\n}\n\nconst routes = [\n '/sign-in/email', '/sign-in/code',\n '/locations',\n '/setup/message', '/setup/theme', '/setup/methods',\n '/check-in/pincode', '/check-in/qr', '/check-in/user-attendance'\n] as const;\nexport type KioskRoute = typeof routes[number];\n","import { Injectable } from '@angular/core';\n\nconst persistenceKeys = [\n 'language',\n 'sessionId',\n 'locationId',\n 'refresh_token',\n 'sessionKilled',\n 'selectedEntryMethod',\n 'welcomeMessage',\n 'pinCodeActive',\n 'qrCodeActive',\n 'selectedThemeColor',\n 'version',\n 'accessToken',\n 'userId',\n 'name',\n 'sessionNames'\n] as const;\ntype PersistenceKey = (typeof persistenceKeys)[number];\n@Injectable({ providedIn: 'root' })\nexport class PersistenceService {\n getItem(key: PersistenceKey) {\n return localStorage.getItem(key) ?? undefined;\n }\n setItem(key: PersistenceKey, value: string) {\n localStorage.setItem(key, value);\n }\n clearItem(key: PersistenceKey) {\n localStorage.removeItem(key);\n }\n clearAllData() {\n localStorage.clear();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { EntryMethod } from '@app/check-in/model/kiosk-session.model';\nimport { BehaviorSubject } from 'rxjs';\nimport { KioskRoute } from './navigation.service';\nimport { PersistenceService } from './persistence.service';\n\n@Injectable({ providedIn: 'root' })\nexport class ProgressService {\n currentProgress$ = new BehaviorSubject(-1);\n routeProgressHandler = new RouteProgressHandler();\n\n constructor(private router: Router, private persistenceService: PersistenceService) { }\n\n updateProgress(route: KioskRoute) {\n this.setStep(this.routeProgressHandler.getRouteProgress(route));\n }\n\n setStep(step: number) {\n this.currentProgress$.next(step);\n }\n\n getPreviousRoute() {\n const currentProgress = this.currentProgress$.value;\n const prevRoute = this.routeProgressHandler.getRouteByProgress(currentProgress - 1);\n return prevRoute;\n }\n\n getLastVisitedRoute(): KioskRoute {\n const lastVisitedCookie = this.persistenceService.getItem('locationId');\n if (!lastVisitedCookie) {\n return '/locations';\n }\n\n const entryMethod = this.persistenceService.getItem('selectedEntryMethod') as EntryMethod;\n if (entryMethod === 'pinCode') {\n return '/check-in/pincode';\n }\n\n return '/check-in/qr';\n }\n\n getProgress() {\n return this.routeProgressHandler.getRouteProgress(this.router.url);\n }\n}\n\nclass RouteProgressHandler {\n routesProgress: Record = {\n '/sign-in/email': -1,\n '/sign-in/code': 0,\n '/locations': 1,\n '/setup/message': 2,\n '/setup/theme': 3,\n '/setup/methods': 4,\n '/check-in/pincode': 5,\n '/check-in/qr': 5,\n '/check-in/user-attendance': 6\n }\n\n getRouteProgress(route: string): number {\n const routeProgress = this.routesProgress[route];\n return routeProgress !== undefined ? routeProgress : -1;\n }\n\n getRouteByProgress(progress: number): KioskRoute {\n const [routeName]: [KioskRoute, number] =\n (Object.entries(this.routesProgress) as Array<[KioskRoute, number]>).find(([_, iRouteProgress]) => {\n return iRouteProgress === progress;\n });\n return routeName;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { PersistenceService } from './persistence.service';\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeColorService {\n public selectedThemeColor$ = new BehaviorSubject('kenjo-default');\n public availableColors = [ 'kenjo-default', 'USER_COLOR_1', 'USER_COLOR_2', 'USER_COLOR_3', 'USER_COLOR_4', 'USER_COLOR_5', 'USER_COLOR_6', 'USER_COLOR_7', 'USER_COLOR_8', 'USER_COLOR_9', 'USER_COLOR_10', 'USER_COLOR_11', 'USER_COLOR_12' ]\n\n private colorMap = {\n 'kenjo-default': { background: '#dedede', font: '#333', buttonBackground: '#59e37c', buttonTextColor: '#FFF' },\n 'USER_COLOR_1': { background: '#ffae80', font: '#333', buttonBackground: '#ffae80', buttonTextColor: '#333' },\n 'USER_COLOR_2': { background: '#8480ff', font: '#FFF', buttonBackground: '#8480ff', buttonTextColor: '#FFF' },\n 'USER_COLOR_3': { background: '#80e0ff', font: '#333', buttonBackground: '#80e0ff', buttonTextColor: '#333' },\n 'USER_COLOR_4': { background: '#6ddaae', font: '#FFF', buttonBackground: '#6ddaae', buttonTextColor: '#FFF' },\n 'USER_COLOR_5': { background: '#fc7e9e', font: '#FFF', buttonBackground: '#fc7e9e', buttonTextColor: '#FFF' },\n 'USER_COLOR_6': { background: '#f37a7a', font: '#FFF', buttonBackground: '#f37a7a', buttonTextColor: '#FFF' },\n 'USER_COLOR_7': { background: '#ffca73', font: '#333', buttonBackground: '#ffca73', buttonTextColor: '#333' },\n 'USER_COLOR_8': { background: '#77eddf', font: '#333', buttonBackground: '#77eddf', buttonTextColor: '#333' },\n 'USER_COLOR_9': { background: '#7dc7fa', font: '#FFF', buttonBackground: '#7dc7fa', buttonTextColor: '#FFF' },\n 'USER_COLOR_10': { background: '#a6e975', font: '#333', buttonBackground: '#a6e975', buttonTextColor: '#333' },\n 'USER_COLOR_11': { background: '#e178f0', font: '#FFF', buttonBackground: '#e178f0', buttonTextColor: '#FFF' },\n 'USER_COLOR_12': { background: '#f77ca9', font: '#FFF', buttonBackground: '#f77ca9', buttonTextColor: '#FFF' }\n }\n constructor(private persistence: PersistenceService) { }\n\n applyStoredColor() {\n const storedThemeColor = this.persistence.getItem('selectedThemeColor');\n if (storedThemeColor) {\n this.setSelectedThemeColor(storedThemeColor);\n this.applyTheme()\n }\n }\n\n setSelectedThemeColor(value: string) {\n this.selectedThemeColor$.next(value);\n this.persistence.setItem('selectedThemeColor', value);\n }\n\n applyTheme() {\n const color = this.selectedThemeColor$.getValue();\n document.documentElement.style.setProperty('--kenjo-theme-color', this.colorMap[color].background);\n document.documentElement.style.setProperty('--kenjo-theme-font-color', this.colorMap[color].font);\n document.documentElement.style.setProperty('--kenjo-theme-button-background', this.colorMap[color].buttonBackground);\n document.documentElement.style.setProperty('--kenjo-theme-button-text-color', this.colorMap[color].buttonTextColor);\n }\n\n restoreTheme() {\n document.documentElement.style.setProperty('--kenjo-theme-color', this.colorMap['kenjo-default'].background);\n document.documentElement.style.setProperty('--kenjo-theme-font-color', this.colorMap['kenjo-default'].font);\n document.documentElement.style.setProperty('--kenjo-theme-button-background', this.colorMap['kenjo-default'].buttonBackground);\n document.documentElement.style.setProperty('--kenjo-theme-button-text-color', this.colorMap['kenjo-default'].buttonTextColor);\n }\n\n clearSelectedThemeColor() {\n this.selectedThemeColor$.next('kenjo-default');\n this.persistence.clearItem('selectedThemeColor');\n this.restoreTheme();\n }\n\n computeColor(color: string): typeof this.colorMap[keyof typeof this.colorMap] {\n return this.colorMap[color] || this.colorMap['kenjo-default'];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { HttpClientService } from './http-client.service';\nimport { InternationalizationService } from './internationalization.service';\nimport { en, es, de, fr, nl, it } from '../../i18n/i18n';\nimport { PersistenceService } from './persistence.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TranslationService {\n languagesMap = { en, es, de, fr, nl, it };\n\n currentLanguage$: BehaviorSubject =\n new BehaviorSubject('en');\n currentTranslations$: BehaviorSubject> =\n new BehaviorSubject(this.languagesMap.en);\n\n constructor(\n private httpClient: HttpClientService,\n private internationalizationService: InternationalizationService,\n private persistence: PersistenceService\n ) {\n this.initLocale(); // Set it right away for the date pipe\n this.initLanguage();\n }\n\n initLocale() {\n this.internationalizationService.setUserLocale(this.getBrowserLanguage());\n }\n\n async initLanguage() {\n const persistedLanguage = await this.persistence.getItem('language');\n if (persistedLanguage) {\n this.setLanguage(persistedLanguage, true);\n return;\n }\n\n this.setLanguage(this.getBrowserLanguage());\n }\n\n getBrowserLanguage() {\n const [lang, country] = navigator.language.split('-');\n if (lang in this.languagesMap) {\n return lang;\n }\n return 'en';\n }\n\n async setLanguage(lang: string, skipPersistence?: boolean) {\n if (!(lang in this.languagesMap)) {\n lang = 'en';\n }\n\n this.currentLanguage$.next(lang as keyof typeof this.languagesMap);\n this.currentTranslations$.next(this.languagesMap[lang]);\n this.internationalizationService.setUserLocale(lang);\n\n if (!skipPersistence) {\n await this.persistence.setItem('language', lang);\n }\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { environment } from '@env';\nimport * as amplitude from 'amplitude-js';\n\nimport { AuthService } from './auth.service';\nimport { HttpClientService } from './http-client.service';\n\ntype amplitudeEventKey = keyof typeof amplitudeEventKeys;\ntype amplitudeEventName = typeof amplitudeEventKeys[amplitudeEventKey];\n\n@Injectable({ providedIn: 'root' })\nexport class UserEventLoggerService {\n private API_KEY = environment.AMPLITUDE_API_KEY;\n private loggedUser: { userId?: string, orgId?: string, email?: string };\n private ignoreAccount: boolean;\n private client: amplitude.AmplitudeClient;\n private organization: { brandName: string, _id: string, email: string, isFreeTrialAccount: boolean };\n private customerStatus: 'Customer' | 'Free trial';\n\n constructor(private injector: Injector) { }\n\n public async logEvent(eventKey: amplitudeEventKey, email?: string) {\n try {\n if (this.ignoreAccount || !this.API_KEY?.length) {\n return;\n }\n\n if (!this.client) {\n await this.initialize();\n }\n\n if (!this.client) {\n return;\n }\n\n const userProperties = {\n email: email ?? this.loggedUser.email,\n customerStatus: this.customerStatus\n };\n\n if (this.organization) {\n this.client.setGroup('companyName', this.organization.brandName);\n this.client.setGroup('orgId', this.organization._id);\n this.client.setUserProperties(userProperties);\n }\n const eventInfo = amplitudeEventKeys[eventKey];\n const eventProperties = { platform: 'Kiosk', category: 'Attendance', ...eventInfo };\n this.client.logEvent(eventInfo.eventName, eventProperties);\n } catch {\n // do nothing\n }\n }\n\n public async initialize() {\n try {\n if (this.API_KEY) {\n await this.createAmplitudeClient();\n }\n } catch {\n // do nothing\n }\n }\n\n private async createAmplitudeClient() {\n this.loggedUser = this.injector.get(AuthService).adminInfo;\n if (this.loggedUser?.userId) {\n this.organization = await this.injector.get(HttpClientService).get(\n `${environment.PEOPLE_CLOUD_APP_URL}/organization-db/organizations/my-organization`,\n this.injector.get(AuthService).getAuthHeader());\n\n const isFreeTrialAccount = this.organization?.isFreeTrialAccount === true;\n this.customerStatus = isFreeTrialAccount ? 'Free trial' : 'Customer';\n }\n\n this.ignoreAccount = this.shouldIgnoreAccount();\n if (this.ignoreAccount === true) {\n return;\n }\n this.client = amplitude.getInstance();\n this.client.init(this.API_KEY, this.loggedUser?.userId, {\n apiEndpoint: this.getAmplitudeProxyUrl(),\n forceHttps: this.getAmplitudeProxyUrlProtocol() === 'https:',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n Authorization: this.injector.get(AuthService).getAuthHeader()\n }\n } as any);\n }\n\n private shouldIgnoreAccount() {\n if (!environment.AMPLITUDE_IGNORE_DOMAINS?.length || !this.organization?.email) {\n return false;\n }\n\n const domains = environment.AMPLITUDE_IGNORE_DOMAINS.split(',');\n const accountFound = domains.some((iDomain) => this.organization.email.endsWith(iDomain));\n return accountFound;\n }\n\n private getAmplitudeProxyUrl() {\n const url = `${environment.PEOPLE_CLOUD_APP_URL}/amplitude/log-event`;\n return url.replace(/^(https?:|)\\/\\//, '');\n }\n\n private getAmplitudeProxyUrlProtocol() {\n const url = new URL(environment.PEOPLE_CLOUD_APP_URL);\n return url.protocol;\n }\n}\n\nexport const amplitudeEventKeys = {\n VALID_2FA: { eventName: 'submit valid activation code', subcategory1: 'Activation' },\n REFRESH_LOCATIONS: { eventName: 'refresh kiosk location', subcategory1: 'select location step' },\n DEFINE_MESSAGE: { eventName: 'define welcome message', subcategory1: 'welcome message' },\n SKIP_MESSAGE: { eventName: 'skip welcome message', subcategory1: 'welcome message' },\n SWITCH_TO_QR: { eventName: 'switch to QR', subcategory1: 'PIN code intro screen' },\n SWITCH_TO_PIN: { eventName: 'switch to PIN code', subcategory1: 'QR reading screen' },\n INVALID_PIN: { eventName: 'invalid PIN code intro', subcategory1: 'PIN code intro screen' },\n CHECK_IN_PIN: { eventName: 'check in', subcategory1: 'PIN code', subcategory3: 'Clock' },\n KIOSK_BREAK: { eventName: 'kiosk break', subcategory1: '' },\n BREAK_REMINDER_TRIGGERED: { eventName: 'break reminder is triggered', subcategory1: 'Attendance Policies', subcategory2: 'Break Reminder Kiosk' },\n BREAK_REMINDER_SKIPPED: { eventName: 'break reminder is skipped', subcategory1: 'Attendance Policies', subcategory2: 'Break Reminder Kiosk' },\n BREAK_REMINDER_SAVED: { eventName: 'break reminder is saved with value', subcategory1: 'Attendance Policies', subcategory2: 'Break Reminder Kiosk' },\n MAX_DAILY_HOURS: { eventName: 'Max daily hours limit triggered', subcategory1: 'Max Daily hours', subcategory2: 'Max daily hours Kiosk' }\n} as const;\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SidebarComponent } from './components/sidebar/sidebar.component';\nimport { DatetimeComponent } from './components/datetime/datetime.component';\nimport { ProgressBarComponent } from './components/progress-bar/progress-bar.component';\nimport { HeaderBarComponent } from './components/header-bar/header-bar.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MaterialModule } from '../material.module';\nimport { IconComponent } from './components/icon/icon.component';\nimport { BackArrowButtonComponent } from './components/back-arrow-button/back-arrow-button.component';\nimport { LanguagePickerComponent } from './components/language-picker/language-picker.component';\nimport { MatLegacySelectModule as MatSelectModule } from '@angular/material/legacy-select';\nimport { FormsModule } from '@angular/forms';\nimport { HttpClientModule } from '@angular/common/http';\nimport { TranslatePipe } from './pipes/translate.pipe';\nimport { PrimaryButtonComponent } from './components/primary-button/primary-button.component';\nimport { MatRippleModule } from '@angular/material/core';\nimport { FooterBarComponent } from './components/footer-bar/footer-bar.component';\nimport { RefreshButtonComponent } from './components/refresh-button/refresh-button.component';\nimport { CodeInputComponent } from './components/code-input/code-input.component';\nimport { EmptyLocationComponent } from './components/empty-location/empty-location.component';\nimport { ConfirmationDialogComponent } from './components/confirmation-dialog/confirmation-dialog.component';\nimport { DialogContainerComponent } from './components/dialog-container/dialog-container.component';\nimport { MatLegacyDialogModule as MatDialogModule } from '@angular/material/legacy-dialog';\nimport { TranslateWithDataPipe } from './pipes/translate-with-data.pipe';\nimport { RaisedButtonComponent } from './components/raised-button/raised-button.component';\nimport { UserAvatarComponent } from './components/user-avatar/user-avatar.component';\nimport { HoldButtonComponent } from './components/hold-button/hold-button.component';\nimport { MatLegacyProgressSpinnerModule as MatProgressSpinnerModule } from '@angular/material/legacy-progress-spinner';\nimport { SuccessScreenContainerComponent } from './components/success-screen-container/success-screen-container.component';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { HourPipe } from './pipes/hour.pipe';\nimport { DurationPipe } from './pipes/duration.pipe';\nimport { ErrorIllustrationComponent } from './illustrations/error-illustration.component';\nimport { SuccessIllustrationComponent } from './illustrations/success-illustration.component';\nimport { HoldableDirective } from './directives/holdable.directive';\nimport { MountainIllustrationComponent } from './illustrations/mountain-illustration.component';\nimport { LoadingSpinnerComponent } from './components/loading-spinner/loading-spinner.component';\nimport { LoggedOutComponentIllustration } from './illustrations/logged-out-illustration.component';\nimport { SecondaryButtonComponent } from './components/secondary-button/secondary-button.component';\nimport { CompactDurationPipe } from './pipes/compact-duration.pipe';\nimport { ClickOutsideDirective } from './directives/click-outside.directive';\nimport { AutoDeductDialogComponent } from './components/auto-deduct-break-dialog/auto-deduct-dialog.component';\nimport { ColumnContainerComponent } from './components/column-container/column-container.component';\nimport { ColumnComponent } from './components/column/column.component';\nimport { TransactionalDialogComponent } from './components/transactional-dialog/transactional-dialog.component';\n\n@NgModule({\n declarations: [\n SidebarComponent,\n DatetimeComponent,\n ProgressBarComponent,\n HeaderBarComponent,\n IconComponent,\n BackArrowButtonComponent,\n LanguagePickerComponent,\n TranslatePipe,\n PrimaryButtonComponent,\n FooterBarComponent,\n RefreshButtonComponent,\n ErrorIllustrationComponent,\n CodeInputComponent,\n EmptyLocationComponent,\n ConfirmationDialogComponent,\n DialogContainerComponent,\n TranslateWithDataPipe,\n RaisedButtonComponent,\n UserAvatarComponent,\n HoldButtonComponent,\n SuccessScreenContainerComponent,\n SuccessIllustrationComponent,\n HourPipe,\n DurationPipe,\n HoldableDirective,\n ClickOutsideDirective,\n MountainIllustrationComponent,\n LoadingSpinnerComponent,\n LoggedOutComponentIllustration,\n SecondaryButtonComponent,\n CompactDurationPipe,\n AutoDeductDialogComponent,\n ColumnContainerComponent,\n ColumnComponent,\n TransactionalDialogComponent,\n ],\n imports: [\n CommonModule,\n MatIconModule,\n MaterialModule,\n FormsModule.withConfig({\n callSetDisabledState: 'always'\n }),\n MatSelectModule,\n HttpClientModule,\n MatRippleModule,\n MatDialogModule,\n MatProgressSpinnerModule,\n OverlayModule,\n ],\n exports: [\n SidebarComponent,\n DatetimeComponent,\n ProgressBarComponent,\n HeaderBarComponent,\n IconComponent,\n TranslatePipe,\n TranslateWithDataPipe,\n HourPipe,\n DurationPipe,\n PrimaryButtonComponent,\n FooterBarComponent,\n ErrorIllustrationComponent,\n CodeInputComponent,\n EmptyLocationComponent,\n ConfirmationDialogComponent,\n RaisedButtonComponent,\n UserAvatarComponent,\n SuccessScreenContainerComponent,\n SuccessIllustrationComponent,\n MountainIllustrationComponent,\n HoldButtonComponent,\n LoadingSpinnerComponent,\n LoggedOutComponentIllustration,\n DialogContainerComponent,\n ClickOutsideDirective,\n TransactionalDialogComponent,\n ],\n providers: [TranslatePipe, TranslateWithDataPipe, HourPipe],\n})\nexport class SharedModule {}\n","export const environment = {\n \"production\": false,\n \"PEOPLE_CLOUD_APP_URL\": \"https://dev3-api.kenjo.io\",\n \"ORGOS_WEB_APP_URL\": \"https://dev3-env.kenjo.io\",\n \"delay\": \"false\",\n \"AMPLITUDE_IGNORE_DOMAINS\": \"kenjo.io,orgos.io\",\n \"AMPLITUDE_API_KEY\": \"6bebc3de7b12717ce6c66377fd9b8b91\",\n \"SENTRY_DSN\": \"https://dd740f467ec778222e0eebce46f3c873@sentry.io/4507492581244928\",\n \"SLUG_COMMIT_AWS\": \"<>\",\n \"APP_NAME_AWS\": \"kenjo-kiosk-<>\",\n \"ENABLE_ERRORS_BY_CONSOLE\": \"false\"\n};","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","module.exports.en = require(\"./en.json\");\nmodule.exports.es = require(\"./es.json\");\nmodule.exports.de = require(\"./de.json\");\nmodule.exports.fr = require(\"./fr.json\");\nmodule.exports.nl = require(\"./nl.json\");\nmodule.exports.it = require(\"./it.json\");\n"],"names":["RouterModule","routes","path","loadChildren","then","m","SignInModule","LocationModule","SetupModule","CheckInModule","redirectTo","AppRoutingModule","forRoot","imports","exports","i0","AppComponent","constructor","contexts","guardLoadingService","colorThemeService","guardLoading$","applyStoredColor","getRouteAnimationData","getContext","route","snapshot","data","animation","selectors","decls","vars","consts","template","BrowserModule","ErrorHandler","LOCALE_ID","SharedModule","BrowserAnimationsModule","GlobalErrorHandler","AppModule","bootstrap","provide","useValue","useClass","declarations","checkLimits","userProfile","attendanceEntry","attendanceOfTheDay","attendancePolicy","includes","undefined","maxHoursPerDayLimit","MaxHoursPerDayAttendanceLimit","maxHoursPerDayStatus","checkLimit","broken","AttendanceLimit","getEntryDuration","entry","endTime","startTime","breakDuration","breaks","reduce","total","iBreak","end","start","breakTime","todayAttendance","limitDailyHours","isActive","conflicts","otherEntries","filter","iAttendance","_id","totalTracked","limit","difference","newEndTime","modalData","maxHoursPerDay","BehaviorSubject","environment","BreakReminderService","http","auth","errorService","translatePipe","openReminder","checkBreakReminder","_userId","date","thereAreBreaksTodayAlready","some","iEntry","length","body","interface","result","post","PEOPLE_CLOUD_APP_URL","getAuthHeader","breakReminderInfo$","next","clearBreakReminder","saveBreak","breakReminderDuration","id","userId","entryInterface","breakStart","breakEnd","newBreaks","getValue","_interface","pinCode","pincode","lastModifiedEntry","e","error","displayError","transform","status","connectionErrorHandler","logErrorForDevelopers","factory","providedIn","KickOutTimerService","kioskService","navigationService","dialogRef","breakReminderService","initTimeout","timeoutIntervalRef","setTimeout","kickOut","restartTimeout","flushTimeout","clearTimeout","breakReminderActive","handleAutoDeductBreak","lastAttendanceEntry$","pincodeUser$","userPolicy","closeAll","flushPincodeUser","goToPinCode","TranslatePipe","AuthService","ErrorService","HttpClientService","NavigationService","PersistenceService","ThemeColorService","dayjs","KioskSessionService","injector","persistenceService","connectionStatusSubject","asObservable","updateOnlineStatus","isOnline","createKioskSession","locationId","entryMethods","welcomeMessage","themeColor","name","currentDate","expirationDate","add","session","get","kioskSession$","clearPreLaunchPersistence","setItem","clearItem","initCheckKioskStatusInterval","checkInterval","checkKioskStatusInInterval","timeOutRef","getCurrentSession","goToLogIn","kioskSession","selectedEntryMethod","token","reloadApp","checkKioskVersion","version","networkError","qrHasBeenDisabled","errorKey","setSelectedThemeColor","applyTheme","sessionAvailableMethods$","noMethodsAvailable","checkEntryMethods","emitNewQRHash","nextCheckInSeconds","expiresInSeconds","kioskWasClosed","closeKiosk","setEntryMethod","entryMethod","currentOne","storedSessionId","getItem","kioskStatus","_qrHash","qrCodeHash$","goBackToLocations","goToCheckIn","clearSession","goToLocations","killKioskSession","clearSelectedThemeColor","restoreTheme","currentVersion","Number","toString","window","location","reload","checkPreSaveLimits","filterForbiddenUserAttendanceFields","isAutoDeductBreakNeeded","PunchClockValidator","KioskService","userEventLogger","userAttendanceService","INACTIVE_POLICY","currentTime","hours","hour","minutes","minute","totalMinutes","validatePincode","userAttendanceInfo","checkAttendanceEntries","attendanceCategoriesInfo$","attendanceCategories","userPinCode","computeLastAttendanceEntry","userAttendance","response","HTTP_ERROR_MESSAGES","refreshAttendanceInfo","currentUserId","actualAttendance$","clockIn","newAttendanceEntry","createEmptyAttendanceEntry","Date","getHours","getMinutes","overlappingShift","checkOverlapping","logEvent","logAndDisplayUnrecognizedError","checkOut","params","currentAttendanceEntry","attendancePolicy$","iUserAttendance","isOverlapping","_","splitAttendanceEntries","preSaveBrokenLimit","allowsSaving","requestBody","key","automation","fromBreak","getMaxHoursPerDayFromBreakAutomationInfo","getMaxHoursPerDayAutomationInfo","entryToBeSplit","profileKey","modifiedEntries","originalEntries","splittedAttendanceEntries","splittedAttendanceEntries$","currentEntry","getCurrentEntry","put","brokenAttendanceLimit$","entries","currentMinutes","getCurrentMinutes","find","lastValidEntry","sort","a","b","checkAttendanceLimits","otherAttendanceEntries","changes","fieldChanged","newValue","oldValue","clearAttendanceLimitModal","startBreak","startBreakTime","getBreakTimeFor","brokenLimitIfItWasCheckOut","tempUserAttendance","finishBreak","currentOpenBreak","currentOpenBreak$","currentBreak","updatedBreaks","breakToFinish","insertBreakOfDuration","newBreak","updateAttendanceCategory","category","payload","attendanceCategoryId","attendanceSubCategoryId","parentCategoryId","getDailyTime","showDailyTotal","setUTCHours","totalWorkTime","validatedAttendanceEntries","attendanceEntries","_deleted","toISOString","split","yesterdayAndTodayAttendance","yesterdayAttendance","isTimeOff","every","attendance","_allowanceType","yesterdayEntry","getYesterdayOpenAttendanceEntry","openBreak","sorted","lastAttendanceEntry","ownerId","getTodayAsIfItWasUTC","comment","today","todayDate","getDate","todayMonth","getMonth","todayYear","getFullYear","isoString","policy","isOverlappingWithTimeOf","checkCheckOut","timeOffRequests","timeOffRequest","overlappingWithTimeOff","startIsInsideOtherEntry","endIsInsideOtherEntry","otherEntryIsInside","isOpen","yesterdayShiftStartHour","todayCurrentHour","differenceInHours","DAY_HOURS","OVERNIGHT_MARGIN","getLastYesterdayEntry","lastEntry","yesterday","isToday","toUTCString","Array","getBreakDuration","isOvernight","getIsOvernight","onGoingBreak","duration","numberOfMinutes","entryDate","isPreviousDay","isPreviousMonth","isPreviousYear","updateBody","isBreakNeeded","entryToUpdate","updateBodyFiltered","updateAttendanceEntry","promises","map","Promise","all","UserAttendanceService","autoDeductBreak","LocationsService","httpClient","authService","initAvailableLocations","isAlreadyInit","isArray","availableLocations$","value","getAvailableLocations","locations","locationsError$","MatIconModule","MatLegacySnackBarModule","MatSnackBarModule","MaterialModule","matIconRegistry","setDefaultFontSetClass","KioskSetupService","initValuesFromPersistence","persistence","savedLocationId","savedWelcomeMessage","savedPinCodeActive","savedQrCodeActive","selectedLocationId$","welcomeMessage$","pinCodeActive$","qrCodeActive$","saveMethodsInitialState","fetchOrgAvailableMethods","resolve","orgAvailableMethods$","setSelectedLocationId","setWelcomeMessage","setName","name$","setPinCodeActive","setQrCodeActive","activateKiosk","methods","push","selectedThemeColor$","hasJustActivatedKiosk","getEntryMethods","MAT_LEGACY_DIALOG_DATA","MAT_DIALOG_DATA","AutoDeductDialogComponent","durationPipe","translateWithDataPipe","kickOutService","cancelButtonText","confirmButtonColor","confirmButtonId","cancelButtonId","componentId","confirmDisabled","cancelDisabled","disableClose","break","ngOnInit","translations","autoDeductDialog","titleText","title","subtitleText","subtitle","confirmButtonText","confirm","checkIsPastAutoDeduct","initTranslations","closeDialog","close","confirmDialog","deleteProtection","formatReminder","reminder","triggeredAfter","suggestedBreak","message1","message2","reminders","breakReminder","tooltipReminders","iReminder","mainBreakData","mainMessage1","mainMessage2","bullets","text","tooltipText","tooltip","join","isPast","index","isPastAutoDeduct","ctx","BackArrowButtonComponent","goBack","EventEmitter","CodeInputComponent","currentCode","_currentCode","initControlVariables","initInputsList","ngAfterViewInit","ngOnDestroy","inputsListSubscription$","unsubscribe","numbers","codeLength","digitsValues","fill","digitsFilled","splice","inputsList","inputs","inputElements","iElement","input","nativeElement","forEach","focus","onInput","i","inputDigit","target","validInput","preventDefault","stopPropagation","values","trim","j","setInputValue","emitCode","blur","isInputFilled","inputValue","getCurrentFilledCode","codeChanged","emit","test","code","iInput","onKeydown","isValueEmpty","prev","isBackspaceKey","isDeleteKey","toLowerCase","keyCode","onMousedown","stopImmediatePropagation","targetInput","firstInput","firstEmptyInputIndex","findFirstEmptyInputIndex","findIndex","onPaste","clipboardData","getData","valIndex","val","focusFirstInput","Math","min","viewQuery","ColumnContainerComponent","centerColumns","alignItemsStyle","wrap","flexWrapStyle","hostVars","hostBindings","ColumnDirective","ColumnComponent","size","orgosColumn","renderer","el","setStyle","ConfirmationDialogComponent","ngZone","run","DatetimeComponent","dateInterval","setInterval","clearInterval","DialogContainerComponent","disabledCloseButton","customDivStyle","outputs","clickCloseButton","ngContentSelectors","EmptyLocationComponent","FooterBarComponent","progressService","currentProgress$","HeaderBarComponent","kioskSessionService","HoldButtonComponent","holdHandler","numOfMS","progress","totalTime","onHoldSuccess","buttonId","flexWidth","buttonStatus","disabled","IconComponent","iconHeight","iconWidth","iconFontSize","LanguagePickerComponent","translationService","currentLanguage$","currentTranslations$","LoadingSpinnerComponent","color","PrimaryButtonComponent","emitClick","loading","onClick","NavigationEnd","ProgressBarComponent","router","getProgress","navigationSubscription","events","subscribe","event","initialized","updateProgress","url","setStep","step","RaisedButtonComponent","_disabled","disabledClass","RefreshButtonComponent","locationService","refresh","SecondaryButtonComponent","SidebarComponent","documentElement","document","ElementRef","SuccessScreenContainerComponent","show","_show","setOriginOffset","originElement","getElementById","originElementId","containerElementRef","style","top","offsetTop","left","offsetLeft","TransactionalDialogComponent","timeOffData","UserAvatarComponent","nameInitials","calculateInitials","displayName","avatarName","words","charAt","toUpperCase","photoUrl","ClickOutsideDirective","clickedElement","clickedInside","elementRef","contains","clickOutside","Subject","interval","takeUntil","tap","HoldableDirective","cancel","state","pipe","v","holdTime","onExit","onHold","n","handleError","chunkFailedMessage","message","caches","keys","cacheKeys","delete","console","check","MAX_SHIFT_LENGTH","shiftsAndBreaks","calculateShiftAndBreakDuration","nonEmptyArray","autoDeductBreaks","shiftDuration","totalBreakTime","calculateTotalBreakDuration","shiftDurationWithoutBreaks","checkNotAssignedBreak","not","assigned","fieldsUsed","Object","iField","startsWith","calculateAutoDeductedBreaksDuration","clonedUserAttendance","autoDeducted","ErrorIllustrationComponent","LoggedOutComponentIllustration","MountainIllustrationComponent","SuccessIllustrationComponent","CompactDurationPipe","showPlus","isNaN","getHoursAndMinutes","translateHours","translateMinutes","translateHoursAndMinutes","floor","addPlus","pure","DurationPipe","calculateOvernightEntryDuration","HourPipe","hoursString","minutesString","nOfMinutes","TranslateWithDataPipe","translationKey","translation","finalValue","iTerm","substitutionValue","assign","slice","iKey","args","kioskSetUpService","signInKiosk","rawEmail","email","postWithoutAuth","adminInfo","setLanguage","language","sendCodeAgain","bodyData","signIn2FA","hashValue","postWithCredentials","sessionNames","JSON","stringify","isAuthenticated","accessToken","refreshToken","initialize","signInStorage","userInfo","getWithCredentials","accessTokenInLocalStorage","cookieExistedButWasDeleted","getIsAuthenticated","success","sessionHasBeenKilled","goToLoggedOut","clearAllData","redirectToLogIn","getAdminEmail","getSessionHasBeenKilled","wasKilled","Sentry","snackBar","production","config","dsn","SENTRY_DSN","release","SLUG_COMMIT_AWS","APP_NAME_AWS","integrations","dedupeIntegration","extraErrorDataIntegration","depth","init","withScope","scope","setTag","errorMessage","snackBarRef","open","panelClass","displayErrorCustom","closeSymbol","setExtra","statusText","ok","captureException","ENABLE_ERRORS_BY_CONSOLE","log","sentryMessage","lastEventId","GuardLoadingService","startGuardLoading","endGuardLoading","HttpHeaders","delay","res","headers","set","toPromise","withCredentials","authToken","localeDe","localeDeAT","localeEnUS","localeEnGB","localeEs","localeEsMX","localeNl","localeIt","localeFr","registerLocaleData","InternationalizationService","setUserLocale","userLocale","localeToUse","navigate","prevRoute","getPreviousRoute","navigateByUrl","navigateToLastVisitedRoute","lastVisitedRoute","getLastVisitedRoute","goToMessage","goToTheme","goToMethods","gotToActivated","activeMethods","goToQRCode","persistenceKeys","localStorage","removeItem","clear","ProgressService","RouteProgressHandler","routeProgressHandler","getRouteProgress","currentProgress","getRouteByProgress","lastVisitedCookie","routeProgress","routesProgress","routeName","iRouteProgress","background","font","buttonBackground","buttonTextColor","storedThemeColor","setProperty","colorMap","computeColor","en","es","de","fr","nl","it","TranslationService","internationalizationService","languagesMap","initLocale","initLanguage","getBrowserLanguage","persistedLanguage","lang","country","navigator","skipPersistence","amplitude","UserEventLoggerService","AMPLITUDE_API_KEY","eventKey","ignoreAccount","API_KEY","client","userProperties","loggedUser","customerStatus","organization","setGroup","brandName","setUserProperties","eventInfo","amplitudeEventKeys","eventProperties","platform","eventName","createAmplitudeClient","isFreeTrialAccount","shouldIgnoreAccount","getInstance","apiEndpoint","getAmplitudeProxyUrl","forceHttps","getAmplitudeProxyUrlProtocol","Authorization","AMPLITUDE_IGNORE_DOMAINS","domains","accountFound","iDomain","endsWith","replace","URL","protocol","VALID_2FA","subcategory1","REFRESH_LOCATIONS","DEFINE_MESSAGE","SKIP_MESSAGE","SWITCH_TO_QR","SWITCH_TO_PIN","INVALID_PIN","CHECK_IN_PIN","subcategory3","KIOSK_BREAK","BREAK_REMINDER_TRIGGERED","subcategory2","BREAK_REMINDER_SKIPPED","BREAK_REMINDER_SAVED","MAX_DAILY_HOURS","CommonModule","MatLegacySelectModule","MatSelectModule","FormsModule","HttpClientModule","MatRippleModule","MatLegacyDialogModule","MatDialogModule","MatLegacyProgressSpinnerModule","MatProgressSpinnerModule","OverlayModule","withConfig","callSetDisabledState","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","catch","err","module","require"],"sourceRoot":"webpack:///","x_google_ignoreList":[]}