{"version":3,"file":"main.js","mappings":"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","sources":["./src/app/app.component.ts","./src/app/app.module.ts","./src/app/app.routing.ts","./src/app/components/dialogs/barcode-dialog/barcode-dialog.component.ts","./src/app/components/dialogs/login-dialog/login-dialog.component.ts","./src/app/components/dialogs/qrcode-dialog/qrcode-dialog.component.ts","./src/app/components/dialogs/userEdit-dialog/userEdit-dialog.component.ts","./src/app/components/landingPage/landing-page.component.ts","./src/app/components/misc/cookie-consent/cookie-consent.component.ts","./src/app/components/misc/privacy-settings/privacy-settings.component.ts","./src/app/components/misc/view-base/view-base.component.ts","./src/app/components/nav-menu/nav-menu.component.ts","./src/app/components/user/booking-list/booking-list.component.ts","./src/app/components/user/login/login.component.ts","./src/app/components/user/profile/profile.component.ts","./src/app/components/user/recover-finish/recover-finish.component.ts","./src/app/components/user/recover-start/recover-start.component.ts","./src/app/components/user/registration/registration.component.ts","./src/app/components/user/verification/verification.component.ts","./src/app/components/vorstellung/block-info/block-info.component.ts","./src/app/components/vorstellung/booking-details/booking-details.component.ts","./src/app/components/vorstellung/screening-info/screening-info.component.ts","./src/app/components/vorstellung/seating-plan/seating-plan.component.ts","./src/app/components/vorstellung/standing-info/standing-info.component.ts","./src/app/helpers/DateFormatPipe.ts","./src/app/helpers/OwnMath.ts","./src/app/helpers/SafePipe.ts","./src/app/helpers/TimeFormatPipe.ts","./src/app/helpers/auth.admin.guard.ts","./src/app/helpers/auth.guard.ts","./src/app/helpers/error.interceptor.ts","./src/app/helpers/httpTranslationLoader.ts","./src/app/helpers/jwt.interceptor.ts","./src/app/helpers/passwords-equal.directive.ts","./src/app/helpers/screeningSerializer.ts","./src/app/helpers/staticPages.guard.ts","./src/app/models/customHtmlContent.ts","./src/app/models/enums/componentStatus.ts","./src/app/models/enums/reservierungsstatus.ts","./src/app/models/enums/saalArt.ts","./src/app/models/enums/sitzTyp.ts","./src/app/models/enums/userRegistrationResult.ts","./src/app/models/enums/userRight.ts","./src/app/models/enums/userUpdateResult.ts","./src/app/models/globals.ts","./src/app/models/reservierung.ts","./src/app/models/sitz.ts","./src/app/models/user.ts","./src/app/models/vorstellung.ts","./src/app/pipes.module.ts","./src/app/services/admin.service.ts","./src/app/services/authentication.service.ts","./src/app/services/booking.service.ts","./src/app/services/customContent.service.ts","./src/app/services/dialog-service.service.ts","./src/app/services/eps.service.ts","./src/app/services/movie.service.ts","./src/app/services/newsletter.service.ts","./src/app/services/pricing.service.ts","./src/app/services/recovery.service.ts","./src/app/services/scan.service.ts","./src/app/services/screening.service.ts","./src/app/services/socialMediaLandingPage.service.ts","./src/app/services/startup.service.ts","./src/app/services/statisticsService.ts","./src/app/services/storage.service.ts","./src/app/services/stripe.service.ts","./src/app/services/taxSetService.ts","./src/app/services/user.service.ts","./src/environments/environment.ts","./src/main.ts"],"sourcesContent":["import { UserService } from './services/user.service';\r\nimport { DataService } from './services/storage.service';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Cookie } from '@ngx-toolkit/cookie';\r\nimport { Globals } from './models/globals';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { StartupService } from './services/startup.service';\r\nimport { Meta } from '@angular/platform-browser';\r\nimport { NavigationStart, Router } from '@angular/router';\r\n\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent implements OnInit {\r\n title = 'app';\r\n\r\n @Cookie('cookieConsent')\r\n public cookieConsent: string;\r\n\r\n // property to override cookie constent for bots/spiders/crawlers\r\n private _overrideConsent = false;\r\n\r\n constructor(private router: Router, private meta: Meta, private titleService: Title, private globals: Globals, private storageService: DataService, private userService: UserService\r\n , private startupService: StartupService) {\r\n \r\n // add default tags\r\n meta.addTags([\r\n { name: 'description', content: this.startupService.getConfig().client + ' - Online-Reservierung' },\r\n { name: 'author', content: this.startupService.getConfig().client },\r\n { name: 'keywords', content: this.startupService.getConfig().client + ', Online-Reservierung' },\r\n { name: 'og:title', content: this.startupService.getConfig().client + ' - Online-Reservierung' },\r\n { name: 'og:type', content: 'website' }\r\n ]);\r\n\r\n // set title\r\n this.titleService.setTitle(this.startupService.getConfig().client + ' - Online-Reservierung');\r\n\r\n // register to route changes\r\n this.router.events.subscribe(event =>{\r\n if (event instanceof NavigationStart){\r\n console.log(event.url)\r\n this.setDefaultMetaTags();\r\n }\r\n })\r\n\r\n // perform re-login\r\n if (this.storageService.hasToken()) {\r\n this.globals.setAutoLoginInProgress(true);\r\n // try to get user\r\n this.userService.getOwnUser()\r\n .subscribe(user => {\r\n this.globals.setUser(user);\r\n this.globals.setAutoLoginInProgress(false);\r\n }, error => {\r\n console.log(error);\r\n this.storageService.removeToken();\r\n this.globals.setAutoLoginInProgress(false);\r\n });\r\n }\r\n }\r\n\r\n private setDefaultMetaTags() {\r\n // set default tags\r\n this.meta.updateTag({ name: 'description', content: this.startupService.getConfig().client + ' - Online-Reservierung' });\r\n this.meta.updateTag({ name: 'author', content: this.startupService.getConfig().client });\r\n this.meta.updateTag({ name: 'keywords', content: this.startupService.getConfig().client + ', Online-Reservierung' });\r\n this.meta.updateTag({ name: 'og:title', content: this.startupService.getConfig().client + ' - Online-Reservierung' });\r\n this.meta.updateTag({ name: 'og:type', content: 'website' });\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.hasConsent) {\r\n this.appendGaTrackingCode();\r\n }\r\n\r\n // check user agent and set consent of user agent is a bot/spider\r\n const userAgent = navigator.userAgent;\r\n if (userAgent.indexOf('bot') !== -1 || userAgent.indexOf('spider') !== -1 || userAgent.indexOf('crawler') !== -1) {\r\n this._overrideConsent = true;\r\n }\r\n }\r\n\r\n public get hasConsent(): boolean {\r\n if (this._overrideConsent) {\r\n return true;\r\n }\r\n\r\n const res = this.cookieConsent != null && this.cookieConsent !== '';\r\n return res;\r\n }\r\n\r\n get isStaticPagesActive(): boolean {\r\n return this.startupService.getConfig().staticPagesActive;\r\n }\r\n\r\n get hasConsentMarketingStatistics(): boolean {\r\n return this.cookieConsent != null && this.cookieConsent !== '' && this.cookieConsent.endsWith('true');\r\n }\r\n\r\n get imprintUrl(): string {\r\n return this.startupService.getConfig().clientImprint;\r\n }\r\n\r\n get showSocialFacebook(): boolean {\r\n return this.startupService.getConfig().social.facebookUrl.length > 0;\r\n }\r\n\r\n get showSocialInstagram(): boolean {\r\n return this.startupService.getConfig().social.instagramUrl.length > 0;\r\n }\r\n\r\n get showSocialTwitter(): boolean {\r\n return this.startupService.getConfig().social.twitterUrl.length > 0;\r\n }\r\n\r\n get socialFacebookUrl(): string {\r\n return this.startupService.getConfig().social.facebookUrl;\r\n }\r\n\r\n get socialInstagramUrl(): string {\r\n return this.startupService.getConfig().social.instagramUrl;\r\n }\r\n\r\n get socialTwitterUrl(): string {\r\n return this.startupService.getConfig().social.twitterUrl;\r\n }\r\n\r\n get showSamsungWarning(): boolean {\r\n if(navigator.userAgent.match(/SAMSUNG|Samsung|SGH-[I|N|T]|GT-[I|N]|SM-[A|N|P|T|Z]|SHV-E|SCH-[I|J|R|S]|SPH-L/i)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private appendGaTrackingCode(): void {\r\n // try {\r\n // const script = document.createElement('script');\r\n // script.innerHTML = `\r\n // (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\r\n // (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\r\n // m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\r\n // })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');\r\n\r\n // ga('create', 'UA-20058861-1', 'auto');\r\n // `;\r\n // document.head.appendChild(script);\r\n // } catch (ex) {\r\n // console.error('Error appending google analytics');\r\n // console.error(ex);\r\n // }\r\n }\r\n}\r\n","import { AdminService } from './services/admin.service';\nimport { ScreeningService } from './services/screening.service';\nimport { Globals } from './models/globals';\nimport { DialogService } from './services/dialog-service.service';\nimport { AuthenticationService } from './services/authentication.service';\nimport { AuthGuard } from './helpers/auth.guard';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgModule, APP_INITIALIZER, LOCALE_ID } from '@angular/core';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { CookieModule } from '@ngx-toolkit/cookie';\nimport { L10nLoader, L10nTranslationModule, L10nIntlModule, L10nRoutingModule } from 'angular-l10n';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { Location, LocationStrategy, PathLocationStrategy } from '@angular/common';\nimport { JwtModule } from '@auth0/angular-jwt';\nimport { ArchwizardModule } from 'angular-archwizard';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n\nimport { AppComponent } from './app.component';\nimport { NavMenuComponent } from './components/nav-menu/nav-menu.component';\nimport { LoginComponent } from './components/user/login/login.component';\nimport { RegistrationComponent } from './components/user/registration/registration.component';\nimport { ProfileComponent } from './components/user/profile/profile.component';\n\nimport { JwtInterceptor } from './helpers/jwt.interceptor';\nimport { ErrorInterceptor } from './helpers/error.interceptor';\nimport { routing } from './app.routing';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { UserService } from './services/user.service';\nimport { VerificationComponent } from './components/user/verification/verification.component';\nimport { LoginDialogComponent } from './components/dialogs/login-dialog/login-dialog.component';\nimport { StartupService } from './services/startup.service';\nimport { DataService } from './services/storage.service';\nimport { ScreeningInfoComponent } from './components/vorstellung/screening-info/screening-info.component';\nimport { PricingService } from './services/pricing.service';\nimport { MovieService } from './services/movie.service';\nimport { UserEditDialogComponent } from './components/dialogs/userEdit-dialog/userEdit-dialog.component';\nimport { BookingDetailsComponent } from './components/vorstellung/booking-details/booking-details.component';\nimport { BookingService } from './services/booking.service';\nimport { SeatingPlanComponent } from './components/vorstellung/seating-plan/seating-plan.component';\nimport { StandingInfoComponent } from './components/vorstellung/standing-info/standing-info.component';\nimport { BookingListComponent } from './components/user/booking-list/booking-list.component';\nimport { ViewBaseComponent } from './components/misc/view-base/view-base.component';\nimport { RecoverStartComponent } from './components/user/recover-start/recover-start.component';\nimport { RecoverFinishComponent } from './components/user/recover-finish/recover-finish.component';\nimport { BlockInfoComponent } from './components/vorstellung/block-info/block-info.component';\nimport { BarcodeDialogComponent } from './components/dialogs/barcode-dialog/barcode-dialog.component';\nimport { QRCodeDialogComponent } from './components/dialogs/qrcode-dialog/qrcode-dialog.component';\nimport { TimeFormatPipe } from './helpers/TimeFormatPipe';\nimport { DateFormatPipe } from './helpers/DateFormatPipe';\nimport { AuthAdminGuard } from './helpers/auth.admin.guard';\n\nimport { registerLocaleData } from '@angular/common';\nimport localeDe from '@angular/common/locales/de';\nimport { StaticPagesGuard } from './helpers/staticPages.guard';\nimport { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor';\nimport { NewsletterService } from './services/newsletter.service';\nimport { PipesModule } from './pipes.module';\nimport { CookieConsentComponent } from './components/misc/cookie-consent/cookie-consent.component';\nimport { PrivacySettingsComponent } from './components/misc/privacy-settings/privacy-settings.component';\nimport { CustomContentService } from './services/customContent.service';\nimport { EPSService } from './services/eps.service';\n// import { JSErrorHandler } from './helpers/jsErrorHandler';\nimport { KonvaModule } from 'ng2-konva';\nimport { l10nConfig, HttpTranslationLoader } from './helpers/httpTranslationLoader';\nimport { RecoveryService } from './services/recovery.service';\nimport { TaxSetService } from './services/taxSetService';\nimport { StripeService } from './services/stripe.service';\nimport { StatisticsService } from './services/statisticsService';\nimport { ScanService } from './services/scan.service';\nimport { SocialMediaLandingPageService } from './services/socialMediaLandingPage.service';\nimport { LandingPageComponent } from './components/landingPage/landing-page.component';\n\nregisterLocaleData(localeDe); // de-DE\n\nexport function startupServiceFactory(startupService: StartupService): Function {\n return () => startupService.load();\n}\n\nexport function tokenGetter() {\n const token = localStorage.getItem('token');\n return token;\n}\n\nexport function initL10n(l10nLoader: L10nLoader): Function {\n return () => l10nLoader.init();\n}\n\n@NgModule({\n declarations: [\n DateFormatPipe,\n TimeFormatPipe,\n AppComponent,\n NavMenuComponent,\n LoginComponent,\n RegistrationComponent,\n ProfileComponent,\n VerificationComponent,\n LoginDialogComponent,\n UserEditDialogComponent,\n BarcodeDialogComponent,\n QRCodeDialogComponent,\n ScreeningInfoComponent,\n BookingDetailsComponent,\n SeatingPlanComponent,\n StandingInfoComponent,\n BookingListComponent,\n ViewBaseComponent,\n RecoverStartComponent,\n RecoverFinishComponent,\n BlockInfoComponent,\n CookieConsentComponent,\n PrivacySettingsComponent,\n LandingPageComponent\n ],\n imports: [\n BrowserModule.withServerTransition({ appId: 'ng-cli-universal' }),\n ArchwizardModule,\n DragDropModule,\n HttpClientModule,\n ReactiveFormsModule,\n FormsModule,\n L10nTranslationModule.forRoot(l10nConfig, { translationLoader: HttpTranslationLoader }),\n L10nIntlModule,\n // L10nValidationModule.forRoot({ validation: LocaleValidation }),\n L10nRoutingModule.forRoot(),\n CookieModule.forRoot(),\n routing,\n NgbModule,\n KonvaModule,\n JwtModule.forRoot({\n config: {\n tokenGetter: tokenGetter\n }\n }),\n MonacoEditorModule,\n PipesModule.forRoot(),\n BrowserAnimationsModule\n ],\n providers: [\n {\n provide: APP_INITIALIZER,\n useFactory: startupServiceFactory,\n deps: [StartupService],\n multi: true\n },\n {\n provide: APP_INITIALIZER,\n useFactory: initL10n,\n deps: [L10nLoader],\n multi: true\n },\n { provide: LOCALE_ID, useValue: 'de-DE' },\n Location, { provide: LocationStrategy, useClass: PathLocationStrategy },\n Globals,\n AuthGuard,\n AuthAdminGuard,\n StaticPagesGuard,\n // // // START // Inject own services // START // // //\n AuthenticationService,\n DialogService,\n UserService,\n StartupService,\n DataService,\n ScreeningService,\n PricingService,\n MovieService,\n BookingService,\n AdminService,\n NewsletterService,\n CustomContentService,\n EPSService,\n TimeFormatPipe,\n DateFormatPipe,\n RecoveryService,\n TaxSetService,\n StripeService,\n StatisticsService,\n ScanService,\n SocialMediaLandingPageService,\n // // // END // Inject own services // END // // //\n { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true }\n // {provide: ErrorHandler, useClass: JSErrorHandler}\n ],\n bootstrap: [AppComponent]\n})\n\nexport class AppModule {\n constructor(public l10nLoader: L10nLoader) {\n this.l10nLoader.init();\n }\n }\n","import { RegistrationComponent } from './components/user/registration/registration.component';\nimport { LoginComponent } from './components/user/login/login.component';\nimport { ProfileComponent } from './components/user/profile/profile.component';\nimport { VerificationComponent } from './components/user/verification/verification.component';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { AuthGuard } from './helpers/auth.guard';\nimport { ScreeningInfoComponent } from './components/vorstellung/screening-info/screening-info.component';\nimport { BookingDetailsComponent } from './components/vorstellung/booking-details/booking-details.component';\nimport { BookingListComponent } from './components/user/booking-list/booking-list.component';\nimport { RecoverStartComponent } from './components/user/recover-start/recover-start.component';\nimport { BlockInfoComponent } from './components/vorstellung/block-info/block-info.component';\nimport { AuthAdminGuard } from './helpers/auth.admin.guard';\nimport { StaticPagesGuard } from './helpers/staticPages.guard';\nimport { PrivacySettingsComponent } from './components/misc/privacy-settings/privacy-settings.component';\nimport { RecoverFinishComponent } from './components/user/recover-finish/recover-finish.component';\nimport { LandingPageComponent } from './components/landingPage/landing-page.component';\n\nconst appRoutes: Routes = [\n { path: '', redirectTo: '/program/filter', pathMatch: 'full' },\n { path: 'profile', component: ProfileComponent, canActivate: [AuthGuard] },\n { path: 'login', component: LoginComponent },\n { path: 'register', component: RegistrationComponent },\n { path: 'verify/:id', component: VerificationComponent },\n { path: 'recovery', component: RecoverStartComponent },\n { path: 'recovery/:recoveryId/:userId', component: RecoverFinishComponent },\n { path: 'privacy', component: PrivacySettingsComponent },\n\n // admin module\n { path: 'admin', loadChildren: () => import('./admin/admin.module').then(m => m.AdminModule), canActivate: [AuthAdminGuard]},\n\n { path: 'screening/:id', component: ScreeningInfoComponent},\n { path: 'block/:id', component: BlockInfoComponent},\n { path: 'booking/:id', component: BookingDetailsComponent, canActivate: [AuthGuard]},\n { path: 'bookings', component: BookingListComponent, canActivate: [AuthGuard]},\n\n // social media landing pages\n { path: 'info/:slug', component: LandingPageComponent },\n\n // static pages\n { path: 'page', loadChildren: () => import('./kino-page/kino-page.module').then(m => m.KinoPageModule), canActivate: [StaticPagesGuard] },\n\n // program module\n { path: 'program', loadChildren: () => import('./program/program.module').then(m => m.ProgramModule) },\n\n // eps module\n { path: 'eps', loadChildren: () => import('./eps/eps.module').then(m => m.EpsModule) },\n\n // stripe module\n { path: 'stripe', loadChildren: () => import('./stripe/stripe.module').then(m => m.StripeModule) },\n\n // otherwise redirect to home\n { path: '**', redirectTo: '' }\n];\n\nexport const routing = RouterModule.forRoot(appRoutes);\n","import { Component, OnInit, Input, Inject } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ViewBaseComponent } from '../../misc/view-base/view-base.component';\nimport { ComponentStatus } from '../../../models/enums/componentStatus';\nimport { Reservierung } from '../../../models/reservierung';\nimport { StartupService } from '../../../services/startup.service';\nimport { Meta, Title } from '@angular/platform-browser';\n\n@Component({\n selector: 'app-barcode-dialog',\n templateUrl: './barcode-dialog.component.html'\n})\nexport class BarcodeDialogComponent extends ViewBaseComponent implements OnInit {\n @Input()\n booking: Reservierung;\n\n private baseUrl: string;\n\n constructor(@Inject('BASE_URL') baseUrl: string, public activeModal: NgbActiveModal, startupService: StartupService, titleService: Title, meta: Meta) {\n super(titleService, startupService, meta);\n this.baseUrl = baseUrl;\n }\n\n ngOnInit() {\n this.viewState = ComponentStatus.Displaying;\n }\n\n getBarcodeUrl(): string {\n if (this.booking != null) {\n return this.baseUrl + 'api/Booking/Barcode/' + this.booking.id;\n }\n }\n}\n","import { AuthenticationService } from './../../../services/authentication.service';\nimport { Component, OnInit, Input, Output } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';\nimport { User } from '../../../models/user';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ViewBaseComponent } from '../../misc/view-base/view-base.component';\nimport { ComponentStatus } from '../../../models/enums/componentStatus';\nimport { L10nTranslationService } from 'angular-l10n';\nimport { Router } from '@angular/router';\nimport { StartupService } from '../../../services/startup.service';\nimport { Meta, Title } from '@angular/platform-browser';\n\n@Component({\n selector: 'app-login-dialog',\n templateUrl: './login-dialog.component.html'\n})\nexport class LoginDialogComponent extends ViewBaseComponent implements OnInit {\n @Input()\n authService: AuthenticationService;\n @Output()\n user: User;\n\n loginForm = new UntypedFormGroup({\n emailAddress: new UntypedFormControl('', [\n Validators.required,\n Validators.email,\n Validators.maxLength(50)\n ]),\n password: new UntypedFormControl('', [\n Validators.required,\n Validators.maxLength(50)\n ])\n });\n\n constructor(public activeModal: NgbActiveModal, private translation: L10nTranslationService, private router: Router, startupService: StartupService, titleService: Title, meta: Meta) {\n super(titleService, startupService, meta);\n }\n\n ngOnInit() {\n this.viewState = ComponentStatus.Displaying;\n\n this.loginForm.get('emailAddress').valueChanges.subscribe(val => {\n let mail = val;\n if (!mail != null && (mail.endsWith(' ') || mail.startsWith(' '))) {\n mail = mail.trim();\n this.loginForm.get('emailAddress').setValue(mail);\n }\n });\n }\n\n onSubmit(): void {\n if (!this.loginForm.valid) {\n return;\n }\n\n this.viewState = ComponentStatus.Processing;\n this.authService\n .login(\n this.loginForm.controls['emailAddress'].value,\n this.loginForm.controls['password'].value\n )\n .subscribe(user => {\n if (user != null) {\n this.user = user;\n this.activeModal.close('done');\n } else {\n this.errorText = this.translation.translate('Login_AuthError');\n }\n });\n }\n\n close(): void {\n this.activeModal.close('closed');\n }\n}\n","import { Component, OnInit, Input, Inject } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ViewBaseComponent } from '../../misc/view-base/view-base.component';\nimport { ComponentStatus } from '../../../models/enums/componentStatus';\nimport { Reservierung } from '../../../models/reservierung';\nimport { StartupService } from '../../../services/startup.service';\nimport { Meta, Title } from '@angular/platform-browser';\n\n@Component({\n selector: 'app-qrcode-dialog',\n templateUrl: './qrcode-dialog.component.html'\n})\nexport class QRCodeDialogComponent extends ViewBaseComponent implements OnInit {\n @Input()\n booking: Reservierung;\n\n private baseUrl: string;\n\n constructor(@Inject('BASE_URL') baseUrl: string, public activeModal: NgbActiveModal, startupService: StartupService, titleService: Title, meta: Meta) {\n super(titleService, startupService, meta);\n this.baseUrl = baseUrl;\n }\n\n ngOnInit() {\n this.viewState = ComponentStatus.Displaying;\n }\n\n getQRCodeUrl(): string {\n if (this.booking != null) {\n return this.baseUrl + 'api/Booking/QRCode/' + this.booking.id;\n }\n }\n}\n","import { Component, OnInit, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';\nimport { User } from './../../../models/user';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { UserService } from './../../../services/user.service';\nimport { passwordsEqualValidatorIfRequired } from './../../../helpers/passwords-equal.directive';\nimport { UserUpdateResult } from './../../../models/enums/userUpdateResult';\n\n@Component({\n selector: 'app-user-edit-dialog',\n templateUrl: './userEdit-dialog.component.html'\n})\nexport class UserEditDialogComponent implements OnInit, OnChanges {\n @Input()\n userService: UserService;\n @Input()\n user: User;\n\n isLoading = false;\n isLoginError = false;\n isPasswordChange = false;\n\n profileForm = new UntypedFormGroup({\n emailAddress: new UntypedFormControl({value: '', disabled: true}),\n firstName: new UntypedFormControl('', [Validators.required, Validators.maxLength(50)]),\n lastName: new UntypedFormControl('', [Validators.required, Validators.maxLength(50)]),\n phoneNumber: new UntypedFormControl('', [Validators.required, Validators.maxLength(50)]),\n password: new UntypedFormGroup({\n changePassword: new UntypedFormControl(false),\n password1: new UntypedFormControl(''),\n password2: new UntypedFormControl('')\n }, passwordsEqualValidatorIfRequired()),\n acceptConditions: new UntypedFormControl([false, Validators.requiredTrue])\n });\n\n constructor(public activeModal: NgbActiveModal) {}\n\n ngOnInit() {\n this.loadUserData();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n console.log(changes);\n this.loadUserData();\n }\n\n private loadUserData(): void {\n if (this.user != null) {\n this.profileForm.get('emailAddress').setValue(this.user.eMailAddress);\n this.profileForm.get('firstName').setValue(this.user.firstName);\n this.profileForm.get('lastName').setValue(this.user.lastName);\n this.profileForm.get('phoneNumber').setValue(this.user.phoneNumber);\n }\n }\n\n onChange(): void {\n const changePassword = this.profileForm.get('password').get('changePassword').value;\n if (changePassword) {\n this.profileForm.get('password').get('password1').setValidators([Validators.minLength(5), Validators.maxLength(30)]);\n this.profileForm.get('password').get('password2').setValidators([Validators.minLength(5), Validators.maxLength(30)]);\n } else {\n this.profileForm.get('password').get('password1').setValidators([]);\n this.profileForm.get('password').get('password2').setValidators([]);\n }\n\n this.isPasswordChange = changePassword;\n }\n\n onSubmit(): void {\n this.isLoading = true;\n const user = new User();\n user.id = this.user.id;\n user.eMailAddress = this.profileForm.get('emailAddress').value;\n user.firstName = this.profileForm.get('firstName').value;\n user.lastName = this.profileForm.get('lastName').value;\n user.phoneNumber = this.profileForm.get('phoneNumber').value;\n\n if (this.isPasswordChange) {\n user.password = this.profileForm.get('password').get('password1').value;\n }\n\n this.userService.update(user).subscribe(res => {\n if (res === UserUpdateResult.Success) {\n this.isLoading = false;\n this.activeModal.close(true);\n } else {\n this.isLoading = false;\n }\n });\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { ActivatedRoute } from '@angular/router';\nimport { SocialMediaLandingPage } from '../../models/socialMediaLandingPage';\nimport { SocialMediaLandingPageService } from '../../services/socialMediaLandingPage.service';\n\n@Component({\n selector: 'app-landing-page',\n templateUrl: './landing-page.component.html'\n})\nexport class LandingPageComponent implements OnInit {\n\n constructor(private landingPageService: SocialMediaLandingPageService,\n private route: ActivatedRoute,\n private titleService: Title) { }\n\n private _page: SocialMediaLandingPage;\n\n ngOnInit() {\n // load landing page by slug\n this.route.paramMap.subscribe(map => {\n const slug = map.get('slug');\n console.log('Slug: ' + slug);\n if (slug !== null) {\n this.landingPageService.getBySlug(slug).then(x => {\n this._page = x;\n this.titleService.setTitle(x.title);\n });\n }\n\n });\n }\n\n get page(): SocialMediaLandingPage { return this._page; }\n\n get customHtml(): string {\n return this.page ? this.page.content : '';\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Cookie } from '@ngx-toolkit/cookie';\nimport { StartupService } from '../../../services/startup.service';\nimport { Cookies } from '../../../models/config';\n\n@Component({\n selector: 'app-cookie-consent',\n templateUrl: './cookie-consent.component.html'\n})\nexport class CookieConsentComponent implements OnInit {\n\n @Cookie('cookieConsent')\n public cookieConsent: string;\n\n private _acceptMarketingAndStatistics = false;\n private _cookies: Cookies = null;\n\n constructor(private startupService: StartupService) { }\n\n ngOnInit() {\n this._cookies = this.startupService.getConfig().cookies;\n }\n\n public get cookies(): Cookies {\n return this._cookies;\n }\n\n public get hasRequired(): boolean {\n return this.cookies != null && this.cookies.required.length > 0;\n }\n\n public get hasMarketing(): boolean {\n return this.cookies != null && this.cookies.marketing.length > 0;\n }\n\n public get hasStatistics(): boolean {\n return this.cookies != null && this.cookies.statistics.length > 0;\n }\n\n public get acceptMarketingAndStatistics(): boolean {\n return this._acceptMarketingAndStatistics;\n }\n\n public set acceptMarketingAndStatistics(value: boolean) {\n this._acceptMarketingAndStatistics = value;\n }\n\n public marketingConsentChanged(event: any): void {\n this.acceptMarketingAndStatistics = event.currentTarget.checked;\n }\n\n public acceptCookies(): void {\n // prepare cookie text\n let value = 'true;';\n if (this.acceptMarketingAndStatistics) {\n value += 'true';\n } else {\n value += 'false';\n }\n\n this.cookieConsent = value;\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Cookie } from '@ngx-toolkit/cookie';\nimport { Cookies } from '../../../models/config';\nimport { StartupService } from '../../../services/startup.service';\n\n@Component({\n selector: 'app-privacy-settings',\n templateUrl: './privacy-settings.component.html'\n})\nexport class PrivacySettingsComponent implements OnInit {\n\n @Cookie('cookieConsent')\n public cookieConsent: string;\n private _cookies: Cookies = null;\n\n constructor(private startupService: StartupService) { }\n\n ngOnInit() {\n this._cookies = this.startupService.getConfig().cookies;\n }\n\n public get cookies(): Cookies {\n return this._cookies;\n }\n\n public get hasRequired(): boolean {\n return this.cookies != null && this.cookies.required.length > 0;\n }\n\n public get hasMarketing(): boolean {\n return this.cookies != null && this.cookies.marketing.length > 0;\n }\n\n public get hasStatistics(): boolean {\n return this.cookies != null && this.cookies.statistics.length > 0;\n }\n\n get acceptMarketingAndStatistics(): boolean {\n const accepted = this.cookieConsent != null && this.cookieConsent !== '' && this.cookieConsent.endsWith('true');\n return accepted;\n }\n\n set acceptMarketingAndStatistics(value: boolean) {\n this.cookieConsent = 'true;' + (value ? 'true' : 'false');\n }\n\n public marketingConsentChanged(event: any): void {\n this.acceptMarketingAndStatistics = event.currentTarget.checked;\n }\n\n}\n","import { Component } from '@angular/core';\nimport { ComponentStatus } from '../../../models/enums/componentStatus';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { StartupService } from '../../../services/startup.service';\n\n@Component({\n selector: 'app-view-base',\n templateUrl: './view-base.component.html'\n})\nexport class ViewBaseComponent {\n private _viewState: ComponentStatus = ComponentStatus.Unknown;\n private _messageText: string;\n\n constructor(protected titleService: Title, protected startupService: StartupService, protected meta: Meta) {\n this.titleService.setTitle(this.startupService.getConfig().client + ' - Online-Reservierung');\n\n // set default tags\n meta.updateTag({ name: 'description', content: this.startupService.getConfig().client + ' - Online-Reservierung' });\n meta.updateTag({ name: 'og:title', content: this.startupService.getConfig().client + ' - Online-Reservierung' });\n meta.removeTag(\"name='og:image'\");\n }\n\n protected updateTags(title: string, description: string, image: string) {\n this.meta.updateTag({name: 'og:title', content: title});\n this.meta.updateTag({name: 'description', content: description});\n this.meta.updateTag({name: 'og:image', content: image});\n }\n\n protected isStatus(state: ComponentStatus): boolean {\n return this._viewState === state;\n }\n\n get isWarning(): boolean {\n return this.isStatus(ComponentStatus.Warning);\n }\n\n get isError(): boolean {\n return this.isStatus(ComponentStatus.Error);\n }\n\n get isDisplaying(): boolean {\n return this.isStatus(ComponentStatus.Displaying);\n }\n\n get isLoading(): boolean {\n return this.isStatus(ComponentStatus.Loading);\n }\n\n get isProcessing(): boolean {\n return this.isStatus(ComponentStatus.Processing);\n }\n\n get errorText(): string {\n return this._messageText;\n }\n\n set errorText(errorText: string) {\n this.viewState = ComponentStatus.Error;\n this._messageText = errorText;\n }\n\n get warningText(): string {\n return this._messageText;\n }\n\n set warningText(warningText: string) {\n this.viewState = ComponentStatus.Warning;\n this._messageText = warningText;\n }\n\n get viewState(): ComponentStatus {\n return this._viewState;\n }\n\n set viewState(value: ComponentStatus) {\n this._viewState = value;\n this._messageText = '';\n }\n\n}\n","import { AdminService } from './../../services/admin.service';\r\nimport { Config } from './../../models/config';\r\nimport { Globals } from './../../models/globals';\r\nimport { UserRight } from './../../models/enums/userRight';\r\nimport { User } from './../../models/user';\r\nimport { AuthenticationService } from '../../services/authentication.service';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { DialogService } from '../../services/dialog-service.service';\r\nimport { UserService } from '../../services/user.service';\r\nimport { StartupService } from '../../services/startup.service';\r\n\r\n@Component({\r\n selector: 'app-nav-menu',\r\n templateUrl: './nav-menu.component.html'\r\n})\r\nexport class NavMenuComponent implements OnInit {\r\n isExpanded = false;\r\n isLoggedIn = false;\r\n isAdmin = false;\r\n isMitarbeiter = false;\r\n isCorrectTimeZone = true;\r\n config: Config;\r\n timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n\r\n constructor(\r\n private authService: AuthenticationService,\r\n private userService: UserService,\r\n private dialogService: DialogService,\r\n private globals: Globals,\r\n private startupService: StartupService,\r\n private adminService: AdminService\r\n ) {\r\n this.globals.userSource$.subscribe(user => { this.handleUserChange(user); });\r\n this.config = this.startupService.getConfig();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.userService.verifyTimeZone().subscribe(isCorrectTimeZone => {\r\n this.isCorrectTimeZone = isCorrectTimeZone;\r\n });\r\n }\r\n\r\n collapse(): void {\r\n this.isExpanded = false;\r\n }\r\n\r\n toggle(): void {\r\n this.isExpanded = !this.isExpanded;\r\n }\r\n\r\n login(): void {\r\n this.dialogService.showLoginDialog()\r\n .then();\r\n }\r\n\r\n logout(): void {\r\n this.globals.removeUser();\r\n this.authService.logout(true);\r\n }\r\n\r\n handleUserChange(user: User): void {\r\n this.isLoggedIn = this.globals.isLoggedIn();\r\n if (this.isLoggedIn) {\r\n this.isAdmin = this.userService.hasUserRight(user, UserRight.Admin);\r\n this.isMitarbeiter = this.userService.hasUserRight(user, UserRight.Mitarbeiter);\r\n\r\n this.userService.verifyTimeZone().subscribe(isCorrectTimeZone => {\r\n this.isCorrectTimeZone = isCorrectTimeZone;\r\n });\r\n } else {\r\n this.isAdmin = false;\r\n this.isMitarbeiter = false;\r\n }\r\n }\r\n\r\n getUserName(): string {\r\n if (this.isLoggedIn) {\r\n const user = this.globals.getUser();\r\n return user.firstName.charAt(0) + '. ' + user.lastName;\r\n }\r\n return '';\r\n }\r\n\r\n get isStaticPagesActive(): boolean {\r\n return this.startupService.getConfig().staticPagesActive;\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\nimport { BookingService } from '../../../services/booking.service';\nimport { ScreeningService } from '../../../services/screening.service';\nimport { Reservierung } from '../../../models/reservierung';\nimport { ComponentStatus } from '../../../models/enums/componentStatus';\nimport { Vorstellung } from '../../../models/vorstellung';\nimport { Film } from '../../../models/film';\nimport { MovieService } from '../../../services/movie.service';\nimport { Sitz } from '../../../models/sitz';\nimport { Reservierungsstatus } from '../../../models/enums/reservierungsstatus';\nimport { ViewBaseComponent } from '../../misc/view-base/view-base.component';\nimport { L10nTranslationService } from 'angular-l10n';\nimport { forkJoin } from 'rxjs';\nimport { DialogService } from '../../../services/dialog-service.service';\nimport {saveAs as importedSaveAs} from 'file-saver';\nimport { StartupService } from '../../../services/startup.service';\nimport { Router } from '@angular/router';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { SaalArt } from '../../../models/enums/saalArt';\n\n@Component({\n selector: 'app-booking-list',\n templateUrl: './booking-list.component.html'\n})\nexport class BookingListComponent extends ViewBaseComponent implements OnInit {\n bookings: Reservierung[];\n screenings: Vorstellung[];\n movies: Film[];\n\n constructor(\n private bookingService: BookingService,\n private screeningService: ScreeningService,\n private movieService: MovieService,\n private translation: L10nTranslationService,\n private dialogService: DialogService,\n private router: Router,\n startupService: StartupService,\n titleService: Title, meta: Meta) {\n super(titleService, startupService, meta);\n }\n\n ngOnInit() {\n this.viewState = ComponentStatus.Loading;\n this.loadData();\n }\n\n private loadData(): void {\n forkJoin([\n this.bookingService.getOwn(),\n this.screeningService.getScreeningsForOwnBookings(),\n this.movieService.getFilmsForFutureScreenings()\n ]).subscribe(results => {\n this.bookings = results[0];\n this.screenings = results[1];\n this.movies = results[2];\n\n if (this.bookings == null || this.movies == null || this.screenings == null) {\n this.errorText = this.translation.translate('BookingList_Error');\n } else {\n this.viewState = ComponentStatus.Displaying;\n }\n });\n }\n\n getSelectedRowName(booking: Reservierung): string {\n const seat = this.getSeat(booking.vorstellungsId, booking.sitzIds[0]);\n return '' + +seat.reihe;\n }\n\n getSelectedSeatsNames(booking: Reservierung): string {\n if (booking.sitzIds.length === 0) {\n return '';\n }\n\n const seatId = booking.sitzIds[0];\n let seat = this.getSeat(booking.vorstellungsId, seatId);\n let label = '' + seat.sitzplatzNummer;\n if (booking.sitzIds.length > 1) {\n seat = this.getSeat(booking.vorstellungsId, booking.sitzIds[booking.sitzIds.length - 1]);\n label += ' - ' + seat.sitzplatzNummer;\n }\n\n return label;\n }\n\n private getSeat(screeningId: string, seatId: string): Sitz {\n for (const seat of this.getScreening(screeningId).sitze) {\n if (seat.id === seatId) {\n return seat;\n }\n }\n\n return null;\n }\n\n getMovieTitle(booking: Reservierung): string {\n const screening = this.getScreening(booking.vorstellungsId);\n return this.getMovie(screening.filmId).filmTitel + ' ' + this.getMovie(screening.filmId).filmTitelZusatz;\n }\n\n private getMovie(movieId: string): Film {\n for (const movie of this.movies) {\n if (movie.filmId === movieId) {\n return movie;\n }\n }\n return null;\n }\n\n getScreening(screeningId: string): Vorstellung {\n for (const screening of this.screenings) {\n if (screening.vorstellungsId === screeningId) {\n return screening;\n }\n }\n return null;\n }\n\n getStatusKey(booking: Reservierung): string {\n if (booking.status === Reservierungsstatus.Reserviert || booking.status === Reservierungsstatus.InternetReserviert) {\n return 'Booking_Confirmed';\n } else if (this.isPaidBooking(booking)) {\n return 'Booking_Paid';\n }\n\n return 'Booking_Unknown';\n }\n\n isPaidBooking(booking: Reservierung): boolean {\n return booking.status === Reservierungsstatus.VerkauftKasse\n || booking.status === Reservierungsstatus.VerkauftInternet\n || booking.status === Reservierungsstatus.AusgedrucktInternet;\n }\n\n canBuyBooking(booking: Reservierung): boolean {\n const screening = this.getScreening(booking.vorstellungsId);\n return (screening != null && (screening.reservierungsEinstellung === 'Kauf' || screening.reservierungsEinstellung === 'KaufUndReservierung') && (this.startupService.getConfig().stripe.enabled || this.startupService.getConfig().eps.enabled));\n }\n\n deleteBooking(booking: Reservierung): void {\n this.viewState = ComponentStatus.Processing;\n this.bookingService.delete(booking.id).subscribe(res => {\n console.log(res);\n this.loadData();\n });\n }\n\n showBarcode(booking: Reservierung): void {\n this.dialogService.showBarcodeDialog(booking)\n .then();\n }\n\n buyTicket(booking: Reservierung): void {\n this.router.navigate(['/booking/' + booking.id]);\n }\n\n showQRCode(booking: Reservierung): void {\n this.dialogService.showQRCodeDialog(booking)\n .then();\n }\n\n downloadTicket(booking: Reservierung): void {\n this.bookingService.downloadTicket(booking.id)\n .subscribe(res => {\n importedSaveAs(res, booking.pdfName);\n });\n }\n\n downloadInvoice(booking: Reservierung): void {\n this.bookingService.downloadInvoice(booking.id)\n .subscribe(res => {\n importedSaveAs(res, 'Rechnung.pdf');\n });\n }\n\n get isTicketDownloadAllowed(): boolean {\n return this.startupService.getConfig().allowTicketDownload;\n }\n\n get isCancellationAllowed(): boolean {\n return this.startupService.getConfig().bookingCancellationAllowed;\n }\n\n get isInvoiceDownloadAllowed(): boolean {\n return this.startupService.getConfig().allowInvoiceDownload;\n }\n\n get isUsingBlockLogic(): boolean {\n return this.startupService.getConfig().useBlockLogic;\n }\n\n public isSeating(booking: Reservierung): boolean {\n const screening = this.getScreening(booking.vorstellungsId);\n console.log(`Screening found: ${screening != null}`);\n console.log(`isSeating: ${screening != null && screening.saalArt === SaalArt.Sitzplaetze}`);\n return screening != null && screening.saalArt === SaalArt.Sitzplaetze;\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';\nimport { ViewBaseComponent } from '../../misc/view-base/view-base.component';\nimport { L10nTranslationService } from 'angular-l10n';\nimport { ComponentStatus } from '../../../models/enums/componentStatus';\nimport { StartupService } from '../../../services/startup.service';\nimport { Meta, Title } from '@angular/platform-browser';\n\n@Component({\n selector: 'app-login',\n templateUrl: './login.component.html'\n})\nexport class LoginComponent extends ViewBaseComponent implements OnInit {\n returnUrl: string;\n\n loginForm = new UntypedFormGroup({\n emailAddress: new UntypedFormControl('', [Validators.required, Validators.email, Validators.maxLength(50)]),\n password: new UntypedFormControl('', [Validators.required, Validators.maxLength(50)]),\n });\n\n constructor(private route: ActivatedRoute, private router: Router, private authService: AuthenticationService, private translation: L10nTranslationService, startupService: StartupService, titleService: Title, meta: Meta) {\n super(titleService, startupService, meta);\n }\n\n ngOnInit(): void {\n this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/';\n this.viewState = ComponentStatus.Displaying;\n\n\n this.loginForm.get('emailAddress').valueChanges.subscribe(val => {\n let mail = val;\n if (!mail != null && (mail.endsWith(' ') || mail.startsWith(' '))) {\n mail = mail.trim();\n this.loginForm.get('emailAddress').setValue(mail);\n }\n });\n }\n\n onSubmit(): void {\n if (!this.loginForm.valid) {\n return;\n }\n\n this.viewState = ComponentStatus.Processing;\n\n const mail = this.loginForm.controls['emailAddress'].value;\n const pass = this.loginForm.controls['password'].value;\n this.authService.login(mail, pass)\n .subscribe(user => {\n if (user != null) {\n const url = this.returnUrl.toString().replace(/,/, '/');\n const success = this.router.navigate([url]);\n if (!success) {\n this.router.navigate(['/']);\n }\n } else {\n this.errorText = this.translation.translate('Login_AuthError');\n }\n });\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { User } from './../../../models/user';\nimport { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';\nimport { passwordsEqualValidatorIfRequired } from './../../../helpers/passwords-equal.directive';\nimport { Globals } from './../../../models/globals';\nimport { UserService } from './../../../services/user.service';\nimport { UserUpdateResult } from './../../../models/enums/userUpdateResult';\nimport { ViewBaseComponent } from '../../misc/view-base/view-base.component';\nimport { L10nTranslationService } from 'angular-l10n';\nimport { ComponentStatus } from '../../../models/enums/componentStatus';\nimport { StartupService } from '../../../services/startup.service';\nimport { Meta, Title } from '@angular/platform-browser';\n\n@Component({\n selector: 'app-profile',\n templateUrl: './profile.component.html'\n})\nexport class ProfileComponent extends ViewBaseComponent implements OnInit {\n isPasswordChange = false;\n user: User;\n\n profileForm = new UntypedFormGroup({\n emailAddress: new UntypedFormControl({value: '', disabled: true}),\n firstName: new UntypedFormControl('', [Validators.required, Validators.maxLength(50)]),\n lastName: new UntypedFormControl('', [Validators.required, Validators.maxLength(50)]),\n phoneNumber: new UntypedFormControl('', [Validators.required, Validators.maxLength(50)]),\n password: new UntypedFormGroup({\n changePassword: new UntypedFormControl(false),\n password1: new UntypedFormControl(''),\n password2: new UntypedFormControl('')\n }, passwordsEqualValidatorIfRequired()),\n acceptNewsletter: new UntypedFormControl(false)\n });\n\n constructor(\n private globals: Globals,\n private userService: UserService,\n private translation: L10nTranslationService,\n startupService: StartupService,\n titleService: Title, meta: Meta) {\n super(titleService, startupService, meta);\n }\n\n ngOnInit() {\n this.viewState = ComponentStatus.Loading;\n this.user = this.globals.getUser();\n if (this.user != null) {\n this.profileForm.get('emailAddress').setValue(this.user.eMailAddress);\n this.profileForm.get('firstName').setValue(this.user.firstName);\n this.profileForm.get('lastName').setValue(this.user.lastName);\n this.profileForm.get('phoneNumber').setValue(this.user.phoneNumber);\n this.profileForm.get('acceptNewsletter').setValue(this.user.newsletter);\n\n this.viewState = ComponentStatus.Displaying;\n } else {\n this.errorText = this.translation.translate('Profile_Error');\n }\n }\n\n onChange(): void {\n const changePassword = this.profileForm.get('password').get('changePassword').value;\n if (changePassword) {\n this.profileForm.get('password').get('password1').setValidators([Validators.minLength(5), Validators.maxLength(30)]);\n this.profileForm.get('password').get('password2').setValidators([Validators.minLength(5), Validators.maxLength(30)]);\n } else {\n this.profileForm.get('password').get('password1').setValidators([]);\n this.profileForm.get('password').get('password2').setValidators([]);\n }\n\n this.isPasswordChange = changePassword;\n }\n\n onSubmit(): void {\n this.viewState = ComponentStatus.Processing;\n\n const user = new User();\n user.id = this.globals.getUser().id;\n user.eMailAddress = this.profileForm.get('emailAddress').value;\n user.firstName = this.profileForm.get('firstName').value;\n user.lastName = this.profileForm.get('lastName').value;\n user.phoneNumber = this.profileForm.get('phoneNumber').value;\n\n if (this.isPasswordChange) {\n user.password = this.profileForm.get('password').get('password1').value;\n }\n\n user.newsletter = this.profileForm.get('acceptNewsletter').value;\n\n this.userService.update(user).subscribe(res => {\n if (res === UserUpdateResult.Success) {\n this.userService.getOwnUser().subscribe(usr => {\n this.globals.setUser(usr);\n this.viewState = ComponentStatus.Displaying;\n });\n } else {\n this.errorText = this.translation.translate('Profile_Error');\n }\n });\n }\n\n get newsletterInfoText(): string {\n return this.startupService.getConfig().newsletterInfoText;\n }\n\n get isNewsletterEnabled(): boolean {\n return this.startupService.getConfig().enableNewsletter;\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ViewBaseComponent } from '../../misc/view-base/view-base.component';\nimport { ComponentStatus } from '../../../models/enums/componentStatus';\nimport { Validators, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { L10nTranslationService } from 'angular-l10n';\nimport { passwordsEqualValidator } from '../../../helpers/passwords-equal.directive';\nimport { RecoveryService } from '../../../services/recovery.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { StartupService } from '../../../services/startup.service';\nimport { Meta, Title } from '@angular/platform-browser';\n\n@Component({\n selector: 'app-recover-finish',\n templateUrl: './recover-finish.component.html'\n})\nexport class RecoverFinishComponent extends ViewBaseComponent implements OnInit {\n isSuccess = false;\n private _userId: string;\n private _recoveryId: string;\n\n recoveryForm = new UntypedFormGroup({\n password: new UntypedFormGroup({\n password1: new UntypedFormControl('', [Validators.required, Validators.minLength(5), Validators.maxLength(30)]),\n password2: new UntypedFormControl('', [Validators.required, Validators.minLength(5), Validators.maxLength(30)])\n }, passwordsEqualValidator()),\n });\n\n constructor(private route: ActivatedRoute, private router: Router, private recoveryService: RecoveryService, private translation: L10nTranslationService, startupService: StartupService, titleService: Title, meta: Meta) {\n super(titleService, startupService, meta);\n }\n\n ngOnInit() {\n this.viewState = ComponentStatus.Loading;\n console.log(\"Finishing\");\n\n this.route.paramMap.subscribe(\n map => {\n if (map.has('userId') && map.has('recoveryId')) {\n this._userId = map.get('userId');\n this._recoveryId = map.get('recoveryId');\n\n this.recoveryService.isRecoveryValid(this._recoveryId, this._userId)\n .then(x => {\n if (x) {\n this.viewState = ComponentStatus.Displaying;\n } else {\n this.errorText = this.translation.translate('RecoveryFinish_InvalidRequest');\n }\n });\n } else {\n this.router.navigate(['/recovery']);\n }\n });\n }\n\n onSubmit(): void {\n this.viewState = ComponentStatus.Processing;\n if (this.recoveryForm.valid) {\n this.recoveryService.finishRecovery(this._recoveryId, this._userId, this.recoveryForm.get('password').get('password1').value)\n .then(res => {\n if (res) {\n this.isSuccess = true;\n this.viewState = ComponentStatus.Displaying;\n } else {\n this.errorText = this.translation.translate('Recovery_Error');\n }\n });\n }\n }\n\n\n // TODO read parameters from URL, send to website for verification, show new PW form, etc.\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ViewBaseComponent } from '../../misc/view-base/view-base.component';\nimport { ComponentStatus } from '../../../models/enums/componentStatus';\nimport { Validators, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { L10nTranslationService } from 'angular-l10n';\nimport { RecoveryService } from '../../../services/recovery.service';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { StartupService } from '../../../services/startup.service';\n\n@Component({\n selector: 'app-recover-start',\n templateUrl: './recover-start.component.html'\n})\nexport class RecoverStartComponent extends ViewBaseComponent implements OnInit {\n isSuccess = false;\n\n recoveryForm = new UntypedFormGroup({\n emailAddress: new UntypedFormControl('', [Validators.required, Validators.email, Validators.maxLength(50)])\n });\n\n constructor(private recoveryService: RecoveryService, private translation: L10nTranslationService, startupService: StartupService, titleService: Title, meta: Meta) {\n super(titleService, startupService, meta);\n }\n\n ngOnInit() {\n this.viewState = ComponentStatus.Displaying;\n }\n\n onSubmit(): void {\n this.viewState = ComponentStatus.Processing;\n if (this.recoveryForm.valid) {\n this.recoveryService.startRecovery(this.recoveryForm.get('emailAddress').value)\n .then(res => {\n if (res) {\n this.isSuccess = true;\n this.viewState = ComponentStatus.Displaying;\n } else {\n this.errorText = this.translation.translate('RecoveryStart_Error');\n }\n });\n }\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';\nimport { passwordsEqualValidator } from '../../../helpers/passwords-equal.directive';\nimport { UserService } from '../../../services/user.service';\nimport { UserRegistrationResult } from '../../../models/enums/userRegistrationResult';\nimport { L10nTranslationService } from 'angular-l10n';\nimport { ViewBaseComponent } from '../../misc/view-base/view-base.component';\nimport { ComponentStatus } from '../../../models/enums/componentStatus';\nimport { StartupService } from '../../../services/startup.service';\nimport { Meta, Title } from '@angular/platform-browser';\n\n@Component({\n selector: 'app-registration',\n templateUrl: './registration.component.html'\n})\nexport class RegistrationComponent extends ViewBaseComponent implements OnInit {\n isSuccess = false;\n\n registrationForm = new UntypedFormGroup({\n emailAddress: new UntypedFormControl('', [Validators.required, Validators.email, Validators.maxLength(50)]),\n firstName: new UntypedFormControl('', [Validators.required, Validators.maxLength(50)]),\n lastName: new UntypedFormControl('', [Validators.required, Validators.maxLength(50)]),\n phoneNumber: new UntypedFormControl('', [Validators.required, Validators.maxLength(50)]),\n password: new UntypedFormGroup({\n password1: new UntypedFormControl('', [Validators.required, Validators.minLength(5), Validators.maxLength(30)]),\n password2: new UntypedFormControl('', [Validators.required, Validators.minLength(5), Validators.maxLength(30)])\n }, passwordsEqualValidator()),\n acceptConditions: new UntypedFormControl(false, [Validators.requiredTrue]),\n acceptNewsletter: new UntypedFormControl(false)\n });\n\n constructor(private userService: UserService, private translation: L10nTranslationService, startupService: StartupService, titleService: Title, meta: Meta) {\n super(titleService, startupService, meta);\n }\n\n ngOnInit() {\n this.viewState = ComponentStatus.Displaying;\n\n this.registrationForm.get('emailAddress').valueChanges.subscribe(val => {\n let mail = val;\n if (!mail != null && (mail.endsWith(' ') || mail.startsWith(' '))) {\n mail = mail.trim();\n this.registrationForm.get('emailAddress').setValue(mail);\n }\n });\n }\n\n onSubmit(): void {\n this.viewState = ComponentStatus.Processing;\n if (this.registrationForm.valid) {\n this.userService.register(\n this.registrationForm.get('emailAddress').value.trim(),\n this.registrationForm.get('firstName').value,\n this.registrationForm.get('lastName').value,\n this.registrationForm.get('phoneNumber').value,\n this.registrationForm.get('password').get('password1').value,\n this.registrationForm.get('acceptNewsletter').value\n )\n .subscribe(res => {\n if (res === UserRegistrationResult.Success) {\n this.viewState = ComponentStatus.Displaying;\n this.isSuccess = true;\n } else if (res === UserRegistrationResult.DuplicateUser) {\n this.errorText = this.translation.translate('Registration_ValidationDuplicateUser');\n } else {\n this.errorText = 'Unbekannter Fehler.';\n }\n\n });\n }\n }\n\n get newsletterInfoText(): string {\n return this.startupService.getConfig().newsletterInfoText;\n }\n\n get termsUrl(): string {\n return this.startupService.getConfig().clientTerms;\n }\n\n get isStaticPagesActive(): boolean {\n return this.startupService.getConfig().staticPagesActive;\n }\n \n get isNewsletterEnabled(): boolean {\n return this.startupService.getConfig().enableNewsletter;\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { UserService } from '../../../services/user.service';\nimport { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';\nimport { ViewBaseComponent } from '../../misc/view-base/view-base.component';\nimport { ComponentStatus } from '../../../models/enums/componentStatus';\nimport { L10nTranslationService } from 'angular-l10n';\nimport { StartupService } from '../../../services/startup.service';\nimport { Meta, Title } from '@angular/platform-browser';\n\n@Component({\n selector: 'app-verification',\n templateUrl: './verification.component.html'\n})\nexport class VerificationComponent extends ViewBaseComponent implements OnInit {\n isSuccess = false;\n\n verificationForm = new UntypedFormGroup({\n verificationId: new UntypedFormControl('', Validators.required)\n });\n\n constructor(private route: ActivatedRoute, private userService: UserService, private translation: L10nTranslationService, startupService: StartupService, titleService: Title, meta: Meta) {\n super(titleService, startupService, meta);\n }\n\n ngOnInit() {\n this.viewState = ComponentStatus.Loading;\n this.route.paramMap.subscribe(\n map => {\n if (map.has('id')) {\n const verificationId = map.get('id');\n this.verificationForm.get('verificationId').setValue(verificationId);\n this.verifyId();\n }\n });\n }\n\n onSubmit(): void {\n this.verifyId();\n }\n\n verifyId(): void {\n this.viewState = ComponentStatus.Processing;\n const verificationId = this.verificationForm.get('verificationId').value;\n if (verificationId !== '') {\n this.userService.verify(verificationId)\n .subscribe(res => {\n if (res) {\n this.viewState = ComponentStatus.Displaying;\n this.isSuccess = true;\n } else {\n this.errorText = this.translation.translate('Verification_Error');\n }\n });\n } else {\n this.viewState = ComponentStatus.Displaying;\n }\n }\n}\n","import { Component, OnInit, ViewChild, AfterViewChecked } from '@angular/core';\nimport { ViewBaseComponent } from '../../misc/view-base/view-base.component';\nimport { Vorstellung } from '../../../models/vorstellung';\nimport { ComponentStatus } from '../../../models/enums/componentStatus';\nimport { ScreeningService } from '../../../services/screening.service';\nimport { L10nTranslationService } from 'angular-l10n';\nimport { ActivatedRoute } from '@angular/router';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { StartupService } from '../../../services/startup.service';\n\n@Component({\n selector: 'app-block-info',\n templateUrl: './block-info.component.html'\n})\nexport class BlockInfoComponent extends ViewBaseComponent implements OnInit, AfterViewChecked {\n\n private _screenings: Vorstellung[] = [];\n private _screeningId: string;\n\n private _coordsFrauenschuh: number[] = [];\n private _coordsAlpenrose: number[] = [];\n private _coordsEdelweiss: number[] = [];\n private _coordsAdlerhorst: number[] = [];\n private _lastWidth = -1;\n\n @ViewChild('imageSitzplan', {static: false}) image;\n\n\n constructor(private screeningService: ScreeningService, private translation: L10nTranslationService, private route: ActivatedRoute, startupService: StartupService, titleService: Title, meta: Meta) {\n super(titleService, startupService, meta);\n }\n\n ngOnInit() {\n this.viewState = ComponentStatus.Loading;\n\n this.route.paramMap.subscribe(map => {\n const screeningId = map.get('id');\n if (screeningId == null) {\n this.errorText = this.translation.translate('ScreeningInfo_Error');\n return;\n }\n this.screeningId = screeningId;\n\n this.screeningService.getScreeningsForBlock(screeningId)\n .subscribe(x => {\n this.screenings = x;\n });\n });\n }\n\n ngAfterViewChecked(): void {\n setTimeout(() => this.updateCoords(this.image.nativeElement.width), 50);\n }\n\n get screeningId(): string {\n return this._screeningId;\n }\n\n set screeningId(value: string) {\n this._screeningId = value;\n }\n\n get screenings(): Vorstellung[] {\n return this._screenings;\n }\n\n set screenings(value: Vorstellung[]) {\n this._screenings = value;\n }\n\n getScreeningIdForBlock(blockName: string): string {\n let id: string = null;\n for (const screening of this.screenings) {\n if (screening.saalName === blockName) {\n id = screening.vorstellungsId;\n break;\n }\n }\n return id;\n }\n\n get coordsFrauenschuh(): number[] {\n return this._coordsFrauenschuh;\n }\n\n get coordsAlpenrose(): number[] {\n return this._coordsAlpenrose;\n }\n\n get coordsEdelweiss(): number[] {\n return this._coordsEdelweiss;\n }\n\n get coordsAdlerhorst(): number[] {\n return this._coordsAdlerhorst;\n }\n\n onResize(event) {\n this.updateCoords(this.image.nativeElement.width);\n }\n\n private updateCoords(width: number): void {\n if (this._lastWidth === width) {\n return;\n }\n this._lastWidth = width;\n\n const coordsAlpenrose: number[] = [77, 465, 143, 215, 405, 250, 561, 416, 542, 481, 480, 512];\n const coordsFrauenschuh: number[] = [566, 405, 683, 387, 654, 154, 575, 144, 416, 161, 428, 254];\n const coordsEdelweiss: number[] = [668, 151, 757, 140, 867, 141, 971, 204, 854, 367, 698, 388];\n const coordsAdlerhorst: number[] = [117, 41, 578, 40, 649, 110, 181, 105];\n const coordsAlpenroseCalculated: number[] = [];\n const coordsFrauenschuhCalculated: number[] = [];\n const coordsEdelweissCalculated: number[] = [];\n const coordsAdlerhorstCalculated: number[] = [];\n\n const percent = width / 1000;\n for (const coord of coordsAlpenrose) {\n coordsAlpenroseCalculated.push(coord * percent);\n }\n for (const coord of coordsFrauenschuh) {\n coordsFrauenschuhCalculated.push(coord * percent);\n }\n for (const coord of coordsEdelweiss) {\n coordsEdelweissCalculated.push(coord * percent);\n }\n for (const coord of coordsAdlerhorst) {\n coordsAdlerhorstCalculated.push(coord * percent);\n }\n this._coordsAdlerhorst = coordsAdlerhorstCalculated;\n this._coordsAlpenrose = coordsAlpenroseCalculated;\n this._coordsEdelweiss = coordsEdelweissCalculated;\n this._coordsFrauenschuh = coordsFrauenschuhCalculated;\n }\n}\n","import { Component, OnInit, Inject } from '@angular/core';\nimport { BookingService } from '../../../services/booking.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ComponentStatus } from '../../../models/enums/componentStatus';\nimport { Vorstellung } from '../../../models/vorstellung';\nimport { Reservierung } from '../../../models/reservierung';\nimport { PreisSchema } from '../../../models/preisSchema';\nimport { ScreeningService } from '../../../services/screening.service';\nimport { PricingService } from '../../../services/pricing.service';\nimport { Film } from '../../../models/film';\nimport { Sitz } from '../../../models/sitz';\nimport { MovieService } from '../../../services/movie.service';\nimport { timer, forkJoin } from 'rxjs';\nimport { Reservierungsstatus } from '../../../models/enums/reservierungsstatus';\nimport { ViewBaseComponent } from '../../misc/view-base/view-base.component';\nimport { L10nTranslationService } from 'angular-l10n';\nimport { StartupService } from '../../../services/startup.service';\nimport { OwnMath } from '../../../helpers/OwnMath';\nimport { DateFormatPipe } from '../../../helpers/DateFormatPipe';\nimport { TimeFormatPipe } from '../../../helpers/TimeFormatPipe';\nimport {saveAs as importedSaveAs} from 'file-saver';\nimport { DOCUMENT } from '@angular/common';\nimport { Globals } from '../../../models/globals';\nimport { UserService } from '../../../services/user.service';\nimport { EPSService } from '../../../services/eps.service';\nimport { TaxSetService } from '../../../services/taxSetService';\nimport { TaxSet } from '../../../models/taxSet';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { StripeService } from '../../../services/stripe.service';\nimport {loadStripe} from '@stripe/stripe-js/pure';\nimport { SaalArt } from '../../../models/enums/saalArt';\nimport { UserRight } from '../../../models/enums/userRight';\n\n@Component({\n selector: 'app-booking-details',\n templateUrl: './booking-details.component.html'\n})\nexport class BookingDetailsComponent extends ViewBaseComponent implements OnInit {\n private baseUrl: string;\n\n movie: Film;\n screening: Vorstellung;\n booking: Reservierung;\n pricing: PreisSchema;\n taxSet: TaxSet;\n\n priceChildren: number; // incl. tax\n taxChildren: number;\n priceAdults: number; // incl. tax\n taxAdults: number;\n taxTotal: number; // total tax\n subTotal: number; // sum without tax\n total: number; // subTotal + taxTotal\n serviceFeeEps: number;\n serviceFeeStripe: number;\n totalServiceFeeEps: number;\n totalServiceFeeStripe: number;\n\n timeLeft = '-:--';\n isStripeEnabled = false;\n isEpsEnabled = false;\n isBooked = false;\n isPaid = false;\n isTermsAccepted = false;\n isNewsletterAccepted = false;\n\n constructor(@Inject('BASE_URL') baseUrl: string, @Inject(DOCUMENT) private document: any, private bookingService: BookingService, private screeningService: ScreeningService\n , private pricingService: PricingService, private movieService: MovieService\n , private route: ActivatedRoute, private router: Router, private translation: L10nTranslationService, private globals: Globals\n , private userService: UserService, private epsService: EPSService, private taxSetService: TaxSetService\n , private stripeService: StripeService\n , startupService: StartupService, titleService: Title, meta: Meta) {\n super(titleService, startupService, meta);\n this.baseUrl = baseUrl;\n }\n\n ngOnInit() {\n this.viewState = ComponentStatus.Loading;\n\n this.route.paramMap.subscribe(\n map => {\n if (map.has('id')) {\n this.bookingService.get(map.get('id'))\n .subscribe(booking => {\n if (booking == null) {\n this.errorText = this.translation.translate('ScreeningInfo_Error');\n } else {\n this.booking = booking;\n\n // if booking is deleted or not in sync, go to bookings\n if (booking.isDeleted || !booking.reservierungBestaetigt) {\n this.router.navigate(['/bookings']);\n }\n\n this.isPaid = booking.status === Reservierungsstatus.VerkauftInternet\n || booking.status === Reservierungsstatus.VerkauftKasse\n || booking.status === Reservierungsstatus.AusgedrucktInternet;\n\n this.isBooked = booking.status === Reservierungsstatus.Reserviert || booking.status === Reservierungsstatus.InternetReserviert;\n\n forkJoin([\n this.screeningService.getByScreeningId(booking.vorstellungsId),\n this.movieService.getByScreeningId(booking.vorstellungsId),\n this.pricingService.getByScreeningId(booking.vorstellungsId),\n this.taxSetService.getByScreeningId(booking.vorstellungsId)\n ]).subscribe(results => {\n this.screening = results[0];\n this.movie = results[1];\n this.pricing = results[2];\n this.taxSet = results[3];\n\n if (this.screening != null && this.movie != null && this.pricing != null && this.taxSet != null) {\n const ticketTax = (+1) + this.taxSet.taxTicket;\n this.titleService.setTitle(this.startupService.getConfig().client + ' - ' + this.movie.filmTitel + ' ' + this.movie.filmTitelZusatz);\n\n this.serviceFeeEps = this.startupService.getConfig().eps.serviceFee; // single service fee\n this.serviceFeeStripe = this.startupService.getConfig().stripe.serviceFee; // single service fee\n this.totalServiceFeeEps = (this.booking.anzahlErwachsene + this.booking.anzahlKinder) * this.serviceFeeEps;\n this.totalServiceFeeStripe = (this.booking.anzahlErwachsene + this.booking.anzahlKinder) * this.serviceFeeStripe;\n\n this.priceAdults = this.booking.preisErwachsene * this.booking.anzahlErwachsene;\n this.priceChildren = this.booking.preisKinder * this.booking.anzahlKinder;\n this.total = (this.priceAdults + this.priceChildren);\n this.taxAdults = OwnMath.round(this.priceAdults - OwnMath.round(this.priceAdults / ticketTax, 2), 2);\n this.taxChildren = OwnMath.round(this.priceChildren - OwnMath.round(this.priceChildren / ticketTax, 2), 2);\n this.taxTotal = OwnMath.round(this.taxAdults + this.taxChildren, 2);\n this.subTotal = this.total - this.taxTotal;\n\n this.runTimer();\n this.isEpsEnabled = this.startupService.getConfig().eps.enabled;\n this.isStripeEnabled = this.startupService.getConfig().stripe.enabled;\n\n this.isNewsletterAccepted = this.globals.getUser().newsletter;\n\n this.viewState = ComponentStatus.Displaying;\n } else {\n this.errorText = this.translation.translate('ScreeningInfo_Error');\n }\n });\n }\n });\n }\n });\n }\n\n\n confirmBooking(): void {\n this.viewState = ComponentStatus.Processing;\n\n forkJoin([\n this.bookingService.confirm(this.booking.id),\n this.userService.setNewsletter(this.globals.getUser().id, this.isNewsletterAccepted)\n ])\n .subscribe(res => {\n if (res[0]) {\n this.isBooked = true;\n this.viewState = ComponentStatus.Displaying;\n } else {\n this.errorText = this.translation.translate('ScreeningInfo_ErrorBookingConfirm');\n }\n });\n }\n\n confirmCashBooking(): void {\n this.viewState = ComponentStatus.Processing;\n\n this.bookingService.confirmCash(this.booking.id)\n .subscribe(res => {\n console.log('Res: ' + res);\n if (res) {\n this.isBooked = true;\n this.isPaid = true;\n this.viewState = ComponentStatus.Displaying;\n } else {\n this.errorText = this.translation.translate('ScreeningInfo_ErrorBookingConfirm');\n }\n });\n }\n\n initiateEpsTransfer(): void {\n this.viewState = ComponentStatus.Processing;\n\n this.epsService.initiateTransfer(this.booking.id)\n .subscribe(res => {\n if (res.success) {\n this.document.location.href = res.forwardUrl;\n } else {\n this.errorText = this.translation.translate('ScreeningInfo_Error');\n }\n });\n }\n\n async initiateStripeTransfer(): Promise {\n this.viewState = ComponentStatus.Processing;\n const stripe = await loadStripe(this.startupService.getConfig().stripe.publicKey);\n\n this.stripeService.initiateTransfer(this.booking.id)\n .subscribe(res => {\n const sessId = (res).id;\n stripe.redirectToCheckout({sessionId: sessId})\n .then(result => {\n if (result.error) {\n this.errorText = result.error.message;\n } else {\n this.viewState = ComponentStatus.Displaying;\n }\n })\n .catch(err => {\n console.error(err);\n this.errorText = \"Fehler beim Aufruf der Stripe Zahlung.\";\n });\n });\n }\n\n cancelBooking(): void {\n this.viewState = ComponentStatus.Processing;\n this.bookingService.delete(this.booking.id)\n .subscribe(res => {\n if (res) {\n const url = this.startupService.getConfig().bookingCancelUrl;\n this.document.location.href = url;\n } else {\n this.errorText = this.translation.translate('ScreeningInfo_Error');\n }\n });\n }\n\n\n getSelectedSeatsLabelKey(): string {\n if (this.booking.sitzIds.length > 1) {\n return 'ScreeningInfo_SelectedSeats';\n }\n return 'ScreeningInfo_SelectedSeat';\n }\n\n getSelectedSeatsNames(): string {\n if (this.booking.sitzIds.length === 0) {\n return '';\n }\n\n const seatId = this.booking.sitzIds[0];\n let seat = this.getSeat(seatId);\n let label = '' + seat.sitzplatzNummer;\n if (this.booking.sitzIds.length > 1) {\n seat = this.getSeat(this.booking.sitzIds[this.booking.sitzIds.length - 1]);\n label += ' - ' + seat.sitzplatzNummer;\n }\n\n return label;\n }\n\n private getSeat(seatId: string): Sitz {\n for (const seat of this.screening.sitze) {\n if (seat.id === seatId) {\n return seat;\n }\n }\n\n return null;\n }\n\n getSelectedRowName(): string {\n const seat = this.getSeat(this.booking.sitzIds[0]);\n if (seat === null) return '';\n return '' + seat.reihe;\n }\n\n getBarcodeUrl(): string {\n if (this.booking != null && this.isBooked) {\n return this.baseUrl + 'api/Booking/Barcode/' + this.booking.id;\n }\n return '//:0';\n }\n\n getQRCodeUrl(): string {\n if (this.booking != null) {\n return this.baseUrl + 'api/Booking/QRCode/' + this.booking.id;\n }\n return '//:0';\n }\n\n private runTimer(): void {\n const timeStart = new Date(this.booking.reservierungszeitpunkt).getTime();\n const tim = timer(1000, 1000);\n tim.subscribe(val => {\n const timeLimit = 300; //seconds = 5 minutes\n const elapsed = Date.now() - timeStart;\n const left = (timeLimit * 1000) - elapsed;\n const time = new Date(0, 0, 0, 0, 0, 0, left);\n\n if (time.getSeconds() < 10) {\n this.timeLeft = time.getMinutes() + ':0' + time.getSeconds();\n } else {\n this.timeLeft = time.getMinutes() + ':' + time.getSeconds();\n }\n\n if (elapsed > timeLimit * 1000 && !this.isError && !this.isProcessing && !this.isBooked && !this.isPaid) {\n this.warningText = this.translation.translate('BookingDetails_TimeoutError');\n }\n });\n }\n\n get isBookingAllowed(): boolean {\n return this.screening != null && (this.screening.reservierungsEinstellung === 'KaufUndReservierung' || this.screening.reservierungsEinstellung === 'Reservierung');\n }\n\n get isBuyingAllowed(): boolean {\n return this.screening != null && (this.screening.reservierungsEinstellung === 'KaufUndReservierung' || this.screening.reservierungsEinstellung === 'Kauf') && (this.startupService.getConfig().stripe.enabled || this.startupService.getConfig().eps.enabled);\n }\n\n get termsUrl(): string {\n return this.startupService.getConfig().clientTerms;\n }\n\n get isStaticPagesActive(): boolean {\n return this.startupService.getConfig().staticPagesActive;\n }\n\n get newsletterInfoText(): string {\n return this.startupService.getConfig().newsletterInfoText;\n }\n\n termsChanged(event: any): void {\n this.isTermsAccepted = event.currentTarget.checked;\n }\n\n newsletterChanged(event: any): void {\n this.isNewsletterAccepted = event.currentTarget.checked;\n }\n\n downloadTicket(): void {\n this.bookingService.downloadTicket(this.booking.id)\n .subscribe(res => {\n importedSaveAs(res, 'Ticket.pdf');\n });\n }\n\n downloadInvoice(): void {\n this.bookingService.downloadInvoice(this.booking.id)\n .subscribe(res => {\n importedSaveAs(res, 'Rechnung.pdf');\n });\n }\n\n get isTicketDownloadAllowed(): boolean {\n return this.startupService.getConfig().allowTicketDownload;\n }\n\n get isInvoiceDownloadAllowed(): boolean {\n return this.startupService.getConfig().allowInvoiceDownload;\n }\n\n get showNewsletter(): boolean {\n return !this.globals.getUser().newsletter && this.startupService.getConfig().enableNewsletter;\n }\n\n get bookingFetchLimitString(): string {\n return this.startupService.getConfig().bookingFetchLimitString;\n }\n\n get useBlockLogic(): boolean {\n return this.startupService.getConfig().useBlockLogic;\n }\n\n get isSeating(): boolean { return this.screening !== null && this.screening.saalArt === SaalArt.Sitzplaetze; }\n\n get isMitarbeiter(): boolean {\n const user = this.globals.getUser();\n if (user == null) {\n return false;\n }\n\n const isMitarbeiter = this.userService.hasUserRight(user, UserRight.Mitarbeiter);\n const isAdmin = this.userService.hasUserRight(user, UserRight.Admin);\n return isMitarbeiter || isAdmin;\n }\n}\n","import { Vorstellung } from './../../../models/vorstellung';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { StartupService } from './../../../services/startup.service';\nimport { Globals } from './../../../models/globals';\nimport { Component, OnInit, Inject } from '@angular/core';\nimport { UserService } from './../../../services/user.service';\nimport { UserRight } from './../../../models/enums/userRight';\nimport { ScreeningService } from './../../../services/screening.service';\nimport { MovieService } from './../../../services/movie.service';\nimport { PricingService } from './../../../services/pricing.service';\nimport { PreisSchema } from './../../../models/preisSchema';\nimport { Kategorie } from './../../../models/kategorie';\nimport { Film } from './../../../models/film';\nimport { Sitz } from '../../../models/sitz';\nimport { SitzTyp } from '../../../models/enums/sitzTyp';\nimport { ComponentStatus } from '../../../models/enums/componentStatus';\nimport { Reservierung } from '../../../models/reservierung';\nimport { BookingService } from '../../../services/booking.service';\nimport { DialogService } from '../../../services/dialog-service.service';\nimport { timer, forkJoin } from 'rxjs';\nimport { ViewBaseComponent } from '../../misc/view-base/view-base.component';\nimport { L10nTranslationService } from 'angular-l10n';\nimport { DOCUMENT } from '@angular/common';\nimport { Reservierungsstatus } from '../../../models/enums/reservierungsstatus';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { SaalArt } from '../../../models/enums/saalArt';\n\n@Component({\n selector: 'app-screening-info',\n templateUrl: './screening-info.component.html'\n})\nexport class ScreeningInfoComponent extends ViewBaseComponent implements OnInit {\n screening: Vorstellung;\n pricing: PreisSchema;\n movie: Film;\n\n booking: Reservierung; // contains already booked seats\n bookings: Reservierung[] = []; // list of bookings if you are an admin\n doubleBookedSeats: Sitz[] = []; // list of double booked seats\n\n maxSeatsInBooking; number;\n maxSeatsInBookingList: number[];\n maxSeatsChildrenList: number[];\n private _bookingName: string;\n private _bookingPhone: string;\n private _bookingEmail: string;\n\n private _bookingsFullCorona = false;\n\n private _selectedX = -1;\n private _selectedY = -1;\n private _countAdults = 1;\n private _countChildren = 0;\n private _countTickets = 1;\n private _selectedSeats: Sitz[] = [];\n\n private _previousScreening: Vorstellung;\n private _nextScreening: Vorstellung;\n\n private _isSeating = false;\n private availableStandingTickets = 0;\n\n private blockScreenings: Vorstellung[] = [];\n\n processingDots = '';\n\n\n constructor(\n @Inject(DOCUMENT) private document: any,\n private globals: Globals,\n private userService: UserService,\n private screeningService: ScreeningService,\n private pricingService: PricingService,\n private movieService: MovieService,\n private bookingService: BookingService,\n private dialogService: DialogService,\n private router: Router,\n private route: ActivatedRoute,\n private translation: L10nTranslationService,\n startupService: StartupService,\n titleService: Title, meta: Meta) {\n super(titleService, startupService, meta);\n this.globals.userSource$.subscribe(() => this.handleUserChange());\n }\n\n ngOnInit() {\n this.maxSeatsInBooking = this.startupService.getConfig().maxSeatsInBooking;\n this.maxSeatsInBookingList = [];\n for (let i = 1; i <= this.maxSeatsInBooking; i++) {\n this.maxSeatsInBookingList.push(i);\n }\n\n this.maxSeatsChildrenList = [];\n this.maxSeatsChildrenList.push(0);\n if (!this.useBlockLogic) this.maxSeatsChildrenList.push(1);\n\n this.viewState = ComponentStatus.Loading;\n this.handleUserChange();\n\n // if we are still here, we can continue\n this.route.paramMap.subscribe(map => {\n const screeningId = map.get('id');\n if (screeningId == null) {\n this.errorText = this.translation.translate('ScreeningInfo_Error');\n return;\n }\n\n // get data\n forkJoin([\n this.screeningService.getByScreeningId(screeningId),\n this.pricingService.getByScreeningId(screeningId),\n this.movieService.getByScreeningId(screeningId),\n this.bookingService.getBookedSeatsForScreening(screeningId),\n this.screeningService.getNextScreening(screeningId),\n this.screeningService.getPreviousScreening(screeningId),\n this.bookingService.getOpenBooking(screeningId),\n this.screeningService.getAvailableStandingTickets(screeningId),\n this.screeningService.getScreeningsForBlock(screeningId)\n ]).subscribe(results => {\n this.screening = results[0];\n this.pricing = results[1];\n this.movie = results[2];\n this.booking = results[3];\n this._nextScreening = results[4];\n this._previousScreening = results[5];\n const openBooking = results[6];\n this.availableStandingTickets = results[7];\n this.blockScreenings = results[8];\n\n const isSeating = this.screening.saalArt === SaalArt.Sitzplaetze;\n this._isSeating = isSeating;\n\n if (openBooking != null) {\n // forward!\n this.router.navigate(['/booking/' + openBooking.id]);\n }\n\n // get additional data\n this.bookingService.getBookingsForScreening(screeningId).subscribe(res => {\n this.bookings = res;\n });\n this.bookingService.getDoubleBookedSeatsForScreening(screeningId).subscribe(res => {\n this.doubleBookedSeats = res;\n });\n\n if (this.screening == null || this.pricing == null || this.movie == null || this.booking == null) {\n this.errorText = this.translation.translate('ScreeningInfo_Error');\n } else if (!this.isActive(this.screening) && !this.isMitarbeiter) {\n this.booking = new Reservierung();\n this.bookings = [];\n\n this.errorText = 'Für diese Vorstellung können leider keine Sitzplätze mehr reserviert oder gekauft werden.';\n } else {\n this.titleService.setTitle(this.startupService.getConfig().client + ' - ' + this.movie.filmTitel + ' ' + this.movie.filmTitelZusatz);\n this.viewState = ComponentStatus.Displaying;\n\n // start booking reloading logic\n this.reloadBooking();\n }\n });\n });\n }\n\n private reloadBooking(): void {\n const milliseconds = 60 * 1000;\n const tim = timer(milliseconds, milliseconds);\n tim.subscribe(val => {\n if (this.isActive(this.screening) || this.isMitarbeiter) {\n this.bookingService.getBookedSeatsForScreening(this.screening.vorstellungsId)\n .subscribe(booking => {\n this.booking = booking;\n if (booking == null) {\n this.errorText = this.translation.translate('ScreeningInfo_Error');\n } else {\n this.updateCoronaFull();\n }\n });\n this.screeningService.getAvailableStandingTickets(this.screening.vorstellungsId)\n .subscribe(amountAvailable => {\n this.availableStandingTickets = amountAvailable;\n });\n\n // get additional data\n this.bookingService.getBookingsForScreening(this.screening.vorstellungsId).subscribe(res => {\n this.bookings = res;\n });\n } else {\n this.booking = new Reservierung();\n this.bookings = [];\n\n this.errorText = 'Für diese Vorstellung können leider keine Sitzplätze mehr reserviert oder gekauft werden.';\n }\n });\n }\n\n get selectedX(): number {\n return this._selectedX;\n }\n\n set selectedX(newX: number) {\n this._selectedX = newX;\n }\n\n get selectedY(): number {\n return this._selectedY;\n }\n\n set selectedY(newY: number) {\n this._selectedY = newY;\n }\n\n get nextScreening(): Vorstellung {\n return this._nextScreening;\n }\n\n get previousScreening(): Vorstellung {\n return this._previousScreening;\n }\n\n get nextScreeningId(): string {\n return this._nextScreening != null ? this._nextScreening.vorstellungsId : '';\n }\n\n get previousScreeningId(): string {\n return this._previousScreening != null ? this._previousScreening.vorstellungsId : '';\n }\n\n get nextScreeningTime(): Date {\n return this._nextScreening != null ? this._nextScreening.vorstellungszeit : null;\n }\n\n get previousScreeningTime(): Date {\n return this._previousScreening != null ? this._previousScreening.vorstellungszeit : null;\n }\n\n get bookingsFullCorona(): boolean { return this._bookingsFullCorona; }\n set bookingsFullCorona(value: boolean) { this._bookingsFullCorona = value; }\n\n get canPerformBookingsCorona(): boolean {\n if (this.bookingsFullCorona || (this.booking != null && this.screening != null && ((this.countTickets + this.booking.sitzIds.length > 100) || (this.countTickets + this.booking.sitzIds.length > this.screening.sitze.length/2)))) {\n if (this.startupService.isBeforeCoronaEndDate(this.screening.vorstellungszeit)) {\n return false;\n }\n }\n return true;\n }\n\n private updateCoronaFull(): void {\n this.bookingsFullCorona = false; // this.booking.sitzIds.length >= this.screening.sitze.length * 0.75;\n }\n\n set countAdults(newCount: number) {\n newCount = +newCount;\n if (newCount < 0) {\n newCount = 0;\n }\n this._countAdults = newCount;\n }\n\n get countAdults(): number {\n return this._countAdults;\n }\n\n get countChildren(): number {\n return this._countChildren;\n }\n\n set countChildren(newCount: number) {\n newCount = +newCount;\n if (newCount < 0) {\n newCount = 0;\n }\n this._countChildren = newCount;\n this.countAdults = this.countTickets - newCount;\n }\n\n get countTickets(): number {\n return this._countTickets;\n }\n\n set countTickets(newCount: number) {\n newCount = +newCount;\n if (newCount < 0) {\n newCount = 0;\n }\n this._countTickets = newCount;\n\n // geierwally requires 1 adult, so -1 on children here\n this.maxSeatsChildrenList = [];\n if (this.useBlockLogic) {\n for (let i = 0; i <= newCount-1; i++) {\n this.maxSeatsChildrenList.push(i);\n }\n\n if (this.countChildren > newCount-1) {\n this.countChildren = newCount-1;\n }\n } else {\n for (let i = 0; i <= newCount; i++) {\n this.maxSeatsChildrenList.push(i);\n }\n\n if (this.countChildren > newCount) {\n this.countChildren = newCount;\n }\n }\n\n\n this.countAdults = this.countTickets - this.countChildren;\n this.onSeatSelectedChanged([this.selectedX, this.selectedY]);\n }\n\n get selectedSeats(): Sitz[] {\n return this._selectedSeats;\n }\n\n set selectedSeats(newValue: Sitz[]) {\n this._selectedSeats = newValue;\n }\n\n isSeatSelected(): boolean {\n return this.selectedSeats.length > 0 || (this.countTickets > 0 && !this.isSeating);\n }\n\n handleUserChange(): void {\n if (this.globals.isAutoLoginInProgress()) {\n this.globals.autoLoginInProgressSource$.subscribe(autoLoginInProgress => {\n this.handleUserChangeCore();\n });\n } else {\n this.handleUserChangeCore();\n }\n }\n\n handleUserChangeCore(): void {\n if (this.globals.isLoggedIn()) {\n const user = this.globals.getUser();\n const canBook = this.userService.hasUserRight(user, UserRight.Booking);\n const isBanned = this.userService.hasUserRight(user, UserRight.Banned);\n\n if (!canBook || isBanned) {\n // TODO send away with error message\n }\n } else if (this.startupService.getConfig().requiresImmediateLogin) {\n this.router.navigate(['/login'], {\n queryParams: { returnUrl: this.route.snapshot.url }\n });\n }\n }\n\n getPricingCategory(): Kategorie {\n if (this.isSeatSelected() && !this.isLoading) {\n let categoryId = -1;\n\n // with no seating, always first category\n if (!this.isSeating) {\n return this.pricing.kategorien[0];\n }\n\n for (const seat of this.screening.sitze) {\n if (seat.x === this.selectedX && seat.y === this.selectedY) {\n categoryId = seat.kategorieId;\n break;\n }\n }\n\n if (categoryId !== -1) {\n for (const category of this.pricing.kategorien) {\n if (category.id === categoryId) {\n return category;\n }\n }\n }\n }\n return null;\n }\n\n getPricingAdults(): number {\n return this.getPricing(0);\n }\n\n getPricingChildren(): number {\n return this.getPricing(1);\n }\n\n getPricingTotal(): number {\n const pricingAdults = this.getPricingAdults();\n const pricingChildren = this.getPricingChildren();\n return (\n pricingAdults * this.countAdults + pricingChildren * this.countChildren\n );\n }\n\n private getPricing(priceIndex: number): number {\n if (this.isSeatSelected() && !this.isLoading) {\n // assumption: all seats must have same category\n const category = this.getPricingCategory();\n if (category != null) {\n const price = category.preise[priceIndex];\n let sum = price.preis;\n\n if (this.screening.aufschlagAktiv) {\n sum += this.screening.aufschlagSumme;\n }\n if (this.screening.aufschlagAktiv3D) {\n sum += this.screening.aufschlagSumme3D;\n }\n return sum;\n }\n }\n return -1;\n }\n\n private getSeat(x: number, y: number): Sitz {\n if (this.screening != null) {\n for (const seat of this.screening.sitze) {\n if (seat.x === x && seat.y === y) {\n return seat;\n }\n }\n }\n\n return null;\n }\n\n onSeatSelectedChanged(selected: [number, number]) {\n let selectedX = selected[0];\n const selectedY = selected[1];\n this.viewState = ComponentStatus.Displaying;\n\n // check if hall is 8 wide or not by getting seat at x = 8 and x = 9 (if 8 was found and 9 not, then 8 wide)\n const seatThree = this.getSeat(3, selectedY);\n const seatEight = this.getSeat(8, selectedY);\n const seatNine = this.getSeat(9, selectedY);\n const isEightWide = seatEight != null && seatNine == null;\n const tryToMoveForEightWide = isEightWide && this.countTickets === 2 && selectedX === 4 && seatThree != null;\n\n let moveForEightWide = false;\n\n if (tryToMoveForEightWide && !this.isSeatBooked(seatThree)) {\n selectedX = 3;\n moveForEightWide = true;\n }\n\n // get seat which was clicked\n const seat = this.getSeat(selectedX, selectedY);\n if (seat != null && seat.typ !== SitzTyp.Platzhalter && !this.isSeatBooked(seat)) {\n // clear selected seats and assign new position\n this.selectedSeats = [];\n this.selectedX = selectedX;\n this.selectedY = selectedY;\n\n // create local list\n let selectedSeats: Sitz[] = [];\n\n // select initial seat\n if (this.countTickets > 0) {\n selectedSeats.push(seat);\n }\n\n // helpers to store most right and left seats\n let mostRightSeat = this.selectedX;\n let mostLeftSeat = this.selectedX;\n\n // select seats towards right until occupied or non existant seat is found\n let currentX = this.selectedX;\n let openTickets = this.countTickets - 1;\n while (openTickets > 0) {\n currentX++;\n const nextSeat = this.getSeat(currentX, this.selectedY);\n\n if (nextSeat != null && nextSeat.typ !== SitzTyp.Platzhalter && !this.isSeatBooked(nextSeat)) {\n selectedSeats.push(nextSeat);\n openTickets--;\n\n // inc most right seat position (X)\n mostRightSeat++;\n } else {\n break;\n }\n }\n\n // select seats towards left until occupied or non existant seat is found\n currentX = this.selectedX;\n while (openTickets > 0) {\n currentX--;\n const nextSeat = this.getSeat(currentX, this.selectedY);\n if (nextSeat != null && nextSeat.typ !== SitzTyp.Platzhalter && !this.isSeatBooked(nextSeat)) {\n selectedSeats.push(nextSeat);\n openTickets--;\n\n // dec most left seat position (X)\n mostLeftSeat--;\n } else {\n break;\n }\n }\n\n // if we still have open ticket, there was not enough room, show error\n if (openTickets > 0) {\n this.warningText = this.translation.translate('ScreeningInfo_ErrorSeats');\n } else {\n // if selected seat is a partner seat right side and number of tickets > 1 then shift one to the left\n // do not apply rest of logistics if this is the case\n const currentSeat = this.getSeat(mostLeftSeat, this.selectedY);\n const partnerLeftSeat = this.getSeat(mostLeftSeat - 1, this.selectedY);\n if (currentSeat.typ === SitzTyp.PartnerRechts && this.countTickets > 1 && partnerLeftSeat != null && !this.isSeatBooked(partnerLeftSeat)) {\n const rightSeat = this.getSeat(mostRightSeat, this.selectedY);\n const index = selectedSeats.indexOf(rightSeat);\n selectedSeats.splice(index, 1);\n selectedSeats.push(partnerLeftSeat);\n\n this.warningText = this.translation.translate('ScreeningInfo_LogisticsWarning');\n } else {\n // check if we should move seats to the left to avoid single-empty seats\n const notAllowedDiff = Math.max(1, Math.min(Math.floor(this.countTickets / 2), 2));\n let countFreeLeft = this.getLeftFreeSeatsCount(mostLeftSeat, notAllowedDiff + 1);\n let countFreeRight = this.getRightFreeSeatsCount(mostRightSeat, notAllowedDiff + 1);\n\n // moving to left wins\n if (countFreeLeft <= notAllowedDiff && countFreeLeft > 0) {\n while (countFreeLeft > 0) {\n const rightSeat = this.getSeat(mostRightSeat, this.selectedY);\n const newSeat = this.getSeat(mostLeftSeat - 1, this.selectedY);\n const index = selectedSeats.indexOf(rightSeat);\n selectedSeats.splice(index, 1);\n selectedSeats.push(newSeat);\n\n mostRightSeat--;\n mostLeftSeat--;\n countFreeLeft--;\n }\n this.warningText = this.translation.translate('ScreeningInfo_LogisticsWarning');\n } else if (countFreeRight <= notAllowedDiff && countFreeRight > 0) {\n while (countFreeRight > 0) {\n const leftSeat = this.getSeat(mostLeftSeat, this.selectedY);\n const newSeat = this.getSeat(mostRightSeat + 1, this.selectedY);\n const index = selectedSeats.indexOf(leftSeat);\n selectedSeats.splice(index, 1);\n selectedSeats.push(newSeat);\n\n mostRightSeat++;\n mostLeftSeat++;\n countFreeRight--;\n }\n this.warningText = this.translation.translate('ScreeningInfo_LogisticsWarning');\n } else if (moveForEightWide) {\n this.warningText = this.translation.translate('ScreeningInfo_LogisticsWarning');\n } else {\n this.viewState = ComponentStatus.Displaying;\n }\n }\n }\n\n selectedSeats = this.sortSeatsByX(selectedSeats);\n\n // special case: if most right seat is a double seat, move everything one to the right again ...\n if (this.countTickets > 1) {\n const lastSeat = selectedSeats[selectedSeats.length - 1];\n if (lastSeat.typ === SitzTyp.PartnerLinks) {\n // get next seat, check if free ...\n const nextSeat = this.getSeat(lastSeat.x + 1, lastSeat.y);\n if (!this.isSeatBooked(nextSeat)) { // move\n selectedSeats.shift();\n selectedSeats.push(nextSeat);\n this.warningText = this.translation.translate('ScreeningInfo_LogisticsWarning');\n }\n }\n }\n\n this.selectedSeats = selectedSeats;\n }\n }\n\n getLeftFreeSeatsCount(lastUsedX: number, maxDist: number): number {\n return this.getFreeSeatsCount(lastUsedX, maxDist, -1);\n }\n\n getRightFreeSeatsCount(lastUsedX: number, maxDist: number): number {\n return this.getFreeSeatsCount(lastUsedX, maxDist, +1);\n }\n\n private getFreeSeatsCount(lastUsedX: number, maxDist: number, increment: number): number {\n lastUsedX += increment;\n\n let count = 0;\n\n while (true) {\n // if end is reached, cancel counting\n if (lastUsedX < 0) {\n break;\n }\n\n // if we do n ot find a seat or of the seat is a place holder or if the seat is booked, cancel counting\n const seat = this.getSeat(lastUsedX, this.selectedY);\n if (seat == null || seat.typ === SitzTyp.Platzhalter || this.isSeatBooked(seat)) {\n break;\n }\n\n // count and go on\n count++;\n lastUsedX += increment;\n\n if (count >= maxDist) {\n break;\n }\n }\n\n return count;\n }\n\n canPerformBooking(): boolean {\n const countGreaterZero = this.countTickets > 0;\n const selectedSeatsMatch = this.selectedSeats.length === this.countTickets || !this.isSeating;\n const result = countGreaterZero && selectedSeatsMatch && !this.isError;\n\n return result;\n }\n\n performBooking(): void {\n if (this.globals.isLoggedIn()) {\n this.performBookingCore();\n } else {\n this.dialogService.showLoginDialog().then(result => {\n if (result == 'done') this.performBooking(); // done means successful login, if so continue with booking\n });\n }\n }\n\n private performBookingCore(): void {\n this.viewState = ComponentStatus.Processing;\n\n let countDots = 1;\n this.processingDots = '';\n const interval = setInterval(() => {\n if (countDots === 0) {\n this.processingDots = '';\n countDots ++;\n } else if (countDots === 1) {\n this.processingDots = ' .';\n countDots ++;\n } else if (countDots === 2) {\n this.processingDots = ' ..';\n countDots ++;\n } else if (countDots === 3) {\n this.processingDots = ' ...';\n countDots = 0;\n }\n }, 500);\n\n const booking = new Reservierung();\n booking.vorstellungsId = this.screening.vorstellungsId;\n booking.userId = this.globals.getUser().id;\n for (const sitz of this.selectedSeats) {\n booking.sitzIds.push(sitz.id);\n }\n\n booking.anzahlErwachsene = this.countAdults;\n booking.anzahlKinder = this.countChildren;\n\n if (this.countTickets > this.availableStandingTickets && !this.isSeating) {\n this.errorText = `Sie haben mehr Tickets gewählt als noch verfügbar sind. Es gibt aktuell noch ${this.availableStandingTickets} Tickets.`;\n return;\n }\n\n // set name if it is configured, usually this means a Mitarbeiter is booking for a customer\n if (this.bookingName != null && this.bookingName.length > 0) {\n booking.reservierungsName = this.bookingName;\n }\n if (this.bookingEmail != null && this.bookingEmail.length > 0) {\n booking.reservierungsEmail = this.bookingEmail;\n }\n if (this.bookingPhone != null && this.bookingPhone.length > 0) {\n booking.reservierungsTelefon = this.bookingPhone;\n }\n\n this.bookingService.create(booking)\n .subscribe(book => {\n clearInterval(interval);\n if (book == null) {\n this.errorText = this.translation.translate('ScreeningInfo_ErrorProcessing', { homepage: this.startupService.getConfig().clientHomepage});\n } else {\n this.router.navigate(['/booking/' + book.id]);\n }\n });\n }\n\n private isSeatBooked(seat: Sitz): boolean {\n const index = this.booking.sitzIds.indexOf(seat.id);\n return index > -1;\n }\n\n getSelectedRowName(): string {\n if (this.selectedSeats.length === 0) {\n return '';\n }\n\n return '' + this.selectedSeats[0].reihe;\n }\n\n getSelectedSeatsLabelKey(): string {\n if (this.selectedSeats.length > 1) {\n return 'ScreeningInfo_SelectedSeats';\n }\n return 'ScreeningInfo_SelectedSeat';\n }\n\n getSelectedSeatsNames(): string {\n if (this.selectedSeats.length === 0) {\n return '';\n }\n\n let label = '' + this.selectedSeats[0].sitzplatzNummer;\n if (this.selectedSeats.length > 1) {\n label += ' - ' + this.selectedSeats[this.selectedSeats.length - 1].sitzplatzNummer;\n }\n\n return label;\n }\n\n showChildrenSelection(): boolean {\n // guard\n if (this.screening == null) {\n return false;\n }\n\n return this.screening.kinderTicketsErlaubt;\n }\n\n getDayInWeek(): string {\n let dayInWeek = 0;\n if (this.screening != null) {\n const date = new Date(this.screening.vorstellungszeit);\n dayInWeek = date.getDay();\n }\n\n let dayKey = '-';\n switch (dayInWeek) {\n case 0: {\n dayKey = 'Day_Sunday';\n break;\n }\n case 1: {\n dayKey = 'Day_Monday';\n break;\n }\n case 2: {\n dayKey = 'Day_Tuesday';\n break;\n }\n case 3: {\n dayKey = 'Day_Wednesday';\n break;\n }\n case 4: {\n dayKey = 'Day_Thursday';\n break;\n }\n case 5: {\n dayKey = 'Day_Friday';\n break;\n }\n case 6: {\n dayKey = 'Day_Saturday';\n break;\n }\n }\n return this.translation.translate(dayKey);\n }\n\n sortSeatsByX(selectedSeats: Sitz[]): Sitz[] {\n return selectedSeats.sort((a, b) => {\n const x1 = a.x;\n const x2 = b.x;\n\n if (x1 < x2) {\n return -1;\n } else if (x1 > x2) {\n return 1;\n }\n return 0;\n });\n }\n\n get isMitarbeiter(): boolean {\n const user = this.globals.getUser();\n if (user == null) {\n return false;\n }\n\n const isMitarbeiter = this.userService.hasUserRight(user, UserRight.Mitarbeiter);\n const isAdmin = this.userService.hasUserRight(user, UserRight.Admin);\n return isMitarbeiter || isAdmin;\n }\n\n set bookingName(value: string) {\n this._bookingName = value;\n }\n\n get bookingName(): string {\n return this._bookingName;\n }\n\n set bookingPhone(value: string) {\n this._bookingPhone = value;\n }\n\n get bookingPhone(): string {\n return this._bookingPhone;\n }\n\n set bookingEmail(value: string) {\n this._bookingEmail = value;\n }\n\n get bookingEmail(): string {\n return this._bookingEmail;\n }\n\n get childAgeLimit(): string {\n return this.startupService.getConfig().childAgeLimit.toFixed(0);\n }\n\n cancelBooking(): void {\n const url = this.startupService.getConfig().bookingCancelUrl;\n this.document.location.href = url;\n }\n\n isActive(screening: Vorstellung): boolean {\n const screeningDate = new Date(screening.vorstellungszeit);\n const currentDate = Date.now();\n\n const diffMilliseconds = screeningDate.getTime() - currentDate;\n const targetMillis = this.startupService.getConfig().bookingTimeLimit * 60 * 1000;\n\n const isActiveTime = targetMillis < diffMilliseconds;\n const isActiveSetting = screening.reservierungsEinstellung !== 'Gesperrt';\n return isActiveTime && isActiveSetting;\n }\n\n get useBlockLogic(): boolean {\n return this.startupService.getConfig().useBlockLogic;\n }\n\n public isSeatCountSelected(countTickets: number, seatCountNumber: number): boolean {\n return this.countTickets >= seatCountNumber;\n }\n\n public isSeatCountChildrenSelected(countTickets: number, seatCountNumber: number): boolean {\n return this.countChildren >= seatCountNumber;\n }\n\n public selectSeatCount(seatCount: number): void {\n this.countTickets = seatCount;\n }\n\n public selectSeatCountChildren(seatCount: number): void {\n this.countChildren = seatCount;\n }\n\n public get showIcons(): boolean {\n return true;\n // return this.startupService.getConfig().maxSeatsInBooking <= 8;\n }\n\n get countTicketsSold(): number {\n let countSold = 0;\n\n for (const book of this.bookings) {\n if (book.status === Reservierungsstatus.VerkauftInternet || book.status === Reservierungsstatus.VerkauftKasse || book.status === Reservierungsstatus.AusgedrucktInternet) {\n countSold += book.anzahlErwachsene;\n countSold += book.anzahlKinder;\n }\n }\n\n return countSold;\n }\n\n get countTicketsBooked(): number {\n let countBooked = 0;\n\n for (const book of this.bookings) {\n if (book.status === Reservierungsstatus.InternetReserviert || book.status === Reservierungsstatus.Reserviert) {\n countBooked += book.anzahlErwachsene;\n countBooked += book.anzahlKinder;\n }\n }\n\n return countBooked;\n }\n\n get doubleBookedSeatsString(): string {\n let result = '';\n for (const seat of this.doubleBookedSeats) {\n result = result + seat.id + ' ';\n }\n return result;\n }\n\n get hasCustomHtml(): boolean {\n if (this.screening != null)\n {\n return this.screening.customHtml != null && this.screening.customHtml.length > 0;\n }\n return false;\n }\n\n get isSeating(): boolean { return this._isSeating; }\n}\n","import { Component, OnChanges, SimpleChanges, Input, Output, EventEmitter, NgZone, HostListener } from '@angular/core';\nimport { Vorstellung } from '../../../models/vorstellung';\nimport { PreisSchema } from '../../../models/preisSchema';\nimport { Sitz } from '../../../models/sitz';\nimport { SitzTyp } from '../../../models/enums/sitzTyp';\nimport { L10nTranslationService } from 'angular-l10n';\nimport { Reservierung } from '../../../models/reservierung';\nimport { StartupService } from '../../../services/startup.service';\nimport { Kategorie } from '../../../models/kategorie';\nimport { Reservierungsstatus } from '../../../models/enums/reservierungsstatus';\nimport Konva from 'konva';\n\n\n@Component({\n selector: 'app-seating-plan',\n templateUrl: './seating-plan.component.html'\n})\nexport class SeatingPlanComponent implements OnChanges {\n @Input()\n screening: Vorstellung;\n\n @Input()\n pricing: PreisSchema;\n\n @Input()\n booking: Reservierung;\n\n @Input()\n bookings: Reservierung[] = [];\n\n @Input()\n selectedSeats: Sitz[] = [];\n\n @Output()\n seatSelectedChanged = new EventEmitter<[number, number]>();\n\n // konva stage object\n _stage: Konva.Stage = null;\n\n // internal values\n canvasWidthMax = 750;\n canvasHeightMax = 500;\n legendWidth = 200;\n legendHeight = 200;\n _canvasWidth = 10; // never go below, iOS ...\n _canvasHeight = 10; // never go below, iOS ...\n seatingWidth = 0;\n\n tileWidthMax = 30;\n tileHeightMax = 40;\n seatSizeMax = 30;\n fontSizeMax = 16;\n\n seatSize = this.seatSizeMax;\n fontSize = this.fontSizeMax;\n fontSizeHeader = this.fontSizeMax + 4;\n tileWidth = this.tileWidthMax;\n tileHeight = this.tileHeightMax;\n lineHeight = 25;\n legendTileWidth = 20;\n fontSizeLegend = 15;\n fontSizeLegendHeader = 20;\n tileWidthLegend = 20;\n\n spacerColumnsLeft = 2;\n spacerColumnsRight = 1;\n spacerRowsTop = 2;\n spacerRowsBottom = 0;\n\n // helpers to determine if legend should be drawn\n showLegend: boolean;\n\n constructor(private startupService: StartupService,\n private translation: L10nTranslationService, private ngZone: NgZone) { }\n\n get canvasWidth(): number {\n return this._canvasWidth;\n }\n\n set canvasWidth(value: number) {\n if (value <= 0) {\n this._canvasWidth = 10;\n } else if (value !== this._canvasWidth) {\n this._canvasWidth = value;\n }\n }\n\n get canvasHeight(): number {\n return this._canvasHeight;\n }\n\n set canvasHeight(value: number) {\n if (value <= 0) {\n this._canvasHeight = 10;\n } else if (value !== this._canvasHeight) {\n this._canvasHeight = value;\n }\n }\n\n @HostListener('window:resize', ['$event'])\n onSizeChanged(event) {\n if (this.screening != null && this.pricing != null && this.selectedSeats != null && this.booking != null) {\n this.drawSeats();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.screening != null && this.pricing != null && this.selectedSeats != null && this.booking != null) {\n this.drawSeats();\n }\n }\n\n onSeatClicked(event: any): void {\n // the callback is not within the angular zone, so dispatch call into it\n if (event.target != null) {\n const clickedX = event.target.attrs.x;\n const clickedY = event.target.attrs.y;\n const comp = event.currentTarget.attrs.component;\n\n const stepWidth = comp.tileWidth;\n const stepHeight = comp.tileHeight;\n\n const x = Math.floor((clickedX / stepWidth) - comp.spacerColumnsLeft);\n const y = Math.floor((clickedY / stepHeight) - comp.spacerRowsTop);\n\n if (x < 0 || y < 0) {\n return;\n }\n comp.seatSelectedChanged.emit([x, y]);\n }\n }\n\n /*\n * Draw all seats\n */\n private drawSeats(): void {\n if (this.screening != null && this.pricing != null) {\n // resize canvas to size of the hall\n this.updateCanvasSize();\n\n // create layers\n const staticLayer = new Konva.Layer();\n const seatsLayer = new Konva.Layer();\n\n // draw screen (\"leinwand\") at the top\n if (this.startupService.getConfig().drawScreen) {\n this.drawScreen(staticLayer);\n }\n\n // draw legend\n this.drawLegend(staticLayer);\n\n // draw seats, except placeholders\n for (const seat of this.screening.sitze) {\n this.drawSeat(seat, seatsLayer);\n }\n\n // add layers\n this._stage.add(seatsLayer);\n this._stage.add(staticLayer);\n\n // render hall\n this._stage.draw();\n }\n }\n\n /*\n * Draws the screen on top of the image\n */\n private drawScreen(layer: Konva.Layer): void {\n // calculate basic corner points of the screen\n const lineWidth = Math.floor(this.seatingWidth * 0.95);\n const x = Math.floor((this.seatingWidth - lineWidth) / 2);\n const y = Math.floor(this.tileHeight / 4);\n const width = lineWidth;\n const height = y - Math.floor(y * 1.5);\n\n const rect = new Konva.Rect({\n x: y,\n y: y,\n width: width,\n height: height,\n fill: 'transparent',\n stroke: 'black',\n strokeWidth: 2\n });\n layer.add(rect);\n\n // draw screen label\n const screenLabel = this.createText(this.translation.translate('ScreeningInfo_Screen'), x + (width / 2) - (this.tileWidth * 1.25), y * 2, false);\n layer.add(screenLabel);\n }\n\n /*\n * Draws a single seat\n */\n private drawSeat(seat: Sitz, layer: Konva.Layer): void {\n // get seat color and if it is already booked\n const seatColor = this.selectSeatColor(seat);\n\n const startX = Math.floor((seat.x + this.spacerColumnsLeft) * this.tileWidth);\n const endX = Math.floor(startX + this.tileWidth);\n\n const startY = Math.floor((seat.y + this.spacerRowsTop) * this.tileHeight);\n const endY = Math.floor(startY + this.seatSize);\n const seatSize = Math.floor(this.seatSize);\n const tileWidth = Math.floor(this.tileWidth);\n\n // row number label if first seat in row\n if (seat.x === 1 && seat.reihe !== 0) {\n const rowText = '' + seat.reihe;\n const rowMarker = this.createText(rowText, startX - this.tileWidth, startY, false);\n layer.add(rowMarker);\n }\n\n // stop if placeholder\n if (seat.typ === SitzTyp.Platzhalter) {\n return;\n }\n\n // seat box\n const seatBox = this.createRect(startX, startY, seatSize, seatSize, seatColor, 1.0);\n layer.add(seatBox);\n\n // category bar\n const category = this.getCategory(seat);\n if (category != null) {\n const categoryBox = this.createRect(startX, startY + (seatSize / 1.5), tileWidth, seatSize / 3, category.farbe, 0.5);\n layer.add(categoryBox);\n }\n\n // draw seat border as poly\n let offsetYLeft = 0;\n if (seat.typ === SitzTyp.PartnerRechts) {\n offsetYLeft += this.seatSize / 2;\n }\n let offsetYRight = 0;\n if (seat.typ === SitzTyp.PartnerLinks) {\n offsetYRight += this.seatSize / 2;\n }\n\n const border = this.createLine([startX + 0.5, startY + 0.5 + offsetYLeft, startX + 0.5, endY + 0.5, endX + 0.5, endY + 0.5, endX + 0.5, startY + 0.5 + offsetYRight], 'black');\n layer.add(border);\n }\n\n /*\n * Draw legend\n */\n private drawLegend(layer: Konva.Layer): void {\n\n if (this.showLegend) {\n // header\n const header = this.createTextLegend('Legende', this.seatingWidth, 0, true);\n layer.add(header);\n\n // first: seating legend\n this.drawSeatingLegend(layer);\n\n // then draw pricing categories\n this.drawCategoriesLegend(layer);\n }\n }\n\n /*\n * Draw legend for seating\n */\n private drawSeatingLegend(layer: Konva.Layer): void {\n const showSmoker = this.startupService.getConfig().showSmokerLegend && this.screening.rauchervorstellung;\n const xCol0 = this.seatingWidth;\n const xCol1 = +xCol0 + (showSmoker ? 150 : 100);\n let y = this.lineHeight + 10;\n\n // free non-smoker\n const freeNonLabel = showSmoker ? this.translation.translate('ScreeningInfo_LegendFreeNonSmoker') : this.translation.translate('ScreeningInfo_LegendFree');\n const freeNonSmokerSeat = this.createRect(xCol1, y, this.tileWidthLegend, this.tileWidthLegend, '#a4ffa2', 1);\n const freeNonSmokerBorder = this.createLine([xCol1 + 0.5, y + 0.5, xCol1 + 0.5, y + 0.5 + this.tileWidthLegend, xCol1 + 0.5 + this.tileWidthLegend, y + 0.5 + this.tileWidthLegend, xCol1 + 0.5 + this.tileWidthLegend, y + 0.5], 'black');\n const freeNonText = this.createTextLegend(freeNonLabel, xCol0, y, false);\n layer.add(freeNonSmokerSeat);\n layer.add(freeNonSmokerBorder);\n layer.add(freeNonText);\n\n // next line\n y += this.lineHeight;\n\n // free smoker\n if (showSmoker) {\n const freeSmokerSeat = this.createRect(xCol1, y, this.tileWidthLegend, this.tileWidthLegend, '#99CC99', 1);\n const freeSmokerBorder = this.createLine([xCol1 + 0.5, y + 0.5, xCol1 + 0.5, y + 0.5 + this.tileWidthLegend, xCol1 + 0.5 + this.tileWidthLegend, y + 0.5 + this.tileWidthLegend, xCol1 + 0.5 + this.tileWidthLegend, y + 0.5], 'black');\n const freeText = this.createTextLegend(this.translation.translate('ScreeningInfo_LegendFreeSmoker') , xCol0, y, false);\n layer.add(freeSmokerSeat);\n layer.add(freeSmokerBorder);\n layer.add(freeText);\n\n // next line\n y += this.lineHeight;\n }\n\n // occupied\n const occupiedText = this.createTextLegend(this.translation.translate('ScreeningInfo_LegendOccupied') , xCol0, y, false);\n const occupiedSeat = this.createRect(xCol1, y, this.tileWidthLegend, this.tileWidthLegend, '#ff977b', 1);\n const occupiedBorder = this.createLine([xCol1 + 0.5, y + 0.5, xCol1 + 0.5, y + 0.5 + this.tileWidthLegend, xCol1 + 0.5 + this.tileWidthLegend, y + 0.5 + this.tileWidthLegend, xCol1 + 0.5 + this.tileWidthLegend, y + 0.5], 'black');\n layer.add(occupiedText);\n layer.add(occupiedSeat);\n layer.add(occupiedBorder);\n\n // next line\n y += this.lineHeight;\n\n // blocked\n const blockedText = this.createTextLegend(this.translation.translate('ScreeningInfo_LegendBlocked') , xCol0, y, false);\n const blockedSeat = this.createRect(xCol1, y, this.tileWidthLegend, this.tileWidthLegend, '#ABB2B9', 1);\n const blockedBorder = this.createLine([xCol1 + 0.5, y + 0.5, xCol1 + 0.5, y + 0.5 + this.tileWidthLegend, xCol1 + 0.5 + this.tileWidthLegend, y + 0.5 + this.tileWidthLegend, xCol1 + 0.5 + this.tileWidthLegend, y + 0.5], 'black');\n layer.add(blockedText);\n layer.add(blockedSeat);\n layer.add(blockedBorder);\n\n // next line\n y += this.lineHeight;\n\n // selected\n const selectedText = this.createTextLegend(this.translation.translate('ScreeningInfo_LegendSelected') , xCol0, y, false);\n const selectedSeat = this.createRect(xCol1, y, this.tileWidthLegend, this.tileWidthLegend, '#00a9ff', 1);\n const selectedBorder = this.createLine([xCol1 + 0.5, y + 0.5, xCol1 + 0.5, y + 0.5 + this.tileWidthLegend, xCol1 + 0.5 + this.tileWidthLegend, y + 0.5 + this.tileWidthLegend, xCol1 + 0.5 + this.tileWidthLegend, y + 0.5], 'black');\n layer.add(selectedSeat);\n layer.add(selectedText);\n layer.add(selectedBorder);\n\n // next line\n y += this.lineHeight;\n\n // normal seat\n const normalText = this.createTextLegend(this.translation.translate('ScreeningInfo_LegendNormal') , xCol0, y, false);\n const normalSeat = this.createRect(xCol1, y, this.tileWidthLegend, this.tileWidthLegend, '#a4ffa2', 1);\n const normalBorder = this.createLine([xCol1 + 0.5, y + 0.5, xCol1 + 0.5, y + 0.5 + this.tileWidthLegend, xCol1 + 0.5 + this.tileWidthLegend, y + 0.5 + this.tileWidthLegend, xCol1 + 0.5 + this.tileWidthLegend, y + 0.5], 'black');\n layer.add(normalText);\n layer.add(normalSeat);\n layer.add(normalBorder);\n\n // next line\n y += this.lineHeight;\n\n // partner seat\n if (!this.startupService.getConfig().useBlockLogic) {\n const partnerText = this.createTextLegend(this.translation.translate('ScreeningInfo_LegendPartner') , xCol0, y, false);\n const partnerLeftSeat = this.createRect(xCol1, y, this.tileWidthLegend, this.tileWidthLegend, '#a4ffa2', 1);\n const partnerLeftBorder = this.createLine([xCol1 + 0.5, y + 0.5, xCol1 + 0.5, y + 0.5 + this.tileWidthLegend, xCol1 + 0.5 + this.tileWidthLegend, y + 0.5 + this.tileWidthLegend, xCol1 + 0.5 + this.tileWidthLegend, y + 0.5 + (this.tileWidthLegend / 2)], 'black');\n const partnerRightSeat = this.createRect(xCol1 + this.tileWidthLegend, y, this.tileWidthLegend, this.tileWidthLegend, '#a4ffa2', 1);\n const partnerRightBorder = this.createLine([xCol1 + 0.5 + this.tileWidthLegend, y + 0.5 + (this.tileWidthLegend / 2), xCol1 + this.tileWidthLegend + 0.5, y + 0.5 + this.tileWidthLegend, xCol1 + this.tileWidthLegend + 0.5 + this.tileWidthLegend, y + 0.5 + this.tileWidthLegend, xCol1 + this.tileWidthLegend + 0.5 + this.tileWidthLegend, y + 0.5], 'black');\n\n layer.add(partnerText);\n layer.add(partnerLeftSeat);\n layer.add(partnerLeftBorder);\n layer.add(partnerRightSeat);\n layer.add(partnerRightBorder);\n }\n }\n\n /*\n * Calculates canvas size based on hall size (number of rows and columns)\n */\n private updateCanvasSize(): void {\n // set all values to max\n this.tileHeight = this.tileHeightMax;\n this.tileWidth = this.tileWidthMax;\n this.seatSize = this.seatSizeMax;\n this.fontSize = this.fontSizeMax;\n\n const screenWidth = screen.width;\n this.showLegend = screenWidth > 750;\n\n // get width of window and adjust maximum width accordingly\n this.canvasWidthMax = this.showLegend ? window.innerWidth - this.legendWidth - 50 : window.innerWidth - 125;\n if (this.canvasWidthMax > 750) {\n this.canvasWidthMax = 750;\n } else if (this.canvasWidthMax < 150) {\n this.canvasWidthMax = 150;\n }\n\n // if no screening available, just shortcut out of here\n if (this.screening == null) {\n this.canvasWidth = this.canvasWidthMax;\n this.canvasHeight = this.canvasHeightMax;\n return;\n }\n\n // store data in here\n let canvasWidthResult = this.canvasWidth;\n let canvasHeightResult = this.canvasHeight;\n\n // calculate maximum number of seats on x and y => find out number of rows and columns\n let xMax = 0;\n let yMax = 0;\n\n for (const sitz of this.screening.sitze) {\n if (sitz.x > xMax) {\n xMax = sitz.x;\n }\n if (sitz.y > yMax) {\n yMax = sitz.y;\n }\n }\n\n // add spacer rows for bottom and top (i.e. space for screen)\n const rows = yMax + this.spacerRowsBottom + this.spacerRowsTop + 1;\n\n // +3 because 0-9 = 10, and we need 1 spacer on the left and one on the right\n const columns = xMax + this.spacerColumnsLeft + this.spacerColumnsRight + 1;\n\n // calculate canvas size\n canvasWidthResult = columns * this.tileWidth;\n canvasHeightResult = rows * this.tileHeight;\n\n // if canvas too high => resize down to max height and resize width accordingly\n if (canvasHeightResult > this.canvasHeightMax) {\n canvasHeightResult = this.canvasHeightMax;\n this.tileHeight = Math.floor(this.canvasHeightMax / rows);\n\n // calculate percentage of original size to adapt width\n const sizePerc = this.tileHeight / this.tileHeightMax;\n\n // calculate new tile sizes\n this.tileWidth = Math.floor(this.tileWidthMax * sizePerc);\n this.seatSize = Math.floor(this.seatSizeMax * sizePerc);\n this.fontSize = Math.floor(this.fontSizeMax * sizePerc);\n\n // re-calc width\n canvasWidthResult = columns * this.tileWidth;\n }\n\n // if canvas too wide => resize down to max width and resize height accordingly\n\n if (canvasWidthResult > this.canvasWidthMax) {\n canvasWidthResult = this.canvasWidthMax;\n this.tileWidth = Math.floor(this.canvasWidthMax / columns);\n\n // calculate percentage of original size to adapt height\n const sizePerc = this.tileWidth / this.tileWidthMax;\n\n // calculate new tile sizes\n this.tileHeight = Math.floor(this.tileHeightMax * sizePerc);\n this.seatSize = Math.floor(this.seatSizeMax * sizePerc);\n this.fontSize = Math.floor(this.fontSizeMax * sizePerc);\n\n // re-calc height\n canvasHeightResult = rows * this.tileHeight;\n }\n\n // now add width for legend and if height is not enough increase to minimum for legend\n this.seatingWidth = canvasWidthResult; // store seating width for calculation on where the legend starts\n\n if (this.showLegend) {\n canvasWidthResult += this.legendWidth;\n if (canvasHeightResult < this.legendHeight) {\n canvasHeightResult = this.legendHeight;\n }\n }\n\n this.canvasWidth = canvasWidthResult;\n this.canvasHeight = canvasHeightResult;\n\n // now create stage\n this._stage = new Konva.Stage({\n container: 'seatingPlanContainer',\n width: this.canvasWidth,\n height: this.canvasHeight\n });\n this._stage.setAttr('component', this);\n this._stage.on('click touchend', this.onSeatClicked);\n }\n\n /*\n * Draws the categories in the legend\n */\n private drawCategoriesLegend(layer: Konva.Layer): void {\n // do not draw for Geierwally in 2021\n // TODO check again in 2022\n console.log(this.screening.vorstellungszeit.getFullYear());\n if (this.startupService.getConfig().useBlockLogic && this.screening.vorstellungszeit.getFullYear() === 2021) {\n return;\n }\n\n\n // calc starting positions\n let y = (this.lineHeight * 7) + 10;\n const showSmoker = this.startupService.getConfig().showSmokerLegend;\n const xCol0 = this.seatingWidth;\n const xCol1 = +xCol0 + (showSmoker ? 150 : 100);\n\n // draw all legends\n for (const scheme of this.pricing.kategorien) {\n const isCategoryUsed = this.isCategoryUsed(scheme);\n if (isCategoryUsed && scheme.name !== '') {\n // seat box is background so that color is exactly the same as in the seating plan\n const text = this.createTextLegend(scheme.name, xCol0, y, false);\n const seatBox = this.createRect(xCol1, y + (this.tileWidthLegend * 0.3), this.tileWidthLegend, this.tileWidthLegend / 4, '#a4ffa2', 1.0);\n const catBox = this.createRect(xCol1, y + (this.tileWidthLegend * 0.3), this.tileWidthLegend, this.tileWidthLegend / 4, scheme.farbe, 0.5);\n layer.add(seatBox);\n layer.add(catBox);\n layer.add(text);\n\n y += this.lineHeight;\n }\n }\n }\n\n private isCategoryUsed(category: Kategorie): boolean {\n for (const seat of this.screening.sitze) {\n if (seat.kategorieId === category.id) {\n return true;\n }\n }\n return false;\n }\n\n private createRect(\n left: number,\n top: number,\n width: number,\n height: number,\n color: string,\n opacity: number\n ): Konva.Rect {\n const rect = new Konva.Rect({\n x: left,\n y: top,\n fill: color,\n width: width,\n height: height,\n strokeWidth: 1,\n opacity: opacity\n });\n\n return rect;\n }\n\n /*\n * Fabric line requires coordinates as an array with 4 values, x,y start and x,y end\n * i.e. [10, 15, 27, 27] -> line from 10/15 to 27/27\n */\n private createLine(coords: number[], color: string): Konva.Line {\n const line = new Konva.Line({\n points: coords,\n stroke: color,\n strokeWidth: 1,\n shadowForStrokeEnabled: false,\n shadowEnabled: false,\n opacity: 1,\n lineCap: 'butt'\n });\n return line;\n }\n\n private createText(content: string, left: number, top: number, isHeader: boolean): Konva.Text {\n const fontSize = isHeader ? this.fontSizeHeader : this.fontSize;\n const text = new Konva.Text({\n x: left,\n y: top,\n text: content,\n fontSize: fontSize,\n fontFamily: 'Arial',\n fill: 'black'\n });\n return text;\n }\n\n private createTextLegend(content: string, left: number, top: number, isHeader: boolean): Konva.Text {\n const fontSize = isHeader ? this.fontSizeHeader : this.fontSize;\n const text = new Konva.Text({\n x: left,\n y: top,\n text: content,\n fontSize: fontSize,\n fontFamily: 'Arial',\n fill: 'black'\n });\n return text;\n }\n\n private getCategory(seat: Sitz) {\n if (this.pricing != null) {\n for (const cat of this.pricing.kategorien) {\n if (cat.id === seat.kategorieId) {\n return cat;\n }\n }\n }\n\n return null;\n }\n\n private isSeatSelected(seat: Sitz): boolean {\n const index = this.selectedSeats.indexOf(seat);\n return index > -1;\n }\n\n private isSeatAlreadyBooked(seat: Sitz): boolean {\n const index = this.booking.sitzIds.indexOf(seat.id);\n return index > -1;\n }\n\n private selectSeatColor(seat: Sitz): string {\n if (this.bookings != null && this.bookings.length > 0) {\n // get booking for seat\n const book = this.getBookingForSeat(seat);\n if (book != null) {\n // not determine color based in real state\n if (book.status === Reservierungsstatus.Reserviert) {\n return '#fedf69';\n } else if (book.status === Reservierungsstatus.InternetReserviert) {\n return '#00ffff';\n } else if (book.status === Reservierungsstatus.VerkauftKasse) {\n return '#ff6347';\n } else if (book.status === Reservierungsstatus.VerkauftInternet) {\n return '#ff0000';\n } else if (book.status === Reservierungsstatus.Vorgemerkt) {\n return '#ffa500';\n } else if (book.status === Reservierungsstatus.AusgedrucktInternet) {\n return '#8b0000';\n } else if (book.status === Reservierungsstatus.Gesperrt) {\n return '#ABB2B9';\n }\n }\n }\n\n if (this.isSeatAlreadyBooked(seat)) {\n return '#ff977b';\n } else if (this.isSeatSelected(seat)) {\n return '#00a9ff';\n } else {\n return seat.istRaucher ? '#99CC99' : '#a4ffa2';\n }\n }\n\n private createSeatTooltip(seat: Sitz): string {\n const book = this.getBookingForSeat(seat);\n let tooltip = '';\n\n if (book != null) {\n\n let status = '';\n if (book.status === Reservierungsstatus.Reserviert) {\n status = 'Reserviert';\n } else if (book.status === Reservierungsstatus.InternetReserviert) {\n status = 'InternetReserviert';\n } else if (book.status === Reservierungsstatus.VerkauftKasse) {\n status = 'VerkauftKasse';\n } else if (book.status === Reservierungsstatus.VerkauftInternet) {\n status = 'VerkauftInternet';\n } else if (book.status === Reservierungsstatus.Vorgemerkt) {\n status = 'Vorgemerkt';\n } else if (book.status === Reservierungsstatus.AusgedrucktInternet) {\n status = 'AusgedrucktInternet';\n }\n\n tooltip = 'Code: ' + book.reservierungsCode + ', ' + status;\n }\n\n return tooltip;\n }\n\n private getBookingForSeat(seat: Sitz): Reservierung {\n if (this.bookings != null && this.bookings.length > 0) {\n // get booking for seat\n for (const book of this.bookings) {\n for (const seatId of book.sitzIds) {\n if (seatId === seat.id) {\n return book;\n }\n }\n }\n }\n\n return null;\n }\n}\n","import { Component, HostListener, Input, OnChanges, SimpleChanges } from \"@angular/core\";\r\nimport Konva from \"konva\";\r\nimport { Vorstellung } from \"../../../models/vorstellung\";\r\n\r\n@Component({\r\n selector: 'app-standing-info',\r\n templateUrl: './standing-info.component.html'\r\n })\r\n export class StandingInfoComponent implements OnChanges {\r\n @Input()\r\n screening: Vorstellung;\r\n\r\n @Input()\r\n availableStandingTickets: number;\r\n \r\n // konva stage object\r\n _stage: Konva.Stage = null;\r\n\r\n canvasWidthMax = 300;\r\n canvasHeightMax = 300;\r\n _canvasWidth = 10; // never go below, iOS ...\r\n _canvasHeight = 10; // never go below, iOS ...\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onSizeChanged(event) {\r\n if (this.screening != null) {\r\n this.drawStandingArea();\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.screening != null) {\r\n this.drawStandingArea();\r\n }\r\n }\r\n\r\n private drawStandingArea(): void {\r\n if(this.screening) {\r\n // resize canvas to size of the hall\r\n this.updateCanvasSize();\r\n \r\n // create layers\r\n const staticLayer = new Konva.Layer();\r\n\r\n // draw placeholder\r\n // const backgroundBox = this.createRect(10, 10, 280, 280, '#00a9ff', 1.0);\r\n // staticLayer.add(backgroundBox);\r\n const border = new Konva.Rect({\r\n x: 10,\r\n y: 10,\r\n width: this._canvasWidth - 20,\r\n height: this._canvasHeight - 20,\r\n fill: '#a4ffa2',\r\n stroke: 'black',\r\n strokeWidth: 2\r\n });\r\n staticLayer.add(border);\r\n\r\n // draw placeholder text\r\n const header = this.createText(\"Stehplätze\", 15, 15, true);\r\n staticLayer.add(header);\r\n const info1 = this.createText(`${this.availableStandingTickets} von ${this.screening.anzahlStehplaetze} Stehplätzen`, 15, 40, false);\r\n const info2 = this.createText(`verfügbar.`, 15, 65, false);\r\n staticLayer.add(info1);\r\n staticLayer.add(info2);\r\n \r\n // render hall\r\n this._stage.add(staticLayer);\r\n this._stage.draw();\r\n }\r\n }\r\n\r\n private updateCanvasSize(): void {\r\n const screenWidth = screen.width;\r\n\r\n this._canvasWidth = window.innerWidth - 125;\r\n if (this._canvasWidth > 300) {\r\n this._canvasWidth = 300;\r\n } else if (this._canvasWidth < 150) {\r\n this._canvasWidth = 150;\r\n }\r\n this._canvasHeight = this._canvasWidth;\r\n \r\n // now create stage\r\n this._stage = new Konva.Stage({\r\n container: 'standingPlaceholderContainer',\r\n width: this._canvasWidth,\r\n height: this._canvasHeight\r\n });\r\n this._stage.setAttr('component', this);\r\n }\r\n\r\n private createRect(\r\n left: number,\r\n top: number,\r\n width: number,\r\n height: number,\r\n color: string,\r\n opacity: number\r\n ): Konva.Rect {\r\n const rect = new Konva.Rect({\r\n x: left,\r\n y: top,\r\n fill: color,\r\n width: width,\r\n height: height,\r\n strokeWidth: 1,\r\n opacity: opacity\r\n });\r\n\r\n return rect;\r\n }\r\n\r\n private createText(content: string, left: number, top: number, isHeader: boolean): Konva.Text {\r\n const fontSize = isHeader ? 20 : 16;\r\n const text = new Konva.Text({\r\n x: left,\r\n y: top,\r\n text: content,\r\n fontSize: fontSize,\r\n fontFamily: 'Arial',\r\n fill: 'black'\r\n });\r\n return text;\r\n }\r\n\r\n \r\n }","import { Pipe, PipeTransform, Injectable } from '@angular/core';\nimport { DatePipe } from '@angular/common';\n\n@Pipe({\n name: 'dateFormat'\n})\n@Injectable()\nexport class DateFormatPipe extends DatePipe implements PipeTransform {\n transform(value: any, args?: any): any {\n return super.transform(value, 'dd.MM.yyyy');\n }\n}\n","export class OwnMath {\n public static round(value: number, decimals: number): number {\n const multiplier = Math.pow(10, decimals);\n\n const result = Math.round(value * multiplier) / multiplier;\n return result;\n }\n}\n","import { Pipe, PipeTransform, Injectable } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safe'\n})\n@Injectable()\nexport class SafePipe implements PipeTransform {\n\n constructor(protected sanitizer: DomSanitizer) {}\n\n public transform(value: any, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n switch (type) {\n case 'html':\n return this.sanitizer.bypassSecurityTrustHtml(value);\n case 'style':\n return this.sanitizer.bypassSecurityTrustStyle(value);\n case 'script':\n return this.sanitizer.bypassSecurityTrustScript(value);\n case 'url':\n return this.sanitizer.bypassSecurityTrustUrl(value);\n case 'resourceUrl':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n default:\n throw new Error(`Invalid safe type specified: ${type}`);\n }\n }\n}\n","import { Pipe, PipeTransform, Injectable } from '@angular/core';\nimport { DatePipe } from '@angular/common';\n\n@Pipe({\n name: 'timeFormat'\n})\n@Injectable()\nexport class TimeFormatPipe extends DatePipe implements PipeTransform {\n transform(value: any, args?: any): any {\n return super.transform(value, 'HH:mm');\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { DataService } from '../services/storage.service';\n\n@Injectable()\nexport class AuthAdminGuard implements CanActivate {\n\n constructor(private router: Router, private storage: DataService, private jwtHelper: JwtHelperService) { }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n if (this.storage.hasToken()) {\n const token = this.storage.token;\n\n const isExpired = this.jwtHelper.isTokenExpired(token);\n const decodedToken = this.jwtHelper.decodeToken(token);\n if (!isExpired && (decodedToken.Admin || decodedToken.Mitarbeiter || decodedToken.Kinoprogramm)) {\n return true;\n }\n }\n\n // not logged in so redirect to login page with the return url\n this.router.navigate(['/login'], { queryParams: { returnUrl: state.url }});\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { DataService } from '../services/storage.service';\n\n@Injectable()\nexport class AuthGuard implements CanActivate {\n\n constructor(private router: Router, private storage: DataService, private jwtHelper: JwtHelperService) { }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n if (this.storage.hasToken()) {\n const token = this.storage.token;\n const isExpired = this.jwtHelper.isTokenExpired(token);\n if (!isExpired) {\n return true;\n }\n }\n\n // not logged in so redirect to login page with the return url\n this.router.navigate(['/login'], { queryParams: { returnUrl: state.url }});\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { AuthenticationService } from '../services/authentication.service';\n\n@Injectable()\nexport class ErrorInterceptor implements HttpInterceptor {\n constructor(private authenticationService: AuthenticationService) {}\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n return next.handle(request).pipe(catchError(err => {\n if (err.status === 401) {\n // auto logout if 401 response returned from api\n this.authenticationService.logout(false);\n location.reload();\n } else if (err.status === 502) {\n // proxy error\n location.reload();\n }\n\n return throwError(err);\n }));\n }\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { L10nTranslationLoader, L10nProvider, L10nConfig } from 'angular-l10n';\nimport { HttpHeaders, HttpClient, HttpParams } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable() export class HttpTranslationLoader implements L10nTranslationLoader {\n\n private headers = new HttpHeaders({ 'Content-Type': 'application/json' });\n\n constructor(@Optional() private http: HttpClient) { }\n\n public get(language: string, provider: L10nProvider): Observable<{ [key: string]: any }> {\n const url = `${provider.asset}-${language}.json`;\n const options = {\n headers: this.headers,\n params: new HttpParams().set('v', provider.options.version)\n };\n return this.http.get(url, options);\n }\n}\n\n// config for localisation\nexport const l10nConfig: L10nConfig = {\n format: 'language-region',\n providers: [\n { name: 'locale', asset: './assets/localisation/locale', options: { version: '1.0.0' }},\n { name: 'user', asset: './assets/localisation/user', options: { version: '1.0.0' }},\n { name: 'configviewer', asset: './assets/localisation/configviewer', options: { version: '1.0.0' }},\n { name: 'screeninginfo', asset: './assets/localisation/screeninginfo', options: { version: '1.0.0' }},\n { name: 'program', asset: './assets/localisation/program', options: { version: '1.0.0' }},\n { name: 'nav', asset: './assets/localisation/nav', options: { version: '1.0.0' }},\n { name: 'payment', asset: './assets/localisation/payment', options: { version: '1.0.0' }},\n { name: 'admin', asset: './assets/localisation/admin', options: { version: '1.0.0' }}\n ],\n cache: true,\n fallback: false,\n keySeparator: '.',\n defaultLocale: { language: 'de-DE', timeZone: 'Europe/Berlin', currency: 'EUR' },\n schema: [\n { locale: { language: 'en-US', currency: 'USD', timeZone: 'Europe/Berlin' }, dir: 'ltr', text: 'United States' },\n { locale: { language: 'de-DE', currency: 'EUR', timeZone: 'Europe/Berlin' }, dir: 'ltr', text: 'Deutschand/Österreich/Schweiz' }\n ]\n};\n","import { Injectable } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { DataService } from '../services/storage.service';\n\n@Injectable()\nexport class JwtInterceptor implements HttpInterceptor {\n constructor(private storageService: DataService) { }\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n const token = this.storageService.token;\n if (token != null) {\n const clone = request.clone({\n setHeaders: {\n Authorization: 'Bearer ' + token\n }\n });\n return next.handle(clone);\n }\n return next.handle(request);\n }\n}\n","import { AbstractControl, ValidatorFn, UntypedFormGroup } from '@angular/forms';\n\nexport function passwordsEqualValidator(): ValidatorFn {\n return (control: AbstractControl): {[key: string]: any} | null => {\n const group = control;\n const password1 = group.controls['password1'].value;\n const password2 = group.controls['password2'].value;\n\n return password1 !== password2 ? {'passwordsEqual': {value: (password1 + '/' + password2)}} : null;\n };\n}\n\nexport function passwordsEqualValidatorIfRequired(): ValidatorFn {\n return (control: AbstractControl): {[key: string]: any} | null => {\n const group = control;\n const password1 = group.get('password1').value;\n const password2 = group.get('password2').value;\n const isRequired = group.get('changePassword').value;\n\n return (password1 !== password2 || password1.length === 0 || password2.length === 0)\n && isRequired ? {'passwordsEqual': {value: (password1 + '/' + password2)}} : null;\n };\n}\n","import { Vorstellung } from '../models/vorstellung';\nimport { Sitz } from '../models/sitz';\nimport { SaalArt } from '../models/enums/saalArt';\n\nexport class ScreeningSerializer {\n fromJson(json: any): Vorstellung {\n if (json == null) {\n return null;\n }\n\n const screening = new Vorstellung();\n screening.id = json.id;\n screening.vorstellungsId = json.vorstellungsId;\n screening.saalName = json.saalName;\n screening.filmId = json.filmId;\n screening.filmWocheId = json.filmWocheId;\n screening.preisSchemaId = json.preisSchemaId;\n screening.aufschlagAktiv = json.aufschlagAktiv;\n screening.aufschlagSumme = json.aufschlagSumme;\n screening.aufschlagText = json.aufschlagText;\n screening.aufschlagAktiv3D = json.aufschlagAktiv3D;\n screening.aufschlagSumme3D = json.aufschlagSumme3D;\n screening.aufschlagText3D = json.aufschlagText3D;\n screening.kinderTicketsErlaubt = json.kinderTicketsErlaubt;\n screening.bemerkung = json.bemerkung;\n screening.rauchervorstellung = json.rauchervorstellung;\n screening.reservierungsEinstellung = json.reservierungsEinstellung;\n screening.customHtml = json.customHtml;\n screening.anzahlStehplaetze = json.anzahlStehplaetze;\n if (json.saalArt === 'Sitzplaetze') {\n screening.saalArt = SaalArt.Sitzplaetze;\n } else if (json.saalArt === 'Stehplaetze') {\n screening.saalArt = SaalArt.Stehplaetze;\n } else if (json.saalArt === 'Gemischt') {\n screening.saalArt = SaalArt.Gemischt;\n }\n\n screening.sitze = [];\n for (const s of json.sitze) {\n const sitz = new Sitz();\n sitz.id = s.id;\n sitz.kategorieId = s.kategorieId;\n sitz.reihe = s.reihe;\n sitz.sitzplatzNummer = s.sitzplatzNummer;\n sitz.typ = s.typ;\n sitz.x = s.x;\n sitz.y = s.y;\n sitz.istRaucher = s.istRaucher;\n screening.sitze.push(sitz);\n }\n\n const valueVorstellung = json.vorstellungszeit;\n screening.vorstellungszeit = new Date(valueVorstellung);\n const valueEinlass = json.vorstellungszeit;\n screening.einlasszeit = new Date(valueEinlass);\n\n return screening;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { StartupService } from '../services/startup.service';\n\n@Injectable()\nexport class StaticPagesGuard implements CanActivate {\n\n constructor(private router: Router, private startupService: StartupService) { }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n const config = this.startupService.getConfig();\n if (!config.staticPagesActive) {\n // not logged in so redirect to login page with the return url\n this.router.navigate(['/']);\n return false;\n }\n\n return true;\n }\n}\n","export class CustomHtmlContent {\n key: string;\n content: string;\n}\n","export enum ComponentStatus {\n Unknown,\n Loading,\n Processing,\n Displaying,\n Warning,\n Error\n}\n","export enum Reservierungsstatus {\n Geloescht = 1,\n Reserviert = 2,\n VerkauftKasse = 3,\n InternetReserviert = 4,\n VerkauftInternet = 5,\n Vorgemerkt = 6,\n AusgedrucktInternet = 7,\n Gesperrt = 8,\n GescanntInternet = 9\n}\n","export enum SaalArt {\r\n Sitzplaetze = 'Sitzplaetze',\r\n Stehplaetze = 'Stehplaetze',\r\n Gemischt = 'Gemischt'\r\n}","export enum SitzTyp {\n Normal,\n PartnerRechts,\n PartnerLinks,\n Platzhalter\n}\n","export enum UserRegistrationResult {\n Success,\n DuplicateUser,\n EmptyPassword,\n EmptyEMailAdress\n}\n","export enum UserRight {\n // tslint:disable-next-line:no-bitwise\n None = 0,\n // tslint:disable-next-line:no-bitwise\n Activated = 1 << 0,\n // tslint:disable-next-line:no-bitwise\n Banned = 1 << 1,\n // tslint:disable-next-line:no-bitwise\n Booking = 1 << 2,\n // tslint:disable-next-line:no-bitwise\n Mitarbeiter = 1 << 3,\n // tslint:disable-next-line:no-bitwise\n Admin = 1 << 4,\n // tslint:disable-next-line:no-bitwise\n Kinoprogramm = 1 << 5\n}\n","export enum UserUpdateResult {\n Success,\n UserNotFound,\n NotAuthenticated\n}\n","import { User } from './user';\nimport { Subject } from 'rxjs';\n\nexport class Globals {\n private user: User;\n userSource: Subject = new Subject();\n userSource$ = this.userSource.asObservable();\n\n private autoLoginInProgress = false;\n autoLoginInProgressSource: Subject = new Subject();\n autoLoginInProgressSource$ = this.autoLoginInProgressSource.asObservable();\n\n setAutoLoginInProgress(inProgress: boolean): void {\n this.autoLoginInProgress = inProgress;\n this.autoLoginInProgressSource.next(inProgress);\n }\n\n isAutoLoginInProgress(): boolean {\n return this.autoLoginInProgress;\n }\n\n setUser(user: User): void {\n this.user = user;\n this.userSource.next(user);\n }\n\n getUser(): User {\n return this.user;\n }\n\n removeUser(): void {\n this.user = null;\n this.userSource.next(null);\n }\n\n isLoggedIn(): boolean {\n return this.user != null;\n }\n}\n","import { Kinoprogrammstatus } from './enums/kinoprogrammstatus';\nimport { Reservierungsstatus } from './enums/reservierungsstatus';\nimport { Zahlungsdienstleister } from './enums/zahlungsdienstleister';\n\nexport class Reservierung {\n constructor() {\n this.sitzIds = [];\n }\n\n id: string;\n userId: string;\n reservierungsName: string;\n reservierungsTelefon: string;\n reservierungsEmail: string;\n pdfName: string;\n reservierungBestaetigt: boolean;\n reservierungsCode: string;\n vorstellungsId: string;\n sitzIds: string[];\n reservierungszeitpunkt: Date;\n letzteAenderung: Date;\n kinoprogrammStatus: Kinoprogrammstatus;\n status: Reservierungsstatus;\n zahlungsreferenz: string;\n zahlungsdienstleister: Zahlungsdienstleister;\n zahlungsdienstleisterGebuehren: number;\n anzahlErwachsene: number;\n anzahlKinder: number;\n preisErwachsene: number;\n preisKinder: number;\n anzahlTicketDownloads: number;\n letzterTicketDownload: Date;\n isDeleted: boolean;\n anzahlGescannt: number;\n}\n","import { SitzTyp } from './enums/sitzTyp';\n\nexport class Sitz {\n id: string;\n x: number;\n y: number;\n reihe: number;\n sitzplatzNummer: number;\n kategorieId: number;\n typ: SitzTyp;\n istRaucher: boolean;\n}\n","import { UserRight } from './enums/userRight';\n\n// same fields in same order as in serverside UserDto\nexport class User {\n id: string;\n eMailAddress: string;\n userRights: UserRight;\n firstName: string;\n lastName: string;\n phoneNumber: string;\n newsletter: boolean;\n password: string;\n registered: Date;\n lastLogin: Date;\n token: string;\n failedLoginCount: number;\n}\n","import { SaalArt } from './enums/saalArt';\nimport { Sitz } from './sitz';\nexport class Vorstellung {\n constructor() {\n this.sitze = [];\n }\n\n id: string;\n stammKinoId: number;\n vorstellungsId: string;\n reservierungsEinstellung: string;\n saalName: string;\n vorstellungszeit: Date;\n einlasszeit: Date;\n filmId: string;\n filmWocheId: string;\n preisSchemaId: string;\n rauchervorstellung: boolean;\n bemerkung: boolean;\n aufschlagAktiv: boolean;\n aufschlagText: string;\n aufschlagSumme: number;\n aufschlagAktiv3D: boolean;\n aufschlagText3D: string;\n aufschlagSumme3D: number;\n kinderTicketsErlaubt: boolean;\n sitze: Sitz[];\n customHtml: string;\n saalArt: SaalArt;\n anzahlStehplaetze: number;\n}\n","import { NgModule } from '@angular/core';\nimport { SafePipe } from './helpers/SafePipe';\n\n @NgModule({\n imports: [],\n declarations: [SafePipe],\n exports: [SafePipe],\n })\n\n export class PipesModule {\n\n static forRoot() {\n return {\n ngModule: PipesModule,\n providers: [],\n };\n }\n }\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, Inject } from '@angular/core';\nimport { StartupService } from './startup.service';\n\n@Injectable()\nexport class AdminService {\n private baseUrl: string;\n\n constructor(@Inject('BASE_URL') baseUrl: string, private http: HttpClient, private startupService: StartupService) {\n this.baseUrl = baseUrl;\n }\n}\n","import { Globals } from './../models/globals';\nimport { Injectable, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { User } from '../models/user';\nimport { DataService } from './storage.service';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class AuthenticationService {\n private baseUrl: string;\n\n constructor(@Inject('BASE_URL') baseUrl: string, private http: HttpClient, private globals: Globals,\n private storageService: DataService) {\n this.baseUrl = baseUrl;\n }\n\n login(eMailAddress: string, password: string): Observable {\n return this.http.post(this.baseUrl + 'api/User/Authenticate', { eMailAddress: eMailAddress, password: password })\n .pipe(map(user => {\n // login successful if there's a jwt token in the response\n if (user && user.token) {\n this.storageService.token = user.token;\n this.globals.setUser(user);\n return user;\n }\n\n return null;\n }));\n }\n\n logout(deleteStorage: boolean): void {\n this.globals.removeUser();\n if (deleteStorage) {\n this.storageService.removeToken();\n }\n }\n}\n","import { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, Inject } from '@angular/core';\nimport { Reservierung } from '../models/reservierung';\nimport { Sitz } from '../models/sitz';\nimport { ScanResult } from '../models/scanResult';\n\n@Injectable()\nexport class BookingService {\n private baseUrl: string;\n\n constructor(@Inject('BASE_URL') baseUrl: string, private http: HttpClient) {\n this.baseUrl = baseUrl;\n }\n\n getOnlinePaid(): Observable {\n return this.http.get(this.baseUrl + 'api/Booking/OnlinePaid');\n }\n\n get(id: string): Observable {\n return this.http.get(this.baseUrl + 'api/Booking/Get/' + id);\n }\n\n create(booking: Reservierung): Observable {\n return this.http.post(this.baseUrl + 'api/Booking/Create', booking);\n }\n\n getOwn(): Observable {\n return this.http.get(this.baseUrl + 'api/Booking/Own');\n }\n\n confirm(bookingId: string): Observable {\n return this.http.get(this.baseUrl + 'api/Booking/Confirm/' + bookingId);\n }\n\n confirmCash(bookingId: string): Observable {\n return this.http.get(this.baseUrl + 'api/Booking/ConfirmCash/' + bookingId);\n }\n\n delete(bookingId: string): Observable {\n return this.http.get(this.baseUrl + 'api/Booking/Delete/' + bookingId);\n }\n\n getBookedSeatsForScreening(screeningId: string): Observable {\n return this.http.get(this.baseUrl + 'api/Booking/BookedSeatsForScreening/' + screeningId);\n }\n\n verifyPaymentPaypal(bookingId: string, paymentID: string): Observable {\n return this.http.get(this.baseUrl + 'api/Booking/VerifyPaymentPaypal/' + bookingId + '/' + paymentID);\n }\n\n getBookingsForScreening(screeningId: string): Observable {\n return this.http.get(this.baseUrl + 'api/Booking/ForScreening/' + screeningId);\n }\n\n getDoubleBookedSeatsForScreening(screeningId: string): Observable {\n return this.http.get(this.baseUrl + 'api/Booking/DoubleBookedSeatsForScreening/' + screeningId);\n }\n\n getBookingsForBlock(screeningId: string): Observable {\n return this.http.get(this.baseUrl + 'api/Booking/ForBlock/' + screeningId);\n }\n\n downloadTicket(bookingId: string): Observable {\n return this.http.get(this.baseUrl + 'api/Booking/PDFTicketForBooking/' + bookingId, { responseType: 'blob' as 'json' });\n }\n\n downloadInvoice(bookingId: string): Observable {\n return this.http.get(this.baseUrl + 'api/Invoice/PDFForBooking/' + bookingId, { responseType: 'blob' as 'json' });\n }\n\n getOpenBooking(screeningId: string): Observable {\n return this.http.get(this.baseUrl + 'api/Booking/OpenBooking/' + screeningId);\n }\n\n searchBookings(searchTerm: string): Observable {\n return this.http.get(this.baseUrl + 'api/Booking/Search/' + searchTerm);\n }\n\n getLastEPSBooking(): Observable {\n return this.http.get(this.baseUrl + 'api/Booking/LastEPS');\n }\n\n getBookingForStripe(checkoutId: string): Observable {\n return this.http.get(this.baseUrl + 'api/Booking/Stripe/' + checkoutId);\n }\n}\n","import { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, Inject } from '@angular/core';\nimport { StartupService } from './startup.service';\nimport { CustomHtmlContent } from '../models/customHtmlContent';\n\n@Injectable()\nexport class CustomContentService {\n private baseUrl: string;\n\n constructor(@Inject('BASE_URL') baseUrl: string, private http: HttpClient, private startupService: StartupService) {\n this.baseUrl = baseUrl;\n }\n\n getCustomHtmlContent(key: string): Observable {\n return this.http.get(this.baseUrl + 'api/CustomContent/CustomHtmlContent/' + key);\n }\n\n setCustomHtmlContent(key: string, content: string): Observable {\n const cont = new CustomHtmlContent();\n cont.key = key;\n cont.content = content;\n return this.http.post(this.baseUrl + 'api/CustomContent/CustomHtmlContent', cont);\n }\n}\n","import { AuthenticationService } from './authentication.service';\nimport { LoginDialogComponent } from './../components/dialogs/login-dialog/login-dialog.component';\nimport { Injectable } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { UserEditDialogComponent } from '../components/dialogs/userEdit-dialog/userEdit-dialog.component';\nimport { User } from '../models/user';\nimport { UserService } from './user.service';\nimport { Reservierung } from '../models/reservierung';\nimport { BarcodeDialogComponent } from '../components/dialogs/barcode-dialog/barcode-dialog.component';\nimport { QRCodeDialogComponent } from '../components/dialogs/qrcode-dialog/qrcode-dialog.component';\n@Injectable()\nexport class DialogService {\n\n constructor(private modalService: NgbModal, private authService: AuthenticationService, private userService: UserService) { }\n\n public showLoginDialog(): Promise {\n const modalRef = this.modalService.open(LoginDialogComponent);\n modalRef.componentInstance.authService = this.authService;\n return modalRef.result;\n }\n\n public showUserEditDialog(user: User): Promise {\n const modalRef = this.modalService.open(UserEditDialogComponent);\n modalRef.componentInstance.userService = this.userService;\n modalRef.componentInstance.user = user;\n return modalRef.result;\n }\n\n public showBarcodeDialog(booking: Reservierung): Promise {\n const modalRef = this.modalService.open(BarcodeDialogComponent);\n modalRef.componentInstance.booking = booking;\n return modalRef.result;\n }\n\n public showQRCodeDialog(booking: Reservierung): Promise {\n const modalRef = this.modalService.open(QRCodeDialogComponent);\n modalRef.componentInstance.booking = booking;\n return modalRef.result;\n }\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { EpsCallback } from '../models/epsCallback';\n\n@Injectable()\nexport class EPSService {\n private baseUrl: string;\n\n constructor(@Inject('BASE_URL') baseUrl: string, private http: HttpClient) {\n this.baseUrl = baseUrl;\n }\n\n public initiateTransfer(bookingId: string): Observable {\n return this.http.get(this.baseUrl + 'api/EPS/InitiateTransfer/' + bookingId);\n }\n}\n","import { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, Inject } from '@angular/core';\nimport { Film } from '../models/film';\n\n@Injectable()\nexport class MovieService {\n private baseUrl: string;\n\n constructor(@Inject('BASE_URL') baseUrl: string, private http: HttpClient) {\n this.baseUrl = baseUrl;\n }\n\n getByFilmId(id: string): Observable {\n return this.http.get(this.baseUrl + 'api/Movie/ByFilmId/' + id);\n }\n\n getFilmsForFutureScreenings(): Observable {\n return this.http.get(this.baseUrl + 'api/Movie/MoviesForFutureScreenings');\n }\n\n getFilmsForOverview(): Observable {\n return this.http.get(this.baseUrl + 'api/Movie/MoviesForOverview');\n }\n\n getByScreeningId(screeningId: string): Observable {\n return this.http.get(this.baseUrl + 'api/Movie/ByScreeningId/' + screeningId);\n }\n\n getAll(): Observable {\n return this.http.get(this.baseUrl + 'api/Movie/All');\n }\n\n getFilmsForPreview(): Observable {\n return this.http.get(this.baseUrl + 'api/Movie/Preview');\n }\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { Newsletter } from '../models/newsletter';\n\n@Injectable()\nexport class NewsletterService {\n private baseUrl: string;\n\n constructor(@Inject('BASE_URL') baseUrl: string, private http: HttpClient) {\n this.baseUrl = baseUrl;\n }\n\n public sendNewsletter(newsletter: Newsletter): Observable {\n return this.http.post(this.baseUrl + 'api/Newsletter/Send', newsletter);\n }\n\n public testNewsletter(mail: string, newsletter: Newsletter): Observable {\n return this.http.post(this.baseUrl + 'api/Newsletter/Test/' + mail, newsletter);\n }\n\n public generateNewsletter(): Observable {\n return this.http.get(this.baseUrl + 'api/Newsletter/Generate');\n }\n\n}\n","import { PreisSchema } from './../models/preisSchema';\nimport { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, Inject } from '@angular/core';\n\n@Injectable()\nexport class PricingService {\n private baseUrl: string;\n\n constructor(@Inject('BASE_URL') baseUrl: string, private http: HttpClient) {\n this.baseUrl = baseUrl;\n }\n\n getById(id: string): Observable {\n return this.http.get(this.baseUrl + 'api/Pricing/Get/' + id);\n }\n\n delete(id: string): Observable {\n return this.http.delete(this.baseUrl + 'api/Pricing/Delete/' + id);\n }\n\n create(template: PreisSchema): Observable {\n return this.http.post(this.baseUrl + 'api/Pricing/Create', template);\n }\n\n replace(template: PreisSchema): Observable {\n return this.http.put(this.baseUrl + 'api/Pricing/Create', template);\n }\n\n getByScreeningId(screeningId: string): Observable {\n return this.http.get(this.baseUrl + 'api/Pricing/ByScreeningId/' + screeningId);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { User } from '../models/user';\n\n@Injectable()\nexport class RecoveryService {\n private baseUrl: string;\n\n constructor(@Inject('BASE_URL') baseUrl: string, private http: HttpClient) {\n this.baseUrl = baseUrl;\n }\n\n isRecoveryValid(recoveryId: string, userId: string): Promise {\n return this.http.get(this.baseUrl + 'api/PasswordRecovery/IsValid/' + recoveryId + '/' + userId).toPromise();\n }\n\n startRecovery(email: string): Promise {\n return this.http.get(this.baseUrl + 'api/PasswordRecovery/StartRecovery/' + email).toPromise();\n }\n\n finishRecovery(reocveryId: string, userId: string, password: string): Promise {\n const dto = new User();\n dto.id = userId;\n dto.password = password;\n return this.http.post(this.baseUrl + 'api/PasswordRecovery/FinishRecovery/' + reocveryId, dto).toPromise();\n }\n}\n","import { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, Inject } from '@angular/core';\nimport { Reservierung } from '../models/reservierung';\nimport { Sitz } from '../models/sitz';\nimport { ScanResult } from '../models/scanResult';\n\n@Injectable()\nexport class ScanService {\n private baseUrl: string;\n\n constructor(@Inject('BASE_URL') baseUrl: string, private http: HttpClient) {\n this.baseUrl = baseUrl;\n }\n\n scanBooking(qrData: string): Observable {\n return this.http.post(this.baseUrl + 'api/Scan/ScanBooking', { data: qrData });\n }\n\n confirmBooking(bookingId: string): Observable {\n return this.http.get(this.baseUrl + 'api/Scan/ConfirmBooking/' + bookingId);\n }\n\n confirmTicket(ticketId: string): Observable {\n return this.http.get(this.baseUrl + 'api/Scan/ConfirmTicket/' + ticketId);\n }\n}","import { Vorstellung } from './../models/vorstellung';\nimport { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Injectable, Inject } from '@angular/core';\nimport { ScreeningSerializer } from '../helpers/screeningSerializer';\nimport { ProgramByDay } from '../models/programByDay';\n\n@Injectable()\nexport class ScreeningService {\n private baseUrl: string;\n private serializer = new ScreeningSerializer();\n\n constructor(@Inject('BASE_URL') baseUrl: string, private http: HttpClient) {\n this.baseUrl = baseUrl;\n }\n\n getScreeningsForCancellation(): Observable {\n return this.http.get(this.baseUrl + 'api/Screening/ForCancellation').pipe(\n map(data => {\n return data.map(item => this.serializer.fromJson(item));\n })\n );\n }\n\n getForMovie(filmId: string): Observable {\n return this.http.get(this.baseUrl + 'api/Screening/ForMovie/' + filmId).pipe(\n map(data => {\n return data.map(item => this.serializer.fromJson(item));\n })\n );\n }\n\n\n getByScreeningId(id: string): Observable {\n return this.http.get(this.baseUrl + 'api/Screening/ByScreeningId/' + id)\n .pipe(map(data => this.serializer.fromJson(data)));\n }\n\n getNextScreening(id: string): Observable {\n return this.http.get(this.baseUrl + 'api/Screening/Next/' + id)\n .pipe(map(data => this.serializer.fromJson(data)));\n }\n\n getPreviousScreening(id: string): Observable {\n return this.http.get(this.baseUrl + 'api/Screening/Previous/' + id)\n .pipe(map(data => this.serializer.fromJson(data)));\n }\n\n getFutureScreenings(): Observable {\n return this.http.get(this.baseUrl + 'api/Screening/FutureScreenings').pipe(\n map(data => {\n return data.map(item => this.serializer.fromJson(item));\n })\n );\n }\n\n getProgramByDay(): Observable {\n return this.http.get(this.baseUrl + 'api/Screening/ProgramByDay');\n }\n\n getScreeningsForOwnBookings(): Observable {\n return this.http.get(this.baseUrl + 'api/Screening/ForOwnBookings').pipe(\n map(data => {\n return data.map(item => this.serializer.fromJson(item));\n })\n );\n }\n\n getScreeningsForBlock(screeningId: string): Observable {\n return this.http.get(this.baseUrl + 'api/Screening/ForBlock/' + screeningId).pipe(\n map(data => {\n return data.map(item => this.serializer.fromJson(item));\n })\n );\n }\n\n getAvailableStandingTickets(screeningId: string): Observable {\n return this.http.get(this.baseUrl + 'api/Screening/AvailableStandingTickets/' + screeningId);\n }\n\n async getEmailList(screeningId: string): Promise {\n return await this.http.get(this.baseUrl + 'api/Screening/CustomerMailsForScreening/' + screeningId, { responseType: 'text' }).toPromise();\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { SocialMediaLandingPage } from '../models/socialMediaLandingPage';\n\n@Injectable()\nexport class SocialMediaLandingPageService {\n private baseUrl: string;\n\n constructor(@Inject('BASE_URL') baseUrl: string, private http: HttpClient) {\n this.baseUrl = baseUrl;\n }\n\n getBySlug(slug: string): Promise {\n return this.http.get(this.baseUrl + 'api/SocialMediaLandingPage/ForSlug/' + slug).toPromise();\n }\n\n getAll(): Promise {\n return this.http.get(this.baseUrl + 'api/SocialMediaLandingPage/All').toPromise();\n }\n\n delete(page: SocialMediaLandingPage): Promise {\n return this.http.get(this.baseUrl + 'api/SocialMediaLandingPage/Delete/' + page.id).toPromise();\n }\n\n add(page: SocialMediaLandingPage): Promise {\n return this.http.post(this.baseUrl + 'api/SocialMediaLandingPage/Add', page).toPromise();\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Config } from '../models/config';\n\n@Injectable()\nexport class StartupService {\n private config: Config;\n private baseUrl: string;\n\n constructor(@Inject('BASE_URL') baseUrl: string, private http: HttpClient) {\n this.baseUrl = baseUrl;\n }\n\n // This is the method you want to call at bootstrap\n // Important: It should return a Promise\n load(): Promise {\n return this.http.get(this.baseUrl + 'assets/config/config.json').toPromise().then(conf => this.config = conf);\n }\n\n getConfig(): Config {\n return this.config;\n }\n\n isBeforeCoronaEndDate(date: Date): boolean {\n const coronaEndDate = Date.parse(this.config.coronaEndDate);\n return date.getTime() < coronaEndDate;\n }\n}\n","import { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, Inject } from '@angular/core';\nimport { StatisticsScreeningDay } from '../models/statisticsScreeningDay';\nimport { StatisticsScreeningWeek } from '../models/statisticsScreeningWeek';\n\n@Injectable()\nexport class StatisticsService {\n private baseUrl: string;\n\n constructor(@Inject('BASE_URL') baseUrl: string, private http: HttpClient) {\n this.baseUrl = baseUrl;\n }\n\n public getStatistics(): Observable {\n return this.http.get(this.baseUrl + 'api/Statistics/DailyStatistics');\n }\n\n public getStatisticWeek(): Observable {\n return this.http.get(this.baseUrl + 'api/Statistics/WeeklyStatistics');\n }\n}\n","import { StorageService, LOCAL_STORAGE } from 'ngx-webstorage-service';\nimport { Inject, Injectable } from '@angular/core';\n\n@Injectable()\nexport class DataService {\n private tokenKey = 'session_token';\n\n constructor(@Inject(LOCAL_STORAGE) private storage: StorageService) { }\n\n get token(): string {\n if (this.hasToken()) {\n return this.storage.get(this.tokenKey);\n }\n }\n\n set token(userId: string) {\n this.storage.set(this.tokenKey, userId);\n }\n\n removeToken(): void {\n this.storage.remove(this.tokenKey);\n }\n\n hasToken(): boolean {\n return this.storage.has(this.tokenKey);\n }\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { RefundFeesSelection } from '../models/enums/refundFeesSelection';\n\n@Injectable()\nexport class StripeService {\n private baseUrl: string;\n\n constructor(@Inject('BASE_URL') baseUrl: string, private http: HttpClient) {\n this.baseUrl = baseUrl;\n }\n\n public initiateTransfer(bookingId: string): Observable {\n return this.http.get(this.baseUrl + 'api/Stripe/CreatePayment/' + bookingId);\n }\n\n public getFees(sessionId: string): Observable {\n return this.http.get(this.baseUrl + 'api/Stripe/GetStripeFees/' + sessionId);\n }\n\n public cancelPaidBooking(bookingId: string, cancellationCountAdults: number, cancellationCountChildren: number, refundFeeSelection: RefundFeesSelection, refundFeeAmount: number, cancelSeatsFromLeft: boolean): Observable {\n return this.http.post(this.baseUrl + 'api/Stripe/PaymentCancellation',\n {\n bookingId: bookingId,\n cancellationCountAdults: cancellationCountAdults,\n cancellationCountChildren: cancellationCountChildren,\n refundFeeAmount: refundFeeAmount,\n refundFeeSelection: refundFeeSelection,\n cancelSeatsFromLeft: cancelSeatsFromLeft\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { TaxSet } from '../models/taxSet';\n\n@Injectable()\nexport class TaxSetService {\n private baseUrl: string;\n\n constructor(@Inject('BASE_URL') baseUrl: string, private http: HttpClient) {\n this.baseUrl = baseUrl;\n }\n\n getByScreeningId(screeningId: string): Promise {\n return this.http.get(this.baseUrl + 'api/TaxSet/TaxForScreening/' + screeningId).toPromise();\n }\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { UserRegistrationResult } from '../models/enums/userRegistrationResult';\nimport { User } from '../models/user';\nimport { Observable } from 'rxjs';\nimport { UserRight } from '../models/enums/userRight';\nimport { UserUpdateResult } from '../models/enums/userUpdateResult';\nimport { NewsletterEntry } from '../models/newsletterEntry';\nimport { TimeFormatPipe } from '../helpers/TimeFormatPipe';\n\n@Injectable()\nexport class UserService {\n private baseUrl: string;\n\n constructor(@Inject('BASE_URL') baseUrl: string, private http: HttpClient, private timePipe: TimeFormatPipe) {\n this.baseUrl = baseUrl;\n }\n\n // tslint:disable-next-line:max-line-length\n register(\n emailAddress: string,\n firstName: string,\n lastName: string,\n phoneNumber: string,\n password: string,\n acceptNewsletter: boolean\n ): Observable {\n const user = new User();\n user.eMailAddress = emailAddress;\n user.firstName = firstName;\n user.lastName = lastName;\n user.phoneNumber = phoneNumber;\n user.password = password;\n user.newsletter = acceptNewsletter;\n\n return this.http.post(\n this.baseUrl + 'api/User/Register',\n user\n );\n }\n\n verify(userId: string): Observable {\n return this.http.get(this.baseUrl + 'api/User/Verify/' + userId);\n }\n\n getOwnUser(): Observable {\n return this.http.get(this.baseUrl + 'api/User/Own');\n }\n\n getAllUsers(): Observable {\n return this.http.get(this.baseUrl + 'api/User/All');\n }\n\n ban(user: User): Observable {\n return this.http.get(this.baseUrl + 'api/User/Ban/' + user.id);\n }\n\n unban(user: User): Observable {\n return this.http.get(this.baseUrl + 'api/User/Unban/' + user.id);\n }\n\n delete(user: User): Observable {\n return this.http.delete(this.baseUrl + 'api/User/Delete/' + user.id);\n }\n\n deactivate(user: User): Observable {\n return this.http.get(\n this.baseUrl + 'api/User/Deactivate/' + user.id\n );\n }\n\n activate(user: User): Observable {\n return this.http.get(\n this.baseUrl + 'api/User/Activate/' + user.id\n );\n }\n\n promoteMitarbeiter(user: User): Observable {\n return this.http.get(\n this.baseUrl + 'api/User/PromoteMitarbeiter/' + user.id\n );\n }\n\n demoteMitarbeiter(user: User): Observable {\n return this.http.get(\n this.baseUrl + 'api/User/DemoteMitarbeiter/' + user.id\n );\n }\n\n resendActivationMail(user: User): Observable {\n return this.http.get(\n this.baseUrl + 'api/User/ResendActivationMail/' + user.id\n );\n }\n\n hasUserRight(user: User, right: UserRight): boolean {\n // tslint:disable-next-line:no-bitwise\n return (user.userRights & right) === right;\n }\n\n update(user: User): Observable {\n return this.http.put(this.baseUrl + 'api/User/Update/' + user.id, user);\n }\n\n setNewsletter(userId: string, isNewsletterAccepted: boolean): Observable {\n return this.http.get(this.baseUrl + 'api/User/Newsletter/' + userId + '/' + isNewsletterAccepted);\n }\n\n getNewsletterUsers(): Observable {\n return this.http.get(this.baseUrl + 'api/Newsletter/NewsletterSubscribers');\n }\n\n deleteInactiveUsers(): Observable {\n return this.http.get(this.baseUrl + 'api/User/DeleteInactive');\n }\n\n verifyTimeZone(): Observable {\n const time = this.timePipe.transform(Date.now());\n return this.http.get(this.baseUrl + 'api/User/VerifyTimeZone/' + Intl.DateTimeFormat().resolvedOptions().timeZone.replace('/', '.') + '/' + time);\n }\n}\n","// The file contents for the current environment will overwrite these during build.\r\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\r\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\r\n// The list of which env maps to which file can be found in `.angular-cli.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nexport function getBaseUrl(): string {\r\n return document.getElementsByTagName('base')[0].href;\r\n}\r\n\r\nconst providers = [\r\n { provide: 'BASE_URL', useFactory: getBaseUrl, deps: [] }\r\n];\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic(providers).bootstrapModule(AppModule)\r\n .catch(err => console.log(err));\r\n"],"names":["UserService","DataService","Component","Cookie","Globals","Title","StartupService","Meta","NavigationStart","Router","AppComponent","constructor","router","meta","titleService","globals","storageService","userService","startupService","addTags","name","content","getConfig","client","setTitle","events","subscribe","event","console","log","url","setDefaultMetaTags","hasToken","setAutoLoginInProgress","getOwnUser","user","setUser","error","removeToken","updateTag","ngOnInit","hasConsent","appendGaTrackingCode","userAgent","navigator","indexOf","_overrideConsent","res","cookieConsent","isStaticPagesActive","staticPagesActive","hasConsentMarketingStatistics","endsWith","imprintUrl","clientImprint","showSocialFacebook","social","facebookUrl","length","showSocialInstagram","instagramUrl","showSocialTwitter","twitterUrl","socialFacebookUrl","socialInstagramUrl","socialTwitterUrl","showSamsungWarning","match","__decorate","selector","template","Inject","BookingService","ActivatedRoute","ComponentStatus","ScreeningService","PricingService","MovieService","timer","forkJoin","Reservierungsstatus","ViewBaseComponent","L10nTranslationService","OwnMath","saveAs","importedSaveAs","DOCUMENT","EPSService","TaxSetService","StripeService","loadStripe","SaalArt","UserRight","BookingDetailsComponent","baseUrl","document","bookingService","screeningService","pricingService","movieService","route","translation","epsService","taxSetService","stripeService","viewState","Loading","paramMap","map","has","get","booking","errorText","translate","isDeleted","reservierungBestaetigt","navigate","isPaid","status","VerkauftInternet","VerkauftKasse","AusgedrucktInternet","isBooked","Reserviert","InternetReserviert","getByScreeningId","vorstellungsId","results","screening","movie","pricing","taxSet","ticketTax","taxTicket","filmTitel","filmTitelZusatz","serviceFeeEps","eps","serviceFee","serviceFeeStripe","stripe","totalServiceFeeEps","anzahlErwachsene","anzahlKinder","totalServiceFeeStripe","priceAdults","preisErwachsene","priceChildren","preisKinder","total","taxAdults","round","taxChildren","taxTotal","subTotal","runTimer","isEpsEnabled","enabled","isStripeEnabled","isNewsletterAccepted","getUser","newsletter","Displaying","confirmBooking","Processing","confirm","id","setNewsletter","confirmCashBooking","confirmCash","initiateEpsTransfer","initiateTransfer","success","location","href","forwardUrl","initiateStripeTransfer","publicKey","sessId","redirectToCheckout","sessionId","then","result","message","catch","err","cancelBooking","delete","bookingCancelUrl","getSelectedSeatsLabelKey","sitzIds","getSelectedSeatsNames","seatId","seat","getSeat","label","sitzplatzNummer","sitze","getSelectedRowName","reihe","getBarcodeUrl","getQRCodeUrl","timeStart","Date","reservierungszeitpunkt","getTime","tim","val","timeLimit","elapsed","now","left","time","getSeconds","timeLeft","getMinutes","isError","isProcessing","warningText","isBookingAllowed","reservierungsEinstellung","isBuyingAllowed","termsUrl","clientTerms","newsletterInfoText","termsChanged","isTermsAccepted","currentTarget","checked","newsletterChanged","downloadTicket","downloadInvoice","isTicketDownloadAllowed","allowTicketDownload","isInvoiceDownloadAllowed","allowInvoiceDownload","showNewsletter","enableNewsletter","bookingFetchLimitString","useBlockLogic","isSeating","saalArt","Sitzplaetze","isMitarbeiter","hasUserRight","Mitarbeiter","isAdmin","Admin","args","HttpClient","Injectable","ScreeningSerializer","http","getScreeningsForCancellation","pipe","data","item","serializer","fromJson","getForMovie","filmId","getNextScreening","getPreviousScreening","getFutureScreenings","getProgramByDay","getScreeningsForOwnBookings","getScreeningsForBlock","screeningId","getAvailableStandingTickets","getEmailList","responseType","toPromise"],"sourceRoot":"webpack:///"}