{"version":3,"sources":["./src/app/chat/chat.component.ts","./src/app/chat/chat.component.html","./src/app/responsive-sidenav/responsive-sidenav.directive.ts","./src/app/pages/contact-us-page/contact-us-page.component.ts","./src/app/pages/contact-us-page/contact-us-page.component.html","./src/app/services/scroll-service.service.ts","./src/app/pages/profile-page/profile-page.component.ts","./src/app/pages/profile-page/profile-sheet.html","./src/app/pages/profile-page/profile-page.component.html","./src/app/pages/live-event-page/participation/liveEventGpsRegistration.component.ts","./src/app/pages/live-event-page/participation/liveEventGpsRegistration.html","./src/environments/environment.ts","./src/app/pages/events-page/events-page.component.html","./src/app/pages/events-page/events-page.component.ts","./src/app/adminPages/confirm-dialog/confirm-dialog.component.ts","./src/app/adminPages/confirm-dialog/confirm-dialog.component.html","./src/app/pages/landing-page/landing-page.component.ts","./src/app/pages/landing-page/landing-page.component.html","./src/app/material.ts","./src/app/pages/events-detail-page/events-detail-page.component.ts","./src/app/pages/events-detail-page/events-detail-page.component.html","./src/app/nodes/nodes.component.ts","./src/app/nodes/nodes.component.html","./src/app/pages/live-event-page/participation/QrScanner.component.ts","./src/app/pages/live-event-page/participation/qr-scanner-dialog.html","./src/app/app.component.ts","./src/app/app.component.html","./src/app/services/update-service.service.ts","./src/app/pages/live-event-page/live-event-page.component.ts","./src/app/pages/live-event-page/live-event-page.component.html","./src/app/app.module.ts","./src/app/services/database.service.ts","./src/app/dialog/dialog.component.ts","./src/app/dialog/dialog.component.html","./src/app/dialog/login-dialog.html","./src/app/dialog/event-registration-dialog.html","./src/app/dialog/registration-dialog.html","./src/app/dialog/password-reset-dialog.html","./src/app/dialog/booking-dialog.html","./src/app/dialog/email-reminder-dialog.html","./src/app/dialog/refund-notification-dialog.html","./src/app/pages/rules/rules.component.ts","./src/app/pages/rules/rules.component.html","./src/app/pages/about-us-page/about-us-page.component.ts","./src/app/pages/about-us-page/about-us-page.component.html","./src/app/navbar/navbar.component.html","./src/app/navbar/navbar.component.ts","./src/app/services/auth.service.ts","./src/app/cookies.ts","./src/app/pipes/sort-by.pipe.ts","./src/app/services/state-service.service.ts","./src/app/app-routing.module.ts","./src/app/services/role-guard.service.ts","./src/app/services/snippet.service.ts","./src/app/pages/rankings-page/rankings-page.component.ts","./src/app/pages/rankings-page/rankings-page.component.html","./src/main.ts","./$_lazy_route_resource lazy namespace object"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["import { Component, Input, OnDestroy, OnInit, ViewChild, ViewChildren } from '@angular/core';\r\nimport { BehaviorSubject, combineLatest, forkJoin, Observable, of, Subscription } from 'rxjs';\r\nimport { map, switchMap, } from 'rxjs/operators';\r\nimport { AngularFireDatabase } from '@angular/fire/database';\r\nimport { AuthService } from '../services/auth.service';\r\nimport { DatabaseService } from '../services/database.service';\r\nimport { FormControl, Validators } from '@angular/forms';\r\nimport { BezierEasingOptions, SmoothScroll, SmoothScrollElement } from 'ngx-scrollbar/smooth-scroll';\r\nimport firebase from 'firebase';\r\n\r\n\r\ninterface message {\r\n\tphoto: any;\r\n\tusername: String;\r\n\tmessage: String;\r\n\ttimeStamp: number;\r\n}\r\n\r\n\r\n@Component({\r\n\tselector: 'app-chat',\r\n\ttemplateUrl: './chat.component.html',\r\n\tstyleUrls: ['./chat.component.scss']\r\n})\r\nexport class ChatComponent implements OnInit, OnDestroy {\r\n\r\n\t@ViewChild(SmoothScroll) infinite: SmoothScroll;\r\n\t@ViewChildren('bottom') bottom: SmoothScrollElement;\r\n\t@Input() eventID: String;\r\n\t@Input() teamName: string;\r\n\t@Input() teamIndex: Number;\r\n\titem: Observable;\r\n\tpublic chat: Observable;\r\n\tprivate userID: string;\r\n\tprivate userName: string;\r\n\tprivate userImage: string;\r\n\tpublic messageList: Map;\r\n\tprivate chatSub: Subscription;\r\n\tprivate HistorySub: Subscription;\r\n\tprivate lowestTimeStamp: number;\r\n\r\n\tloadingMessages: BehaviorSubject = new BehaviorSubject(true);\r\n\r\n\tthrottle = 50;\r\n\tscrollDistance = 1;\r\n\tscrollUpDistance = 2.5;\r\n\r\n\tconstructor(private realTimeDB: AngularFireDatabase, private auth: AuthService, private db: DatabaseService) {\r\n\r\n\t}\r\n\r\n\r\n\r\n\tngOnInit(): void {\r\n\r\n\t\tlet scrollSub = this.loadingMessages.subscribe(\r\n\t\t\t(loading) => {\r\n\t\t\t\tif (!loading) {\r\n\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tlet Options: BezierEasingOptions = { x1: 0, y1: 0, x2: 0.58, y2: 1 };\r\n\t\t\t\t\t\tthis.infinite.scrollToElement(this.bottom, { duration: 2, easing: Options })\r\n\t\t\t\t\t}, 1000);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t)\r\n\r\n\r\n\t\tthis.loadingMessages.next(true);\r\n\t\tthis.auth.afAuth.user\r\n\t\t\t.pipe(\r\n\t\t\t\tswitchMap(user => {\r\n\t\t\t\t\treturn combineLatest([this.db.GetUsername(user.uid), this.db.FetchProfileImage(user.uid), of(user.uid)])\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t\t.subscribe(\r\n\t\t\t\t(userData) => {\r\n\r\n\t\t\t\t\tthis.lowestTimeStamp = Date.now();\r\n\t\t\t\t\tthis.userID = userData[2];\r\n\t\t\t\t\tthis.userImage = userData[1];\r\n\t\t\t\t\tthis.userName = userData[0];\r\n\r\n\t\t\t\t\tthis.chat = this.realTimeDB.list(`${this.eventID}/${this.teamIndex}`, ref => ref.limitToFirst(10)).snapshotChanges();\r\n\t\t\t\t\tthis.messageList = new Map();\r\n\t\t\t\t\tthis.chatSub = this.chat.pipe(\r\n\t\t\t\t\t\tmap(messages => {\r\n\r\n\t\t\t\t\t\t\tif (messages.length == 0) {\r\n\t\t\t\t\t\t\t\tthis.loadingMessages.next(false);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn messages.map(a => {\r\n\r\n\t\t\t\t\t\t\t\tconst data = a.payload.val();\r\n\t\t\t\t\t\t\t\tconst messageID = a.payload.key\r\n\t\t\t\t\t\t\t\t// console.log(data)\r\n\t\t\t\t\t\t\t\tlet ID = Object.keys(data).filter((key) => {\r\n\t\t\t\t\t\t\t\t\treturn key != \"timeStamp\"\r\n\t\t\t\t\t\t\t\t})[0]\r\n\r\n\t\t\t\t\t\t\t\tthis.lowestTimeStamp = data.timeStamp < this.lowestTimeStamp ? data.timeStamp : this.lowestTimeStamp;\r\n\t\t\t\t\t\t\t\treturn combineLatest([\r\n\t\t\t\t\t\t\t\t\tof({ messageID, data, ID }),\r\n\t\t\t\t\t\t\t\t\tthis.db.GetUserDocument(ID).get(),\r\n\t\t\t\t\t\t\t\t\tthis.db.FetchProfileImage(ID)\r\n\t\t\t\t\t\t\t\t])\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tswitchMap(data => {\r\n\t\t\t\t\t\t\treturn forkJoin(data)\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t).subscribe(messages => {\r\n\r\n\t\t\t\t\t\tlet index = 0;\r\n\t\t\t\t\t\t// console.log(messages)\r\n\t\t\t\t\t\tmessages.forEach(message => {\r\n\t\t\t\t\t\t\tlet text = message[0].data[message[0].ID]\r\n\t\t\t\t\t\t\tindex++\r\n\t\t\t\t\t\t\tif (index == messages.length)\r\n\t\t\t\t\t\t\t\tthis.loadingMessages.next(false);\r\n\r\n\r\n\t\t\t\t\t\t\tif (!this.messageList.has(message[0].messageID))\r\n\t\t\t\t\t\t\t\tthis.messageList.set(message[0].messageID, { message: text, username: message[1].data().userID, photo: message[2], timeStamp: message[0].data.timeStamp, IsUserMessage: (message[1].uid == this.userID) })\r\n\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tthis.loadingMessages.next(false);\r\n\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t)\r\n\t}\r\n\r\n\r\n\r\n\r\n\tngOnDestroy() {\r\n\t\tif (this.chatSub)\r\n\t\t\tthis.chatSub.unsubscribe();\r\n\t\tif (this.HistorySub)\r\n\t\t\tthis.HistorySub.unsubscribe()\r\n\t}\r\n\r\n\r\n\tchatFormControl = new FormControl('', [\r\n\t\tValidators.minLength(1),\r\n\t]);\r\n\r\n\r\n\tpad(num) {\r\n\t\treturn (\"0\" + num).slice(-2);\r\n\t}\r\n\tgetTimeFromDate(timestamp) {\r\n\t\tvar date = new Date(timestamp);\r\n\t\tvar hours = date.getHours();\r\n\t\tvar minutes = date.getMinutes();\r\n\t\tvar seconds = date.getSeconds();\r\n\t\treturn this.pad(hours) + \":\" + this.pad(minutes) + \":\" + this.pad(seconds)\r\n\t}\r\n\r\n\tsendMessage() {\r\n\t\tlet obj = {}\r\n\t\tlet msg: string = this.chatFormControl.value;\r\n\t\tif (msg.trim() != \"\" && this.chatFormControl.value) {\r\n\t\t\tobj[this.userID] = this.chatFormControl.value;\r\n\t\t\tobj[\"timeStamp\"] = Date.now();\r\n\t\t\tthis.realTimeDB.list(`${this.eventID}/${this.teamIndex}`).push(obj).then((\r\n\t\t\t\t(dbRef: firebase.database.ThenableReference) => {\r\n\t\t\t\t\tdbRef.setPriority(0 - Date.now(), () => { }).then()\r\n\t\t\t\t\tthis.messageList.set(dbRef.key.toString(), { message: msg, username: this.userName, photo: this.userImage, timeStamp: obj[\"timeStamp\"] })\r\n\r\n\t\t\t\t}\r\n\t\t\t));\r\n\r\n\t\t}\r\n\t\tthis.chatFormControl.reset();\r\n\r\n\t}\r\n\r\n\r\n\tonScrollUp() {\r\n\r\n\t\tthis.FetchPreviousMessages();\r\n\t}\r\n\r\n\r\n\tonScrollDown() {\r\n\r\n\t}\r\n\r\n\tFetchPreviousMessages() {\r\n\t\tif (this.HistorySub)\r\n\t\t\tthis.HistorySub.unsubscribe()\r\n\t\tthis.HistorySub = this.realTimeDB.list(\r\n\t\t\t`${this.eventID}/${this.teamIndex}`, ref => ref.orderByChild(\"timeStamp\").endAt(this.lowestTimeStamp).limitToLast(10))\r\n\t\t\t.snapshotChanges()\r\n\t\t\t.subscribe(\r\n\t\t\t\tmessages => {\r\n\t\t\t\t\tmessages.forEach(message => {\r\n\t\t\t\t\t\tof(message).pipe(\r\n\t\t\t\t\t\t\tswitchMap(\r\n\t\t\t\t\t\t\t\t(res, index) => {\r\n\t\t\t\t\t\t\t\t\tlet data = res.payload.val();\r\n\t\t\t\t\t\t\t\t\t// \r\n\t\t\t\t\t\t\t\t\treturn combineLatest([\r\n\t\t\t\t\t\t\t\t\t\tof(res.payload),\r\n\t\t\t\t\t\t\t\t\t\tthis.db.GetUserDocument(Object.keys(data)[0]).get(),\r\n\t\t\t\t\t\t\t\t\t\tthis.db.FetchProfileImage(Object.keys(data)[0])]\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t).subscribe(\r\n\t\t\t\t\t\t\tdata => {\r\n\t\t\t\t\t\t\t\tlet message = String(Object.values(data[0].val())[0]);\r\n\t\t\t\t\t\t\t\tlet messageID = data[0].key;\r\n\r\n\t\t\t\t\t\t\t\tthis.lowestTimeStamp = data[0].val()[\"timeStamp\"] < this.lowestTimeStamp ? data[0].val()[\"timeStamp\"] : this.lowestTimeStamp;\r\n\t\t\t\t\t\t\t\tthis.messageList.set(messageID, { message: message, username: data[1].data().userID, photo: data[2], timeStamp: data[0].val()[\"timeStamp\"] })\r\n\t\t\t\t\t\t\t}, (err) => {\r\n\r\n\t\t\t\t\t\t\t}, () => { }\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t}, (err) => {\r\n\r\n\t\t\t\t})\r\n\t}\r\n\r\n}\r\n","\r\n \r\n \r\n \r\n *Only your team {{teamName}} will be able to see your messages\r\n \r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \"{{message.value.username}}\"\r\n\r\n {{message.value.username}}\r\n\r\n \r\n {{getTimeFromDate(message.value.timeStamp)}}\r\n \r\n\r\n\r\n \r\n
\r\n \r\n

\r\n {{message.value.message}}\r\n

\r\n
\r\n
\r\n
\r\n End of messages...\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n Send a message\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
","import { BreakpointObserver } from '@angular/cdk/layout';\r\nimport { Directive, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { Subject } from 'rxjs';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\n\r\n@Directive({\r\n selector: '[appResponsiveSidenav]'\r\n})\r\nexport class ResponsiveSidenavDirective implements OnInit, OnDestroy {\r\n\r\n @Input() permanentAt: number;\r\n\r\n destroy$: Subject = new Subject();\r\n\r\n constructor(\r\n private breakpoint: BreakpointObserver,\r\n private sidenav: MatSidenav\r\n ) { }\r\n\r\n\r\n ngOnInit() {\r\n const permanent$ = this.breakpoint\r\n .observe(`(min-width: ${this.permanentAt}px)`)\r\n .pipe(\r\n takeUntil(this.destroy$),\r\n map(({ matches }) => matches)\r\n );\r\n\r\n permanent$.subscribe(permanent => {\r\n this.sidenav.mode = permanent ? \"side\" : \"push\";\r\n this.sidenav.fixedInViewport = permanent ? true : false;;\r\n this.sidenav.disableClose = permanent ? true : false;;\r\n this.sidenav.opened = permanent;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Platform } from '@angular/cdk/platform';\r\n\r\n@Component({\r\n\tselector: 'app-contact-us-page',\r\n\ttemplateUrl: './contact-us-page.component.html',\r\n\tstyleUrls: ['./contact-us-page.component.scss'],\r\n})\r\nexport class ContactUsPageComponent implements OnInit {\r\n\tconstructor(public platform: Platform) {}\r\n\r\n\tngOnInit(): void {}\r\n}\r\n","
\r\n\t

Contact Us

\r\n\r\n\t
\r\n\t\t\r\n\t\t\t
Details
\r\n\t\t\t\r\n\t\t\t\tphone\r\n\t\t\t\t
Paul
\r\n\t\t\t\t
082 351 9476
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\tphone\r\n\t\t\t\t
Jessica
\r\n\t\t\t\t
082 613 3630
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\temail\r\n\t\t\t\t
Email
\r\n\t\t\t\t
cyborgza@hotmail.com
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\tbook\r\n\t\t\t\tView Our Privacy Policy\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t
Social
\r\n\t\t\t\r\n\t\t\t\tsocial\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t

Franchising

\r\n\t\t

Want to start a club?

\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tphone\r\n\t\t\t\t\t
Grant
\r\n\t\t\t\t\t
079 517 5640
\r\n\t\t\t\t\t
grant@flg.co.za
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
\r\n","import { Injectable, EventEmitter } from '@angular/core';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ScrollServiceService {\r\n\r\n\r\n public scrollToContactUs: EventEmitter = new EventEmitter()\r\n public scrollToAboutUs: EventEmitter = new EventEmitter()\r\n\r\n constructor() { }\r\n\r\n\r\n}\r\n","import { ChangeDetectorRef, Component, EventEmitter, Inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { DatabaseService } from '../../services/database.service'\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { Observable, of, forkJoin, combineLatest, Subscription } from 'rxjs';\r\nimport { AbstractControl, FormControl, FormGroup, ValidationErrors, Validators } from '@angular/forms';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { SnippetService } from 'src/app/services/snippet.service';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { LogData, ReasonIdType } from '../../services/database.service';\r\nimport { ImageCroppedEvent, LoadedImage } from 'ngx-image-cropper';\r\nimport { ConfirmDialogComponent } from '../../adminPages/confirm-dialog/confirm-dialog.component';\r\n\r\nclass BottomSheetData {\r\n\tuserPatchList: any[];\r\n\tuserPendingPatchList: any[];\r\n\tsuccess: EventEmitter\r\n}\r\n\r\n\r\n//bottom sheets \r\nimport { MatBottomSheet, MatBottomSheetRef, MAT_BOTTOM_SHEET_DATA } from '@angular/material/bottom-sheet';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\n\r\n\r\n/**\r\n * @title Bottom Sheet Overview\r\n */\r\n@Component({\r\n\tselector: 'profile-sheet',\r\n\ttemplateUrl: 'profile-sheet.html',\r\n\tstyleUrls: ['profile-sheet.scss']\r\n})\r\nexport class ProfileSheet implements OnInit, OnDestroy {\r\n\tconstructor(@Inject(MAT_BOTTOM_SHEET_DATA) public data: BottomSheetData, private _bottomSheetRef: MatBottomSheetRef, private authService: AuthService, private db: DatabaseService, private snippet: SnippetService, private changeDetector: ChangeDetectorRef) { }\r\n\r\n\r\n\r\n\tpatches: any;\r\n\tselectedPatch: any;\r\n\tloadingPatches: boolean = true;\r\n\r\n\r\n\tngOnDestroy() {\r\n\t\tif (this.ProfileSheetSub)\r\n\t\t\tthis.ProfileSheetSub.unsubscribe();\r\n\t}\r\n\r\n\r\n\r\n\tProfileSheetSub: Subscription;\r\n\tngOnInit() {\r\n\r\n\t\tthis.ProfileSheetSub = new Subscription()\r\n\t\tlet newSub = this.db.GetFullPatchList().subscribe(\r\n\t\t\tpatches => {\r\n\r\n\r\n\t\t\t\tthis.patches = patches;\r\n\t\t\t\tthis.loadingPatches = false;\r\n\t\t\t\tthis.changeDetector.markForCheck();\r\n\t\t\t}\r\n\t\t)\r\n\t\tthis.ProfileSheetSub.add(newSub);\r\n\t}\r\n\r\n\tselectPatch(patch) {\r\n\r\n\t\tif (this.data.userPatchList && this.data.userPatchList.find(p => { return patch[0].id == p; })) {\r\n\t\t\tthis.snippet.openErrorSnackBar(\"You already have this patch\")\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this.data.userPendingPatchList && this.data.userPendingPatchList.find(p => { return patch[0].id == p; })) {\r\n\t\t\tthis.snippet.openErrorSnackBar(\"You have already requested this patch\")\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.selectedPatch = patch;\r\n\r\n\t}\r\n\r\n\tFetchPatchImage(patch): Observable {\r\n\t\treturn this.db.FetchPatchImage(patch.id)\r\n\t}\r\n\r\n\tprivate imageIn: any;\r\n\timageUploaded: boolean = false;\r\n\r\n\tuploadPatchImage(imageInput: any) {\r\n\t\tthis.imageIn = imageInput;\r\n\t\tconst file: File = this.imageIn.files[0];\r\n\r\n\t\tif (file) {\r\n\t\t\tconst reader = new FileReader();\r\n\r\n\t\t\treader.addEventListener('loadend', (event: any) => {\r\n\t\t\t\tthis.imageUploaded = true;\r\n\t\t\t\tthis.changeDetector.markForCheck();\r\n\t\t\t});\r\n\r\n\r\n\r\n\t\t\treader.addEventListener('error', (event: any) => {\r\n\t\t\t\tthis.imageUploaded = false;\r\n\t\t\t\tthis.snippet.openErrorSnackBar(\"Image upload failed.\")\r\n\t\t\t});\r\n\r\n\t\t\treader.readAsDataURL(file);\r\n\t\t}\r\n\t}\r\n\r\n\tsubmitting: boolean;\r\n\tuploadRequest() {\r\n\t\tthis.submitting = true;\r\n\t\tconst file: File = this.imageIn.files[0];\r\n\t\tif (file) {\r\n\t\t\tconst reader = new FileReader();\r\n\t\t\treader.addEventListener('loadend', (event: any) => {\r\n\r\n\t\t\t\tlet authsub = this.authService.user.subscribe(user => {\r\n\t\t\t\t\tthis.db.uploadPatchRequestImage(file, user.uid, this.selectedPatch[0].id)\r\n\t\t\t\t\t\t.then(complete => {\r\n\t\t\t\t\t\t\tthis.snippet.openSuccessSnackBar(\"Patch request submitted\");\r\n\t\t\t\t\t\t\tthis.data.success.emit(\"success\")\r\n\t\t\t\t\t\t\tthis._bottomSheetRef.dismiss();\r\n\t\t\t\t\t\t}).catch(() => {\r\n\t\t\t\t\t\t\tthis.snippet.openErrorSnackBar(\"Patch request failed!\")\r\n\t\t\t\t\t\t\tthis.data.success.emit(\"failed\")\r\n\t\t\t\t\t\t\tthis._bottomSheetRef.dismiss();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t\t(err: any) => {\r\n\t\t\t\t\t\tconsole.error(err);\r\n\t\t\t\t\t\tthis.snippet.openErrorSnackBar(\"Patch request failed!\");\r\n\t\t\t\t\t\tthis.data.success.emit(\"failed\")\r\n\t\t\t\t\t\tauthsub.unsubscribe()\r\n\t\t\t\t\t\tthis._bottomSheetRef.dismiss();\r\n\t\t\t\t\t},\r\n\t\t\t\t\t() => { authsub.unsubscribe() })\r\n\r\n\t\t\t});\r\n\r\n\t\t\treader.readAsDataURL(file);\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n\r\n//end sheets\r\n\r\n\r\n\r\n\r\n@Component({\r\n\tselector: 'app-profile-page',\r\n\ttemplateUrl: './profile-page.component.html',\r\n\tstyleUrls: ['./profile-page.component.scss'],\r\n})\r\nexport class ProfilePageComponent implements OnInit, OnDestroy {\r\n\r\n\tdisplayedInfo: string = \"profile\"\r\n\r\n\tsanitize(url: string) {\r\n\t\treturn this.sanitization.bypassSecurityTrustStyle(`url('${url}')`);\r\n\t}\r\n\r\n\tsanitizeImage(url: string) {\r\n\t\treturn this.sanitization.bypassSecurityTrustUrl(url);\r\n\t}\r\n\r\n\r\n\tconstructor(\r\n\t\tprivate authService: AuthService,\r\n\t\tprivate db: DatabaseService,\r\n\t\tprivate sanitization: DomSanitizer,\r\n\t\tprivate router: Router,\r\n\t\tprivate active: ActivatedRoute,\r\n\t\tprivate snippet: SnippetService,\r\n\t\tprivate _bottomSheet: MatBottomSheet,\r\n\t\tprivate changeDetector: ChangeDetectorRef,\r\n\t\tprivate dialog: MatDialog\r\n\t) { }\r\n\tsuccess: EventEmitter;\r\n\r\n\r\n\tpublic get ReasonIdType(): typeof ReasonIdType {\r\n\t\treturn ReasonIdType;\r\n\t}\r\n\r\n\tgetBadgesSub: Subscription;\r\n\tgetPatchesSub: Subscription;\r\n\tngOnDestroy() {\r\n\t\tif (this.getPatchesSub)\r\n\t\t\tthis.getPatchesSub.unsubscribe()\r\n\t\tif (this.getBadgesSub)\r\n\t\t\tthis.getBadgesSub.unsubscribe()\r\n\t\tif (this.initSubscription)\r\n\t\t\tthis.initSubscription.unsubscribe()\r\n\t\tif (this.getPendingSub)\r\n\t\t\tthis.getPendingSub.unsubscribe()\r\n\t}\r\n\r\n\r\n\r\n\tprivate viewingUser: any;\r\n\tcanSeeLogs: boolean = false;\r\n\tviewingProfileIsUser: boolean = false;\r\n\tuserProfile: any;\r\n\tserviceTime: any;\r\n\tinitSubscription: Subscription;\r\n\tmode = 'view';\r\n\tngOnInit(): void {\r\n\t\tthis.success = new EventEmitter();\r\n\t\tthis.initSubscription = new Subscription();\r\n\r\n\r\n\t\tthis.initSubscription.add(\r\n\t\t\tthis.authService.afAuth.user.subscribe(user => {\r\n\t\t\t\tif (user != null) {\r\n\t\t\t\t\tthis.viewingUser = user;\r\n\r\n\t\t\t\t\tthis.initSubscription.add(\r\n\t\t\t\t\t\tthis.active.queryParams.pipe(\r\n\t\t\t\t\t\t\tmap(params => {\r\n\t\t\t\t\t\t\t\treturn params.userID\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t).subscribe(\r\n\t\t\t\t\t\t\tuserID => {\r\n\t\t\t\t\t\t\t\tthis.mode = 'view'\r\n\t\t\t\t\t\t\t\tthis.viewingProfileIsUser = false;\r\n\t\t\t\t\t\t\t\tthis.canSeeLogs = false\r\n\t\t\t\t\t\t\t\tif (!userID)\r\n\t\t\t\t\t\t\t\t\tthis.LoadProfile(this.viewingUser.uid, this.initSubscription);\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\tthis.LoadProfile(userID, this.initSubscription);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t)\r\n\r\n\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.router.navigate([\"/\"]);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t)\r\n\r\n\t}\r\n\r\n\tIsAdmin() {\r\n\t\tthis.initSubscription.add(this.db.isAdmin(this.viewingUser.uid, 'admin').subscribe(\r\n\t\t\tisAdmin => {\r\n\t\t\t\tthis.canSeeLogs = isAdmin;\r\n\r\n\t\t\t\tif (!isAdmin && this.viewingUser.uid == this.userProfile.user.id)\r\n\t\t\t\t\tthis.canSeeLogs = true;\r\n\t\t\t}));\r\n\t}\r\n\r\n\tLoadProfile(paramUserID: string, teardownSub: Subscription) {\r\n\t\tteardownSub.add(\r\n\r\n\t\t\tthis.db.FetchUser(paramUserID)\r\n\t\t\t\t.pipe(\r\n\t\t\t\t\tmap(user => {\r\n\t\t\t\t\t\treturn [\r\n\t\t\t\t\t\t\tof(user),\r\n\t\t\t\t\t\t\tthis.db.FetchProfileImage(user.id),\r\n\t\t\t\t\t\t\tthis.db.FetchTeamImage(user.id)\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tswitchMap(data => { return forkJoin(data) })\r\n\t\t\t\t)\r\n\t\t\t\t.subscribe(data => {\r\n\t\t\t\t\tthis.calculateRank(data[0].data().xp)\r\n\t\t\t\t\tconst epochNow = Date.now() / 1000;\r\n\t\t\t\t\tthis.serviceTime = epochNow - Number(data[0].data()['serviceTime']['seconds']);\r\n\t\t\t\t\tthis.userProfile = { user: data[0], image: data[1], teamImage: data[2] }\r\n\t\t\t\t\tif (this.viewingUser.uid == this.userProfile.user.id) {\r\n\t\t\t\t\t\tthis.viewingProfileIsUser = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.IsAdmin();\r\n\r\n\t\t\t\t}, err => {\r\n\t\t\t\t\tthis.router.navigate([\"/\"]);\r\n\t\t\t\t})\r\n\t\t)\r\n\t}\r\n\r\n\r\n\r\n\t//logging\r\n\tdisplayedColumns: string[] = ['Timestamp', 'Log', 'IssuerId'];\r\n\tdataSource: MatTableDataSource;\r\n\t/** Constants used to fill up our data base. */\r\n\t@ViewChild(MatPaginator) paginator: MatPaginator;\r\n\t@ViewChild(MatSort) sort: MatSort;\r\n\tLogsSub: Subscription;\r\n\r\n\tFetchLogs(userID: string) {\r\n\t\tthis.displayedInfo = 'logs'\r\n\t\tthis.db.FetchUserLogs(userID).pipe(\r\n\t\t\tmap(docs => {\r\n\t\t\t\treturn docs.docs.map(\r\n\t\t\t\t\tlog => {\r\n\t\t\t\t\t\tconst data = log.data();\r\n\t\t\t\t\t\tlet reason: Observable;\r\n\t\t\t\t\t\tif (data.reasonIdType == ReasonIdType.User)\r\n\t\t\t\t\t\t\treason = this.db.GetUsername(data.reasonID)\r\n\t\t\t\t\t\telse if (data.reasonIdType == ReasonIdType.Event)\r\n\t\t\t\t\t\t\treason = this.db.GetEventName(data.reasonID)\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\treason = of(\"XP Redeemed\")\r\n\r\n\t\t\t\t\t\treturn combineLatest([\r\n\t\t\t\t\t\t\tof(data),\r\n\t\t\t\t\t\t\treason\r\n\t\t\t\t\t\t])\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t}), switchMap(data => {\r\n\t\t\t\treturn forkJoin(data)\r\n\t\t\t})\r\n\t\t).subscribe(\r\n\t\t\tlogs => {\r\n\t\t\t\tlet logsArray: LogData[] = []\r\n\t\t\t\tlogs.forEach((log) => {\r\n\t\t\t\t\tif (log[1]) {\r\n\t\t\t\t\t\tlet newLog = { logMessage: log[0].logMessage, logType: log[0].logType, reasonID: log[1], timeStamp: log[0].timeStamp, reasonIdType: log[0].reasonIdType }\r\n\t\t\t\t\t\tlogsArray.push(newLog)\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\r\n\t\t\t\tlogsArray.sort((a, b) => {\r\n\t\t\t\t\treturn b.timeStamp - a.timeStamp;\r\n\t\t\t\t})\r\n\r\n\r\n\t\t\t\tthis.dataSource = new MatTableDataSource(logsArray);\r\n\t\t\t\tthis.dataSource.paginator = this.paginator;\r\n\t\t\t\tthis.dataSource.sort = this.sort;\r\n\t\t\t},\r\n\t\t\terr => {\r\n\t\t\t\tconsole.error(err);\r\n\r\n\t\t\t}\r\n\t\t)\r\n\t}\r\n\r\n\tGetUserName(userID: string): Observable {\r\n\t\treturn this.db.GetUsername(userID)\r\n\t}\r\n\r\n\tGetEventName(eventID: string) {\r\n\t\treturn this.db.GetEventName(eventID)\r\n\t}\r\n\r\n\r\n\tcalcServiceTime() {\r\n\t\treturn (Number(this.serviceTime) * 0.00000038).toFixed(0);\r\n\t}\r\n\r\n\r\n\r\n\trank: any;\r\n\tmaxrank = false;\r\n\tbufferValue: number = 100;\r\n\tcalculateRank(xp: number) {\r\n\t\tthis.db.FetchRanks().subscribe(data => {\r\n\r\n\t\t\tlet playerRank = 0;\r\n\r\n\t\t\tlet keys = Object.keys(data.data().ranks);\r\n\t\t\tfor (let i = 0; i < keys.length - 1; i++) {\r\n\t\t\t\tplayerRank = i;\r\n\t\t\t\tif (Number(keys[i]) >= xp) {\r\n\t\t\t\t\tif (i > 0)\r\n\t\t\t\t\t\tplayerRank--;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet values = Object.values(data.data().ranks)\r\n\t\t\tlet percentComplete: number = 100;\r\n\t\t\tlet xpToNext = 0;\r\n\r\n\t\t\tif (playerRank < Number(keys[keys.length - 2])) {\r\n\t\t\t\tlet rankDiff = Number(keys[playerRank + 1]) - Number(keys[playerRank]);\r\n\t\t\t\tlet xpToNext = Number(keys[playerRank + 1]) - xp;\r\n\t\t\t\tif (rankDiff == rankDiff)\r\n\t\t\t\t\tpercentComplete = ((rankDiff - xpToNext) / rankDiff) * 100;\r\n\t\t\t\telse {\r\n\t\t\t\t\tpercentComplete = 100;\r\n\t\t\t\t\tthis.maxrank = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tplayerRank = Number(keys[keys.length - 1]);\r\n\t\t\t\tpercentComplete = 100;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif (percentComplete == 0)\r\n\t\t\t\tpercentComplete = 2;\r\n\r\n\t\t\tlet nextLevel = keys[playerRank + 1];\r\n\t\t\tif (!nextLevel)\r\n\t\t\t\tnextLevel = keys[playerRank]\r\n\r\n\r\n\t\t\tthis.rank = {\r\n\t\t\t\trank: values[playerRank],\r\n\t\t\t\tpercent: 0,\r\n\t\t\t\tlevel: playerRank,\r\n\t\t\t\txpToNext: nextLevel,\r\n\t\t\t\txp: xp\r\n\t\t\t}\r\n\t\t\tthis.bufferValue = 0;\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.rank.percent = percentComplete\r\n\t\t\t}, 300)\r\n\r\n\r\n\t\t})\r\n\t}\r\n\r\n\tusernameValidation(control: AbstractControl): Promise | Observable {\r\n\t\treturn this.db.CheckIfUserExists(control.value).pipe(\r\n\t\t\tmap((data, idx) => {\r\n\t\t\t\tif (!data.empty) {\r\n\r\n\t\t\t\t\tcontrol.setErrors({ notUnique: \"Username is not unique\" })\r\n\r\n\t\t\t\t\treturn of(false);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t)\r\n\t}\r\n\r\n\r\n\tRequestPatch() {\r\n\t\tthis._bottomSheet.open(ProfileSheet,\r\n\t\t\t{\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tuserPatchList: Object.keys(this.userProfile.user.data().patches),\r\n\t\t\t\t\tuserPendingPatchList: this.pendingPatchesStringList,\r\n\t\t\t\t\tsuccess: this.success\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tlet sub = this.success.subscribe(complete => {\r\n\t\t\tif (complete == 'success') {\r\n\t\t\t\tthis.FetchUserPendingPatches()\r\n\t\t\t}\r\n\t\t\tthis.success = new EventEmitter()\r\n\t\t\tsub.unsubscribe();\r\n\t\t})\r\n\t}\r\n\r\n\tshowSpinner: boolean;\r\n\tSaveProfile() {\r\n\r\n\r\n\t\tlet obj = {}\r\n\r\n\r\n\r\n\t\tif (this.profileForm.valid) {\r\n\r\n\r\n\r\n\t\t\tif (this.profileForm.controls.username.value != null && this.profileForm.controls.username.value != '') {\r\n\t\t\t\tobj[\"userID\"] = this.profileForm.controls.username.value;\r\n\t\t\t}\r\n\t\t\tif (this.profileForm.controls.phone.value != null && this.profileForm.controls.phone.value != '') {\r\n\t\t\t\tobj[\"phoneNumber\"] = this.profileForm.controls.phone.value;\r\n\t\t\t}\r\n\t\t\tif (this.profileForm.controls.fullname.value != null && this.profileForm.controls.fullname.value != '') {\r\n\t\t\t\tobj[\"fullname\"] = this.profileForm.controls.fullname.value;\r\n\t\t\t}\r\n\t\t\tif (this.profileForm.controls.social.value != null && this.profileForm.controls.social.value != '') {\r\n\t\t\t\tobj[\"social\"] = this.profileForm.controls.social.value;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.croppedImage != null) {\r\n\t\t\t\tthis.showSpinner = true;\r\n\t\t\t\tthis.uploadProfilePicture(this.imageFile, !Object.keys(obj).length);\r\n\t\t\t}\r\n\r\n\t\t\tif (Object.keys(obj).length) {\r\n\t\t\t\tthis.showSpinner = true;\r\n\t\t\t\tthis.db.UpdateUserDocument(obj, this.userProfile).subscribe(\r\n\t\t\t\t\tpromise => {\r\n\t\t\t\t\t\tpromise.then(() => {\r\n\t\t\t\t\t\t\tthis.snippet.openSuccessSnackBar(\"Profile Updated\")\r\n\t\t\t\t\t\t\tthis.profileForm.reset()\r\n\t\t\t\t\t\t\tthis.LoadProfile(this.userProfile.user.id, this.initSubscription);\r\n\t\t\t\t\t\t\tthis.showSpinner = false;\r\n\t\t\t\t\t\t}).catch(\r\n\t\t\t\t\t\t\terr => {\r\n\t\t\t\t\t\t\t\tconsole.error(err)\r\n\t\t\t\t\t\t\t\tthis.snippet.openErrorSnackBar(\"Failed to Update Profile!\")\r\n\t\t\t\t\t\t\t\tthis.showSpinner = false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\r\n\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\r\n\tResetProfile() {\r\n\t\tthis.profileForm.reset();\r\n\t\tthis.croppedImage = null;\r\n\t\tthis.imageChangedEvent = '';\r\n\t\tthis.imageFile = null;\r\n\t\tthis.changeDetector.markForCheck();\r\n\t}\r\n\r\n\tDeleteTeam() {\r\n\t\tlet dialogRef: MatDialogRef = this.dialog.open(ConfirmDialogComponent, { data: { confirmString: 'Please confirm to delete your team details' } })\r\n\t\tdialogRef.afterClosed().subscribe((result: boolean) => {\r\n\t\t\tif (result) {\r\n\t\t\t\tthis.db.DeleteUserTeam(this.userProfile.user.id)\r\n\t\t\t\t\t.subscribe(\r\n\t\t\t\t\t\t(promise => {\r\n\t\t\t\t\t\t\tpromise\r\n\t\t\t\t\t\t\t\t.then(\r\n\t\t\t\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\t\t\t\tthis.snippet.openSuccessSnackBar(\"Team details deleted\")\r\n\t\t\t\t\t\t\t\t\t\tdelete this.userProfile.user.data().team\r\n\t\t\t\t\t\t\t\t\t\twindow.location.reload();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t).catch(err => {\r\n\t\t\t\t\t\t\t\t\tthis.snippet.openErrorSnackBar(\"Error deleting team details\")\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t)\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tSaveTeam() {\r\n\t\tif (this.profileTeamForm.valid) {\r\n\r\n\r\n\t\t\tif (!this.userProfile.teamImage) {\r\n\t\t\t\tthis.snippet.openErrorSnackBar(\"A Team Image is required\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.authService.user.subscribe(\r\n\t\t\t\tuser => {\r\n\t\t\t\t\tthis.db.SetUserTeam(user.uid, this.profileTeamForm.controls.teamName.value).then(() => {\r\n\t\t\t\t\t\tthis.LoadProfile(this.userProfile.user.id, this.initSubscription);\r\n\t\t\t\t\t\tthis.snippet.openSuccessSnackBar(\"Team Updated\");\r\n\t\t\t\t\t\tthis.profileTeamForm.reset();\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t)\r\n\r\n\t\t} else {\r\n\t\t\tthis.snippet.openErrorSnackBar(\"Team Form invalid\");\r\n\t\t}\r\n\t}\r\n\r\n\tprofileForm = new FormGroup({\r\n\t\tusername: new FormControl(null, {\r\n\t\t\tupdateOn: \"change\",\r\n\t\t\tvalidators: Validators.pattern(\"^[A-Za-z0-9_.]+$\"),\r\n\t\t\tasyncValidators: [\r\n\t\t\t\tthis.usernameValidation.bind(this)\r\n\t\t\t]\r\n\t\t}),\r\n\t\tfullname: new FormControl(null, {\r\n\t\t\tupdateOn: 'change',\r\n\t\t\tvalidators: Validators.pattern(\"^[a-zA-Z]+(([',. -][a-zA-Z ])?[a-zA-Z]*)*$\")\r\n\t\t}),\r\n\t\tphone: new FormControl(null, {\r\n\t\t\tupdateOn: 'change',\r\n\t\t\tvalidators: Validators.pattern(\"^\\\\d{3}(-| )*\\\\d{3}(-| )*\\\\d{4}$|^\\\\+\\\\d{4}(-| )*\\\\d{3}(-| )*\\\\d{4}$|^\\\\+\\\\d{2}(-| )*\\\\d{2}(-| )*\\\\d{3}(-| )*\\\\d{4}$\")\r\n\t\t}),\r\n\t\tsocial: new FormControl(null, {\r\n\t\t\tupdateOn: 'change',\r\n\t\t\tvalidators: Validators.max(35)\r\n\t\t})\r\n\t})\r\n\r\n\tprofileTeamForm = new FormGroup({\r\n\t\tteamName: new FormControl(null, {\r\n\t\t\tupdateOn: \"change\",\r\n\t\t\tvalidators: Validators.max(25)\r\n\t\t})\r\n\r\n\r\n\t})\r\n\r\n\trewardsDataLoaded: boolean = false;\r\n\tLoadRewards(user) {\r\n\r\n\t\tif (!this.rewardsDataLoaded) {\r\n\t\t\tthis.FetchPatches(user.data().patches);\r\n\t\t\tthis.FetchBadges(user.data().badges);\r\n\t\t\tthis.FetchUserPendingPatches();\r\n\t\t}\r\n\r\n\r\n\t\tthis.rewardsDataLoaded = true;\r\n\t}\r\n\r\n\r\n\tChangeMode(mode: string) {\r\n\t\tthis.mode = mode;\r\n\r\n\t}\r\n\r\n\tbadges: any;\r\n\tloadingBadges = false;\r\n\tbadgesEmpty = false;\r\n\tFetchBadges(badges) {\r\n\t\tif (Object.keys(badges).length) {\r\n\t\t\tthis.loadingBadges = true;\r\n\t\t\tthis.getBadgesSub = this.db.GetUserBadges(badges).subscribe(badges => {\r\n\t\t\t\tthis.loadingBadges = false;\r\n\t\t\t\tthis.badges = badges;\r\n\r\n\t\t\t}, (err) => {\r\n\t\t\t\tconsole.error(err)\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\tthis.badgesEmpty = true;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tpatches: any;\r\n\tloadingPatches = false;\r\n\tpatchesEmpty = false;\r\n\tFetchPatches(patches) {\r\n\t\tif (Object.keys(patches).length) {\r\n\t\t\tthis.loadingPatches = true;\r\n\t\t\tthis.getPatchesSub = this.db.GetUserPatches(patches).subscribe(patches => {\r\n\t\t\t\tthis.loadingPatches = false;\r\n\t\t\t\tthis.patches = patches\r\n\r\n\t\t\t}, (err) => {\r\n\t\t\t\tconsole.error(err)\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\tthis.patchesEmpty = true;\r\n\t\t}\r\n\t}\r\n\r\n\tpendingPatches: any;\r\n\tpendingPatchesStringList: string[]\r\n\tgetPendingSub: Subscription;\r\n\tfetchPendingComplete: boolean = false;\r\n\tFetchUserPendingPatches() {\r\n\t\tif (this.getPendingSub)\r\n\t\t\tthis.getPendingSub.unsubscribe()\r\n\r\n\t\tthis.getPendingSub = this.db.GetUserPendingPatchRequests(this.userProfile.user.id)\r\n\t\t\t.subscribe(pendingList => {\r\n\t\t\t\tthis.pendingPatches = pendingList;\r\n\r\n\t\t\t\tif (pendingList != null)\r\n\t\t\t\t\tthis.pendingPatchesStringList = pendingList.map(pending => {\r\n\t\t\t\t\t\treturn pending[0].data().patchID;\r\n\t\t\t\t\t})\r\n\t\t\t\tthis.fetchPendingComplete = true;\r\n\t\t\t},\r\n\t\t\t\t(err => {\r\n\t\t\t\t\tif (err == \"pending.empty\")\r\n\t\t\t\t\t\tthis.fetchPendingComplete = true;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tconsole.error(err)\r\n\t\t\t\t}))\r\n\t}\r\n\r\n\r\n\tuploadingProfilePicture: boolean = false;\r\n\tuploadProfilePicture(imageInput: any, clearSpinner) {\r\n\r\n\t\tthis.uploadingProfilePicture = true;\r\n\t\tconst file: File = imageInput\r\n\r\n\t\tif (file) {\r\n\t\t\tconst reader = new FileReader();\r\n\r\n\t\t\treader.addEventListener('loadend', (event: any) => {\r\n\r\n\t\t\t\tlet authsub = this.authService.user.subscribe(user => {\r\n\t\t\t\t\treturn this.db.uploadFile(file, user.uid)\r\n\t\t\t\t\t\t.then(task => {\r\n\r\n\r\n\r\n\t\t\t\t\t\t\tlet sub = this.db.FetchProfileImage(user.uid).subscribe(\r\n\t\t\t\t\t\t\t\t(image) => {\r\n\r\n\t\t\t\t\t\t\t\t\tthis.userProfile.image = image;\r\n\t\t\t\t\t\t\t\t\tthis.croppedImage = null;\r\n\t\t\t\t\t\t\t\t\tthis.imageChangedEvent = '';\r\n\t\t\t\t\t\t\t\t\tthis.imageFile = null;\r\n\t\t\t\t\t\t\t\t\tthis.changeDetector.markForCheck();\r\n\t\t\t\t\t\t\t\t\tthis.uploadingProfilePicture = false;\r\n\t\t\t\t\t\t\t\t\tif (clearSpinner) {\r\n\t\t\t\t\t\t\t\t\t\tthis.snippet.openSuccessSnackBar(\"image Updated\");\r\n\t\t\t\t\t\t\t\t\t\tthis.showSpinner = false;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t, err => {\r\n\t\t\t\t\t\t\t\t\tthis.snippet.openSuccessSnackBar(\"Failed to load new image\");\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\t\t\tsub.unsubscribe();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t)\r\n\r\n\t\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t\t(err: any) => {\r\n\t\t\t\t\t\tconsole.error(err);\r\n\t\t\t\t\t\tthis.snippet.openErrorSnackBar(\"Failed to update image\");\r\n\t\t\t\t\t\tauthsub.unsubscribe()\r\n\t\t\t\t\t},\r\n\t\t\t\t\t() => { authsub.unsubscribe() })\r\n\r\n\t\t\t});\r\n\r\n\t\t\treader.readAsDataURL(file);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tuploadProfileTeamPicture(imageInput: any) {\r\n\t\tconst file: File = imageInput.files[0];\r\n\t\tif (file) {\r\n\t\t\tconst reader = new FileReader();\r\n\r\n\t\t\treader.addEventListener('loadend', (event: any) => {\r\n\r\n\t\t\t\tlet authsub = this.authService.user.subscribe(user => {\r\n\t\t\t\t\tthis.db.uploadTeamImage(file, user.uid).then(task => {\r\n\t\t\t\t\t\tthis.snippet.openSuccessSnackBar(\"image Updated\");\r\n\r\n\t\t\t\t\t\tlet sub = this.db.FetchTeamImage(user.uid).subscribe(\r\n\t\t\t\t\t\t\t(image) => {\r\n\t\t\t\t\t\t\t\tthis.userProfile.teamImage = image;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t, err => {\r\n\t\t\t\t\t\t\t\tthis.snippet.openSuccessSnackBar(\"Failed to load new image\");\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\t\tsub.unsubscribe();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t)\r\n\r\n\r\n\t\t\t\t\t}).catch(() => {\r\n\t\t\t\t\t\tthis.snippet.openErrorSnackBar(\"image upload failed!\")\r\n\t\t\t\t\t});;\r\n\t\t\t\t},\r\n\t\t\t\t\t(err: any) => {\r\n\t\t\t\t\t\tconsole.error(err);\r\n\t\t\t\t\t\tthis.snippet.openErrorSnackBar(\"Failed to update image\");\r\n\t\t\t\t\t\tauthsub.unsubscribe()\r\n\t\t\t\t\t},\r\n\t\t\t\t\t() => { authsub.unsubscribe() })\r\n\r\n\t\t\t});\r\n\r\n\t\t\treader.readAsDataURL(file);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tapplyFilter(event: Event) {\r\n\t\tconst filterValue = (event.target as HTMLInputElement).value;\r\n\t\tthis.dataSource.filter = filterValue.trim().toLowerCase();\r\n\t\tthis.dataSource.sort;\r\n\r\n\t\tif (this.dataSource.paginator) {\r\n\t\t\tthis.dataSource.paginator.firstPage();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tconvertDataUrlToBlob(dataUrl): Blob {\r\n\t\tconst arr = dataUrl.split(',');\r\n\t\tconst mime = arr[0].match(/:(.*?);/)[1];\r\n\t\tconst bstr = atob(arr[1]);\r\n\t\tlet n = bstr.length;\r\n\t\tconst u8arr = new Uint8Array(n);\r\n\r\n\t\twhile (n--) {\r\n\t\t\tu8arr[n] = bstr.charCodeAt(n);\r\n\t\t}\r\n\r\n\t\treturn new Blob([u8arr], { type: mime });\r\n\t}\r\n\r\n\timageChangedEvent: any = '';\r\n\tcroppedImage: any = null;\r\n\tshowCropper = false;\r\n\timageFile: any;\r\n\r\n\tfileChangeEvent(event: any): void {\r\n\t\tthis.imageChangedEvent = event;\r\n\t}\r\n\timageCropped(event: ImageCroppedEvent) {\r\n\t\t// this.imageFile = this.b64toBlob(event.base64, 'jpg', 256)\r\n\t\tthis.croppedImage = event.base64;\r\n\t\t// console.log(this.croppedImage);\r\n\t\tthis.imageFile = this.convertDataUrlToBlob(event.base64);\r\n\t}\r\n\timageLoaded(image: LoadedImage) {\r\n\t\t// show cropper\r\n\t\tconsole.log(\"image uploaded\");\r\n\t\tthis.showCropper = true;\r\n\t}\r\n\tcropperReady() {\r\n\t\t// cropper ready\r\n\t}\r\n\tloadImageFailed() {\r\n\t\tconsole.log(\"image upload failed\");\r\n\r\n\t\t// show message\r\n\t}\r\n\r\n}\r\n\r\n\r\n","\n \n \n
\n {{patch[0].data().patchName}}\n

\n \n -{{patch[0].data().patchDescription}}\n \n

\n
\n
\n
\n\n
\n

\n Selected Patch\n

\n\n
\n \n
\n {{selectedPatch[0].data().patchName}}\n

\n \n -{{selectedPatch[0].data().patchDescription}}\n \n

\n
\n
\n\n

\n We need a picture of your {{selectedPatch[0].data().patchName}} patch.\n\n\n

\n\n
\n You're ready to request a patch!\n thumb_up\n
\n
\n
\n \n
\n
\n
\n
\n

Drag&Drop files here

or\n
\n photo_camera Browse Files\n \n
\n
\n
\n
\n\n\n
\n \n
\n\n
\n\n
\n \n
","
\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\r\n\t\t\t
\r\n\r\n\t\t\t\t
\r\n\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{userProfile.user.data().userID}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{userProfile.user.data().fullname}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{rank.rank}}\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\tRewards\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\tProfile\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\tLogs\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tTeam:\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{{userProfile.user.data().team}}\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tXP\r\n\t\t\t\t\t\t\t\t\t\t{{userProfile.user.data().xp}}/{{rank.xpToNext}}\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tService-time:\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t

{{calcServiceTime()}} Months\r\n\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tDeployments:\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t{{userProfile.user.data().matchesPlayed}}

\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tSocial:\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{{userProfile.user.data().social}}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{{userProfile.user.data().social}}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\tPatches\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\t\t

No Patches Yet ...

\r\n\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{patch[1].data().patchName}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tPending\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{patch[1].data().patchDescription}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\t
\r\n\r\n\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t{{patch[0].data().patchName}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{patch[0].data().patchDescription}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\t
\r\n\r\n\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\tAchievements\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t

No Badges Yet ...

\r\n\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t{{badge[0].data().badgeName}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t-{{badge[0].data().badgeDescription}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t
\r\n\r\n\r\n\r\n\t\t\t\t\t\t
\r\n\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t
\r\n\r\n\t\t\t\r\n\r\n\t\t
\r\n\r\n\r\n\t\t
\r\n\r\n\r\n\t\t\t
\r\n\t\t\t\t

Edit Profile

\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\tinfoFor best\r\n\t\t\t\t\t\t\t\tresults upload a high resolution image, crop with focal point in\r\n\t\t\t\t\t\t\t\tthe center.\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\r\n\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tEnter a callsign\r\n\t\t\t\t\t\t{{userProfile.user.data().userID}}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tborder_color\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tUsername is not unique\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tEnter your fullname\r\n\t\t\t\t\t\t{{userProfile.user.data().fullname}}\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tborder_color\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tName format not valid ,[A-z] and spacing only\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tEnter your phone number\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{{userProfile.user.data().phoneNumber}}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tborder_color\r\n\r\n\t\t\t\t\t\r\n\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tEnter any Social link\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t>{{userProfile.user.data().social}}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tedit\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t
\r\n\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t\t

Edit Team

\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
\r\n\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tCool Team Name\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{userProfile.user.data().team}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tedit\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t
\r\n\r\n\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t

Logs

\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tsearch Search\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
Time\r\n\t\t\t\t\t\t\t\t

{{row.timeStamp |\r\n\t\t\t\t\t\t\t\t\t\tdate:'dd/LLL/yy\r\n\t\t\t\t\t\t\t\t\t\tHH:mm'}}

\r\n\t\t\t\t\t\t\t
Log\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t{{row.logMessage}}\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t
Issuer Id\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t{{row.reasonID}}\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t
No data matching the filter \"{{input.value}}\"
\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\r\n\r\n\r\n\r\n\t\t
\r\n\r\n\r\n\t
\r\n\r\n
","import { Component, OnDestroy, OnInit, Inject } from '@angular/core';;\nimport { Subscription, of } from 'rxjs';\nimport { GpsHelpComponent } from 'src/app/pages/live-event-page/participation/GpsHelp.component';\nimport { AuthService } from 'src/app/services/auth.service';\nimport { SnippetService } from 'src/app/services/snippet.service';\nimport { DatabaseService } from \"../../../services/database.service\"\nimport { MatBottomSheetRef, MAT_BOTTOM_SHEET_DATA } from '@angular/material/bottom-sheet';\nimport firebase from 'firebase/app';\n\n@Component({\n selector: 'GpsRegistration',\n templateUrl: 'liveEventGpsRegistration.html',\n})\nexport class GpsRegistrationSheet implements OnInit, OnDestroy {\n constructor(\n private _bottomSheetRef: MatBottomSheetRef,\n private db: DatabaseService,\n private auth: AuthService,\n private snippet: SnippetService,\n @Inject(MAT_BOTTOM_SHEET_DATA) public data: any,\n ) {\n }\n\n userID: string;\n GPS_ID: number;\n GPSstate: string;\n GPSError: string;\n currentPosition: any;\n eventPosition: any;\n\n ngOnInit() {\n\n // check the satelite location first and ensure it is within a range of the event gps \n this.auth.user.subscribe(user => {\n this.userID = user.uid;\n this.findCurrentLocation()\n })\n }\n\n\n ngOnDestroy() {\n if (this.registerParticipantSub != null)\n this.registerParticipantSub.unsubscribe();\n if (this.GPS_ID)\n navigator.geolocation.clearWatch(this.GPS_ID);\n if (this.bonusXPSub)\n this.bonusXPSub.unsubscribe();\n\n\n\n }\n\n\n findCurrentLocation() {\n if (navigator.geolocation) {\n this.GPS_ID = navigator.geolocation.watchPosition(this.showPosition, this.showError, { enableHighAccuracy: true, maximumAge: 0, timeout: 7000 });\n } else {\n //change this to a snippet\n alert(\"Geolocation is not supported by this browser.\");\n }\n }\n\n registerParticipant(claimBonuses: boolean = false) {\n // fetch the team of the user first \n\n //if you remove this people register in loops :O\n //stop watching since we are in range now\n navigator.geolocation.clearWatch(this.GPS_ID);\n\n if (this.registerParticipantSub != null)\n this.registerParticipantSub.unsubscribe();\n\n this.registerParticipantSub = this.db.RegisterParticipantForEvent(this.auth.user.value.uid, this.data.eventID, Number(this.data.team))\n .subscribe((batch) => {\n this.registerParticipantSub.add(\n of(batch.commit())\n .subscribe(() => {\n this.GPSstate = \"Registered\"\n this.snippet.openSuccessSnackBar(\"Welcome to the event soldier!\")\n firebase.analytics().logEvent('event_participant', {\n success: 'true',\n BonusXP: \"false\",\n event_title: this.data.eventTitle,\n GPS: \"true\"\n });\n if (claimBonuses)\n this.ClaimBonusXP()\n else {\n this.registerParticipantSub.unsubscribe()\n this._bottomSheetRef.dismiss()\n }\n })\n )\n }, err => {\n this.snippet.openErrorSnackBar(err)\n this.registerParticipantSub.unsubscribe();\n this._bottomSheetRef.dismiss()\n })\n }\n\n\n bonusXPSub: Subscription;\n ClaimBonusXP() {\n if (this.bonusXPSub != null)\n this.bonusXPSub.unsubscribe();\n\n this.bonusXPSub = this.db.ClaimBonusXP(this.data.eventID, this.userID).subscribe(batchStatement => {\n this.bonusXPSub.add(of(batchStatement[0][2].commit()).subscribe(\n () => {\n this.snippet.openSuccessSnackBar(\"Rewards Claimed!\")\n firebase.analytics().logEvent('event_participant', {\n success: 'true',\n BonusXP: \"true\",\n event_title: this.data.eventTitle,\n GPS: \"true\"\n });\n this.bonusXPSub.unsubscribe();\n this._bottomSheetRef.dismiss()\n }\n ))\n }, err => {\n console.error(err);\n this.snippet.openErrorSnackBar(err)\n this._bottomSheetRef.dismiss()\n this.bonusXPSub.unsubscribe();\n })\n\n\n }\n\n gpsFeedback = \"\"\n //this has to be a es5 function as a property of class , for some reason typscript methods dont have the same scope as the javascript ones -_-\n showPosition = (position) => {\n\n this.GPSstate = \"Awaiting\";\n this.currentPosition = { lat: position.coords.latitude, long: position.coords.longitude };\n let distance = this.distance(position.coords.latitude, position.coords.longitude, this.data.eventLocation[0], this.data.eventLocation[1], \"K\");\n\n\n // IF WITHIN 1KM of THE EVENT ALLOW REGISTER\n if (distance <= 1.0) {\n\n //check the mode one is registration the other is claim bonus XP \n if (this.data.mode == 'register')\n this.registerParticipant(this.data.bonusButtonDisabled);\n else if (this.data.mode == 'bonusXP') {\n navigator.geolocation.clearWatch(this.GPS_ID);\n this.ClaimBonusXP();\n }\n\n }\n else {\n this.gpsFeedback = \"
Current distance from event:
\" + distance.toPrecision(3).toString() + \"km. \" + \"

Device GPS Accuracy:
\" + Number(position.coords.accuracy).toFixed(2).toString() + \" m.\"\n this.GPSstate = \"OutOfRange\"\n }\n\n\n }\n\n // openHelpDialog() {\n // this.helpdialog.open(GpsHelpComponent, {\n // width: '80%',\n // })\n // }\n\n showError = (error) => {\n switch (error.code) {\n case error.PERMISSION_DENIED:\n this.GPSError = \"ERROR

User denied the request for Geolocation!

Please check your settings and allow this page to access gps information

\"\n break;\n case error.POSITION_UNAVAILABLE:\n this.GPSError = \"Location information is unavailable.\"\n break;\n case error.TIMEOUT:\n this.GPSError = \"The request to get user location timed out.\"\n break;\n case error.UNKNOWN_ERROR:\n this.GPSError = \"An unknown error occurred.\"\n break;\n\n }\n\n }\n\n distance(lat1, lon1, lat2, lon2, unit) {\n if ((lat1 == lat2) && (lon1 == lon2)) {\n return 0;\n }\n else {\n let radlat1 = Math.PI * lat1 / 180;\n let radlat2 = Math.PI * lat2 / 180;\n let theta = lon1 - lon2;\n let radtheta = Math.PI * theta / 180;\n let dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);\n if (dist > 1) {\n dist = 1;\n }\n dist = Math.acos(dist);\n dist = dist * 180 / Math.PI;\n dist = dist * 60 * 1.1515;\n if (unit == \"K\") { dist = dist * 1.609344 }\n if (unit == \"N\") { dist = dist * 0.8684 }\n return dist;\n }\n }\n\n registerParticipantSub: Subscription;\n\n\n\n}\n","
\n
\n
\n

Connecting to Satellite...

\n
\n Loading...\n
\n\n
\n
\n

Attempting Registration ... please be patient\n

\n

Checking GPS position... please be patient

\n
\n Loading...\n
\n

\n
\n
\n

Welcome to the event soldier.

\n

GPS IN RANGE

\n \n check_circle\n \n
\n
\n

You're out of the event range! (~500m)

\n
If GPS is unavailable please find a marshal and ask to scan a QR CODE
\n

\n
\n \n \n \n \n \n \n
\n
\n

\n\n \n
\n
","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","
MAIN EVENTS
\r\n
\r\n \r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n\r\n {{mainEvents[0].data.eventTitle}}\r\n \r\n

\r\n {{mainEvents[0].data.eventStartTime.seconds*1000 |\r\n date:'medium'}}

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

\r\n View\r\n Event\r\n

\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n {{mainEvents[1].data.eventTitle}}\r\n \r\n \r\n

\r\n {{mainEvents[1].data.eventStartTime.seconds*1000 |\r\n date:'medium'}}

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

\r\n View\r\n Event\r\n

\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n {{mainEvents[2].data.eventTitle}}\r\n \r\n

\r\n {{mainEvents[2].data.eventStartTime.seconds*1000 |\r\n date:'medium'}}

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

\r\n View\r\n Event\r\n

\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { DatabaseService } from 'src/app/services/database.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n\tselector: 'app-events-page',\r\n\ttemplateUrl: './events-page.component.html',\r\n\tstyleUrls: ['./events-page.component.scss']\r\n})\r\nexport class EventsPageComponent implements OnInit {\r\n\r\n\tmainEvents: any[];\r\n\r\n\timages: string[] = []\r\n\tcurrentState = 0;\r\n\t@ViewChild('mainEvent') mainEvent: ElementRef;\r\n\r\n\r\n\temptyEvent = {\r\n\t\teventTitle: \"Coming Soon\",\r\n\t\teventStartTime: Date.now().toString(),\r\n\t\teventDescription: \"A major event has not been selected yet for this space\",\r\n\t}\r\n\r\n\tloading: Boolean = true\r\n\r\n\tpublic current: any;\r\n\r\n\tScrollToMainEvent(state) {\r\n\t\tthis.clickToggle(state)\r\n\t\tthis.mainEvent.nativeElement.scrollIntoView({ behavior: 'smooth' });\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\r\n\t\tthis.db.GetMainEvents().subscribe(events => {\r\n\t\t\tthis.mainEvents = [];\r\n\r\n\t\t\tevents.forEach(event => {\r\n\r\n\t\t\t\tthis.current = { key: event[0].id, data: event[0].data() }\r\n\t\t\t\tthis.mainEvents.push({ key: event[0].id, data: event[0].data() });\r\n\t\t\t\tthis.images.push(event[1])\r\n\t\t\t})\r\n\r\n\t\t\tlet rem = 2 - this.mainEvents.length\r\n\t\t\tfor (rem; rem >= 0; rem--) {\r\n\t\t\t\tthis.mainEvents.push({ key: null, data: this.emptyEvent });\r\n\t\t\t\tthis.images.push(\"../../../assets/images/grey.png\")\r\n\t\t\t}\r\n\t\t\tthis.loading = false;\r\n\t\t})\r\n\t}\r\n\tconstructor(private db: DatabaseService, private sanitization: DomSanitizer, private router: Router) {\r\n\r\n\t}\r\n\r\n\t@ViewChild('backgroundLayer') backgroundLayer;\r\n\r\n\tsanitize(url: string) {\r\n\t\treturn this.sanitization.bypassSecurityTrustStyle(`url('${url}')`);\r\n\t}\r\n\r\n\tsanitizeBG(url: string) {\r\n\t\treturn this.sanitization.bypassSecurityTrustStyle(` url('${url}'), linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5))`);\r\n\t}\r\n\r\n\r\n\r\n\tnavigate(key) {\r\n\r\n\t\tthis.router.navigate([\"/events\"], { queryParams: { eventID: key } })\r\n\t}\r\n\r\n\ttoggle(state: number) {\r\n\t\tif (this.mainEvents && this.mainEvents.length - 1 >= state && !this.clickToggled) {\r\n\t\t\tif (this.mainEvents[state]) {\r\n\r\n\t\t\t\tthis.current = this.mainEvents[state];\r\n\t\t\t\tthis.currentState = state\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tclickToggled: boolean = false;\r\n\tclickToggle(state: number) {\r\n\t\tif (this.mainEvents && this.mainEvents.length - 1 >= state) {\r\n\t\t\tif (this.mainEvents[state]) {\r\n\t\t\t\tthis.clickToggled = true;\r\n\t\t\t\tthis.current = this.mainEvents[state];\r\n\t\t\t\tthis.currentState = state\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\r\n}\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\n\r\n\r\ninterface DialogData {\r\n name: string;\r\n}\r\n@Component({\r\n selector: 'app-confirm-dialog',\r\n templateUrl: '../confirm-dialog/confirm-dialog.component.html',\r\n styleUrls: ['../confirm-dialog/confirm-dialog.component.scss']\r\n})\r\nexport class ConfirmDialogComponent {\r\n\r\n\r\n constructor(@Inject(MAT_DIALOG_DATA) public data: DialogData) {\r\n\r\n }\r\n\r\n getString() {\r\n return this.data[\"confirmString\"];\r\n }\r\n\r\n};\r\n","

Are you sure?

\r\n\r\n

{{getString()}}

\r\n
\r\n\r\n \r\n \r\n","import { Component, OnInit, ViewChild, AfterViewInit, ElementRef } from '@angular/core';\r\nimport { NodesComponent } from '../../nodes/nodes.component'\r\nimport { ScrollServiceService } from 'src/app/services/scroll-service.service';\r\n\r\nimport { AboutUsPageComponent } from '../about-us-page/about-us-page.component';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { State } from 'src/app/services/state-service.service';\r\n\r\n\r\n\r\n\r\n@Component({\r\n\tselector: 'app-landing-page',\r\n\ttemplateUrl: './landing-page.component.html',\r\n\tstyleUrls: ['./landing-page.component.scss']\r\n})\r\nexport class LandingPageComponent implements OnInit, AfterViewInit {\r\n\r\n\t@ViewChild(NodesComponent, { static: true })\r\n\tnodes: NodesComponent;\r\n\r\n\t@ViewChild(AboutUsPageComponent) aboutUs;\r\n\t@ViewChild('contact') contact: ElementRef;\r\n\r\n\r\n\r\n\r\n\tconstructor(private scroll: ScrollServiceService, private router: ActivatedRoute, public platform: Platform) { }\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.nodes.particleName = \"particlesLanding\"\r\n\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tif (this.router.data) {\r\n\t\t\tthis.router.data.subscribe(\r\n\t\t\t\tdata => {\r\n\t\t\t\t\tif (data.scrollTo == 'aboutUs') {\r\n\t\t\t\t\t\tthis.ScrollToAboutUs();\r\n\t\t\t\t\t} else if (data.scrollTo == 'contactUs') {\r\n\t\t\t\t\t\tthis.ScrollToContactUs();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t)\r\n\t\t}\r\n\r\n\t\tthis.nodes.loadLandingConfig();\r\n\t\tthis.scroll.scrollToAboutUs.subscribe((trigger) => {\r\n\t\t\tthis.ScrollToAboutUs()\r\n\t\t})\r\n\t\tthis.scroll.scrollToContactUs.subscribe((trigger) => {\r\n\t\t\tthis.ScrollToContactUs()\r\n\t\t})\r\n\t}\r\n\r\n\r\n\r\n\tScrollToContactUs() {\r\n\r\n\t\tthis.contact.nativeElement.scrollIntoView({ behavior: 'smooth' });\r\n\t}\r\n\r\n\tScrollToAboutUs() {\r\n\r\n\t\tthis.aboutUs.el.nativeElement.scrollIntoView({ behavior: 'smooth' });\r\n\t}\r\n\r\n\r\n\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Cof Airsoft

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
","import { NgModule } from '@angular/core';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatGridListModule } from '@angular/material/grid-list';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\n\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\n\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatBottomSheetModule } from '@angular/material/bottom-sheet';\r\n\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n\r\n@NgModule({\r\n exports: [\r\n MatBottomSheetModule,\r\n MatAutocompleteModule,\r\n MatBadgeModule,\r\n MatButtonModule,\r\n MatCardModule,\r\n MatCheckboxModule,\r\n MatChipsModule,\r\n MatDatepickerModule,\r\n MatDialogModule,\r\n MatDividerModule,\r\n MatExpansionModule,\r\n MatGridListModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatListModule,\r\n MatNativeDateModule,\r\n MatPaginatorModule,\r\n MatProgressSpinnerModule,\r\n MatSelectModule,\r\n MatSidenavModule,\r\n MatSlideToggleModule,\r\n MatSnackBarModule,\r\n MatTableModule,\r\n MatTabsModule,\r\n MatToolbarModule,\r\n MatProgressBarModule,\r\n MatTooltipModule\r\n ]\r\n})\r\nexport class MaterialModule { }\r\n\r\n\r\n/** Copyright 2020 Google LLC. All Rights Reserved.\r\n Use of this source code is governed by an MIT-style license that\r\n can be found in the LICENSE file at http://angular.io/license */","import { AfterViewInit, ChangeDetectorRef, Component, EventEmitter, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { DatabaseService, registrationData, REGISTRATION_STATUS } from '../../services/database.service';\r\n\r\nimport { combineLatest, forkJoin, interval, Observable, of, Subscription } from 'rxjs';\r\n\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport firebase from 'firebase/app';\r\nimport { SnippetService } from 'src/app/services/snippet.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { map, switchMap, take, tap } from 'rxjs/operators';\r\nimport { eventData } from '../../services/database.service';\r\nimport { State } from 'src/app/services/state-service.service';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\n\r\nclass loadedEvent {\r\n\teventID: string;\r\n\teventData: eventData;\r\n\teventImage: Observable;\r\n\tcanRegister: boolean;\r\n\teventOver: boolean;\r\n\ttotalEventParticipants: any[];\r\n\tslicedParticipantArr: any[];\r\n\tpatches: any[];\r\n\tbadges: any[];\r\n\teventMinutes: String;\r\n\teventHours: String;\r\n\teventSeconds: String;\r\n\tuserRegistedPrior: boolean;\r\n\tminimumXp?: number = null;\r\n\teventBookable: boolean = false;\r\n\tbookingExpired: boolean = false;\r\n\tuserBooked: boolean = false;\r\n\tminEventBookingXP: number = 0;\r\n\tconstructor() {\r\n\t\tthis.eventID = '';\r\n\t\tthis.canRegister = false;\r\n\t\tthis.eventImage = null;\r\n\t\tthis.eventOver = false;\r\n\t\tthis.badges = [];\r\n\t\tthis.patches = [];\r\n\t\tthis.slicedParticipantArr = [];\r\n\t\tthis.totalEventParticipants = [];\r\n\t\tthis.eventData = null;\r\n\t\tthis.eventHours = '';\r\n\t\tthis.eventMinutes = '';\r\n\t\tthis.eventSeconds = '';\r\n\t\tthis.userRegistedPrior = false;\r\n\t\tthis.eventBookable = false;\r\n\t\tthis.bookingExpired = false;\r\n\t}\r\n}\r\n\r\n@Component({\r\n\tselector: 'app-events-detail-page',\r\n\ttemplateUrl: './events-detail-page.component.html',\r\n\tstyleUrls: ['./events-detail-page.component.scss'],\r\n})\r\nexport class EventsDetailPageComponent extends State implements OnInit, AfterViewInit, OnDestroy {\r\n\tinterested: number = 0;\r\n\tnotAttending: number = 0;\r\n\r\n\t//infinite scoll\r\n\tthrottle = 50;\r\n\tscrollDistance = 0.5;\r\n\tscrollUpDistance = 2;\r\n\t@ViewChild('snav', { static: true }) snav;\r\n\tloadMore = false;\r\n\topened: boolean = true;\r\n\tuserParticipatingInEventAlready: boolean = false;\r\n\t@ViewChild('toolTip') tooltip: MatTooltip;\r\n\tcurrentUser: any = null;\r\n\teventBookable: boolean;\r\n\tbookingData: firebase.firestore.DocumentData = null;\r\n\tuserXP: number;\r\n\r\n\tconstructor(\r\n\t\tprivate db: DatabaseService,\r\n\t\tprivate auth: AuthService,\r\n\t\tprivate route: ActivatedRoute,\r\n\t\tprivate router: Router,\r\n\t\tprivate snippet: SnippetService,\r\n\t\tprivate sanitization: DomSanitizer,\r\n\t\tprivate cdr: ChangeDetectorRef\r\n\t) {\r\n\t\tsuper(EventsDetailPageComponent);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tif (this.eventSub) this.eventSub.unsubscribe();\r\n\t\tif (this.initialLoadSub) this.initialLoadSub.unsubscribe();\r\n\t}\r\n\r\n\tuserID: string;\r\n\teventsLoaded = false;\r\n\tranks: any;\r\n\teventSub: Subscription;\r\n\tinitialLoadSub: Subscription;\r\n\tloginRequired = true;\r\n\tngOnInit() {\r\n\t\tthis.bookingData = null;\r\n\t\tthis.nonExpiredEvents = [];\r\n\t\tthis.expiredEvents = [];\r\n\t\tthis.lastExpiredEvent = null;\r\n\t\tthis.lastNonExpiredEvent = null;\r\n\r\n\t\t// This fixes the infinite list issue but duplicates the list?\r\n\r\n\t\t// this.GetExpiredEvents().subscribe();\r\n\t\t// this.GetNonExpiredEvents().subscribe();\r\n\r\n\t\tlet authSub = this.auth.afAuth.user.pipe(\r\n\t\t\tswitchMap((user: any) => {\r\n\t\t\t\tif (!user) {\r\n\t\t\t\t\tif (this.selectedEvent) this.selectedEvent.userRegistedPrior = false;\r\n\t\t\t\t\tthis.userRegistrationStatus = null;\r\n\t\t\t\t\tthis.userID = null;\r\n\t\t\t\t\treturn of(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.userID = user.uid;\r\n\t\t\t\t\tthis.db\r\n\t\t\t\t\t\t.GetUserXP(user.uid)\r\n\t\t\t\t\t\t.pipe(\r\n\t\t\t\t\t\t\tmap((xp) => {\r\n\t\t\t\t\t\t\t\treturn xp;\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.subscribe((xp) => {\r\n\t\t\t\t\t\t\tthis.userXP = xp;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\tconsole.log(user.uid);\r\n\t\t\t\t\treturn this.db.FetchUser(user.uid).pipe(take(1));\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\tlet getRanks = this.db.FetchRanks().pipe(\r\n\t\t\tmap((ranks) => {\r\n\t\t\t\tthis.ranks = ranks.data().ranks;\r\n\t\t\t})\r\n\t\t);\r\n\t\tthis.initialLoadSub = combineLatest([this.GetNonExpiredEvents(), this.GetExpiredEvents(), authSub, getRanks, this.route.queryParams])\r\n\t\t\t.pipe(\r\n\t\t\t\tmap((eventsData) => {\r\n\t\t\t\t\tif (eventsData[4].eventID) {\r\n\t\t\t\t\t\tlet eventNew = eventsData[0].find((d) => d.id == eventsData[4].eventID);\r\n\t\t\t\t\t\tlet eventOld = eventsData[1].find((d) => d.id == eventsData[4].eventID);\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\texpired: eventNew != null ? false : eventOld != null ? true : false,\r\n\t\t\t\t\t\t\tevent: !eventNew ? eventOld : eventNew,\r\n\t\t\t\t\t\t\terror: !eventNew && !eventOld,\r\n\t\t\t\t\t\t\tuser: eventsData[2],\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t} else\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\texpired: false,\r\n\t\t\t\t\t\t\tevent: eventsData[0][0],\r\n\t\t\t\t\t\t\terror: null,\r\n\t\t\t\t\t\t\tuser: eventsData[2],\r\n\t\t\t\t\t\t};\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t\t.subscribe((data) => {\r\n\t\t\t\tif (data.error) this.router.navigate(['events']);\r\n\t\t\t\tif (data.user) this.currentUser = data.user.data();\r\n\t\t\t\tthis.scrollIndex = 0;\r\n\t\t\t\tthis.LoadUpEvent(data.event);\r\n\t\t\t\tthis.upcoming = !data.expired;\r\n\t\t\t\tthis.selectedEvent.eventID = data.event.id;\r\n\t\t\t\tthis.eventsLoaded = true;\r\n\t\t\t});\r\n\t}\r\n\r\n\tonScrollUp() {}\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.snav.closedStart.subscribe(() => {\r\n\t\t\tfirebase.analytics().logEvent('view_event_details', {\r\n\t\t\t\tevent_detail_page_open: 'true',\r\n\t\t\t});\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tif (this.tooltip) this.tooltip.show(600);\r\n\t\t\t}, 1500);\r\n\t\t});\r\n\r\n\t\tif (!this.snav.opened) this.snav.toggle();\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tmobileToggle() {\r\n\t\tif (window.innerWidth <= 1200) {\r\n\t\t\tthis.snav.toggle();\r\n\t\t}\r\n\t}\r\n\r\n\tonScrollDownExpired() {\r\n\t\tlet sub = this.GetExpiredEvents().subscribe(\r\n\t\t\t(data) => {},\r\n\t\t\t(err) => {\r\n\t\t\t\tconsole.error(err);\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tsub.unsubscribe();\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tonScrollDownNonExpired() {\r\n\t\tlet sub = this.GetNonExpiredEvents().subscribe(\r\n\t\t\t(data) => {},\r\n\t\t\t(err) => {\r\n\t\t\t\tconsole.error(err);\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tsub.unsubscribe();\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tscrollIndex = 0;\r\n\tonParticipantScrollDown() {\r\n\t\tthis.scrollIndex += 20;\r\n\t\tthis.selectedEvent.slicedParticipantArr = Object.values(this.selectedEvent.totalEventParticipants).slice(0, this.scrollIndex + 20);\r\n\t}\r\n\r\n\teventExpired(EndTime) {\r\n\t\tconst epochNow = Date.now() / 1000;\r\n\t\treturn Number(EndTime) - Number(epochNow) + 10800 <= 0;\r\n\t}\r\n\r\n\tbookingExpired(startTime) {\r\n\t\tif (!this.selectedEvent.eventData.bookingCutoffTime) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn Number(this.selectedEvent.eventData.bookingCutoffTime?.seconds || 0) - Number(startTime) <= 0;\r\n\t}\r\n\r\n\tbookingAvailable() {\r\n\t\tconst epochNow = Date.now() / 1000;\r\n\t\tconst bookingStartTime = this.selectedEvent.eventData.bookingStartTime?.seconds;\r\n\t\tif (bookingStartTime) {\r\n\t\t\treturn Number(bookingStartTime) - Number(epochNow) <= 0;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\tswitchEvent(event) {\r\n\t\tlet urlTree = this.router.parseUrl(this.router.url);\r\n\t\turlTree.queryParams['eventID'] = event.id;\r\n\t\tthis.router.navigateByUrl(urlTree);\r\n\t}\r\n\r\n\tselectedEvent: loadedEvent;\r\n\tupcoming: boolean = true;\r\n\tloadedParticipants = [];\r\n\r\n\tviewProfile(user) {\r\n\t\tthis.router.navigateByUrl(`profile?userID=${user.id}`);\r\n\t}\r\n\r\n\tsecondsTillStart = 99999;\r\n\tLoadUpEvent(event: firebase.firestore.DocumentSnapshot) {\r\n\t\tthis.bookingData = null;\r\n\t\tthis.lastExpiredEvent = null;\r\n\t\tthis.lastNonExpiredEvent = null;\r\n\t\tif (this.eventSub) this.eventSub.unsubscribe();\r\n\r\n\t\tthis.selectedEvent = new loadedEvent();\r\n\r\n\t\tconst availableRentals =\r\n\t\t\tevent.data().rentals?.filter((rental) => {\r\n\t\t\t\tif (rental.remaining > 0) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}) || [];\r\n\t\tthis.selectedEvent.eventData = { ...event.data(), rentals: availableRentals } as eventData;\r\n\r\n\t\tconst epochNowSeconds = new Date().getTime() / 1000;\r\n\t\tlet totalSeconds = Number(event.data().eventStartTime.seconds) - Number(epochNowSeconds);\r\n\t\tthis.secondsTillStart = totalSeconds;\r\n\t\tlet totalSecondsEnd = Number(event.data().eventEndTime.seconds) - Number(epochNowSeconds);\r\n\r\n\t\tthis.selectedEvent.bookingExpired = this.bookingExpired(epochNowSeconds);\r\n\r\n\t\tthis.selectedEvent.canRegister = totalSeconds <= 0 ? false : true;\r\n\t\tthis.selectedEvent.eventOver = totalSecondsEnd + 10800 <= 0 ? true : false;\r\n\t\tthis.loadMore = false;\r\n\r\n\t\tthis.getBadges(event);\r\n\t\tthis.getPatches(event);\r\n\r\n\t\tthis.CheckIfUserPlaying(event.id);\r\n\t\tthis.SwitchTeamDialog();\r\n\t\tthis.selectedEvent.eventImage = this.db.FetchEventImage(event.id);\r\n\t\tthis.selectedEvent.minEventBookingXP = event.data().minEventBookingXP || 0;\r\n\r\n\t\tthis.eventSub = this.LoadAllEventParticipants(event.id).subscribe((users: any[]) => {\r\n\t\t\tusers.forEach((user) => {\r\n\t\t\t\tif (user.removed) {\r\n\t\t\t\t\tthis.selectedEvent.totalEventParticipants = this.selectedEvent.totalEventParticipants.filter((u) => u.id != user.id);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet obj = {\r\n\t\t\t\t\t\tcallsign: user.callsign,\r\n\t\t\t\t\t\txp: user.xp,\r\n\t\t\t\t\t\tteam: user.team,\r\n\t\t\t\t\t\ttimestamp: user.timestamp,\r\n\t\t\t\t\t\tid: user.id,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tif (user.id == this.userID) this.selectedEvent.totalEventParticipants.unshift(obj);\r\n\t\t\t\t\telse this.selectedEvent.totalEventParticipants.push(obj);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (this.getCount() >= this.selectedEvent.eventData.maxParticipants) {\r\n\t\t\t\tthis.WatchPositionInQueue();\r\n\t\t\t}\r\n\t\t\tthis.selectedEvent.slicedParticipantArr = Object.values(this.selectedEvent.totalEventParticipants).slice(0, this.scrollIndex + 20);\r\n\t\t});\r\n\r\n\t\tif (this.userID) {\r\n\t\t\tthis.loginRequired = false;\r\n\t\t\tthis.WatchUserRegistration(event.id);\r\n\t\t\tthis.WatchUserBooking(event.id);\r\n\t\t}\r\n\r\n\t\tthis.RestartTimer();\r\n\t}\r\n\r\n\tgetBadges(event) {\r\n\t\tof(event.data().badges)\r\n\t\t\t.pipe(\r\n\t\t\t\tmap((badges) => {\r\n\t\t\t\t\treturn badges.map((badge) => {\r\n\t\t\t\t\t\tif (badge) return combineLatest([this.db.GetBadge(badge), this.db.FetchBadgeImage(badge)]);\r\n\t\t\t\t\t\treturn of();\r\n\t\t\t\t\t});\r\n\t\t\t\t}),\r\n\t\t\t\tswitchMap((a) => forkJoin(a))\r\n\t\t\t)\r\n\t\t\t.subscribe((badges) => {\r\n\t\t\t\tthis.selectedEvent.badges = badges;\r\n\t\t\t});\r\n\t}\r\n\r\n\tgetPatches(event) {\r\n\t\tof(event.data().patches)\r\n\t\t\t.pipe(\r\n\t\t\t\tmap((patches) => {\r\n\t\t\t\t\treturn patches.map((patch) => {\r\n\t\t\t\t\t\tif (patch) return combineLatest([this.db.GetPatch(patch), this.db.FetchPatchImage(patch)]);\r\n\t\t\t\t\t\treturn of();\r\n\t\t\t\t\t});\r\n\t\t\t\t}),\r\n\t\t\t\tswitchMap((a) => forkJoin(a))\r\n\t\t\t)\r\n\t\t\t.subscribe((patches) => {\r\n\t\t\t\tthis.selectedEvent.patches = patches;\r\n\t\t\t});\r\n\t}\r\n\tCheckIfUserPlaying(eventID: string) {\r\n\t\tlet sub = this.db.GetUserParticipantStatus(this.userID, eventID).subscribe(\r\n\t\t\t(doc) => {\r\n\t\t\t\tif (doc.exists) this.userParticipatingInEventAlready = true;\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.userParticipatingInEventAlready = false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t(err) => {\r\n\t\t\t\tconsole.error(err);\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tsub.unsubscribe();\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tdialogRegistration(event: Boolean) {\r\n\t\t//if evcent returns true the registration was a success , reload buttons\r\n\t\tif (event) {\r\n\t\t\tthis.selectedEvent.userRegistedPrior = true;\r\n\t\t\tthis.userRegistrationStatus.status = 2;\r\n\t\t}\r\n\t}\r\n\r\n\tteamExists() {\r\n\t\treturn this.userRegistrationStatus.team != null;\r\n\t}\r\n\r\n\tuserRegistrationStatus: registrationData;\r\n\tWatchUserRegistrationSub: Subscription;\r\n\tWatchUserBookingSub: Subscription;\r\n\r\n\tWatchUserRegistration(eventID: string) {\r\n\t\tif (this.WatchUserRegistrationSub) this.WatchUserRegistrationSub.unsubscribe();\r\n\r\n\t\tthis.WatchUserRegistrationSub = new Subscription();\r\n\r\n\t\tthis.WatchUserRegistrationSub.add(\r\n\t\t\tthis.db.GetUserRegistrationStatus(eventID, this.userID).subscribe((userRegistration) => {\r\n\t\t\t\tif (!userRegistration.payload.exists || userRegistration.type == 'removed') {\r\n\t\t\t\t\tthis.selectedEvent.userRegistedPrior = false;\r\n\t\t\t\t\tthis.userRegistrationStatus = {\r\n\t\t\t\t\t\tstatus: null,\r\n\t\t\t\t\t\tteam: null,\r\n\t\t\t\t\t\tcallsign: '',\r\n\t\t\t\t\t\txp: 0,\r\n\t\t\t\t\t\ttimestamp: 0,\r\n\t\t\t\t\t};\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.selectedEvent.userRegistedPrior = true;\r\n\t\t\t\t\tthis.userRegistrationStatus = userRegistration.payload.data();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tCanBook() {\r\n\t\tconst tempCheck =\r\n\t\t\tthis.selectedEvent.canRegister &&\r\n\t\t\tthis.userRegistrationStatus.status == 2 &&\r\n\t\t\t!this.selectedEvent.userBooked &&\r\n\t\t\t(this.selectedEvent.eventData.eventBookable || this.selectedEvent.eventData.rentals?.length > 0) &&\r\n\t\t\t!this.selectedEvent.bookingExpired &&\r\n\t\t\tthis.bookingAvailable();\r\n\t\tif (tempCheck) {\r\n\t\t\tif (this.userXP >= this.selectedEvent.eventData.minEventBookingXP) {\r\n\t\t\t\treturn true;\r\n\t\t\t} else {\r\n\t\t\t\tif (this.selectedEvent.eventData.rentals?.length > 0) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tWatchUserBooking(eventID: string) {\r\n\t\tif (this.WatchUserBookingSub) this.WatchUserBookingSub.unsubscribe();\r\n\t\tthis.WatchUserBookingSub = new Subscription();\r\n\t\tthis.WatchUserBookingSub.add(\r\n\t\t\tthis.db.GetUserBookingStatus(eventID, this.userID).subscribe((userBooking) => {\r\n\t\t\t\tif (userBooking.payload.exists) {\r\n\t\t\t\t\tthis.bookingData = userBooking.payload.data();\r\n\t\t\t\t\tthis.selectedEvent.userBooked = true;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\twatchQSub: Subscription;\r\n\tpositionInQueue: number = -1;\r\n\tWatchPositionInQueue() {\r\n\t\tif (this.watchQSub) this.watchQSub.unsubscribe();\r\n\r\n\t\tthis.watchQSub = new Subscription();\r\n\t\tthis.watchQSub.add(\r\n\t\t\tthis.db.WatchEventQueue(this.selectedEvent.eventID).subscribe((queue) => {\r\n\t\t\t\tthis.positionInQueue = queue.findIndex((e) => e.payload.doc.id == this.userID) + 1;\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tsettingStatus: boolean = false;\r\n\tsetRegistrationSubscription: Subscription;\r\n\tSetRegistrationStatus(status: number) {\r\n\t\tif (status != this.userRegistrationStatus.status) {\r\n\t\t\tthis.settingStatus = true;\r\n\t\t\tif (this.setRegistrationSubscription != null) this.setRegistrationSubscription.unsubscribe();\r\n\r\n\t\t\tthis.setRegistrationSubscription = this.db\r\n\t\t\t\t.SetUserRegistrationStatus(this.selectedEvent.eventID, this.userID, status, this.selectedEvent, this.userRegistrationStatus)\r\n\t\t\t\t.subscribe(\r\n\t\t\t\t\t(statusOut) => {\r\n\t\t\t\t\t\tif (statusOut == REGISTRATION_STATUS.InQueue) {\r\n\t\t\t\t\t\t\tthis.snippet.openSuccessSnackBar('Joined Event Queue');\r\n\t\t\t\t\t\t\tfirebase.analytics().logEvent('register_event', {\r\n\t\t\t\t\t\t\t\tevent_registration: 'true',\r\n\t\t\t\t\t\t\t\tevent_title: this.selectedEvent.eventData.eventTitle,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else if (statusOut == REGISTRATION_STATUS.Attending) {\r\n\t\t\t\t\t\t\tfirebase.analytics().logEvent('register_event', {\r\n\t\t\t\t\t\t\t\tevent_registration: 'true',\r\n\t\t\t\t\t\t\t\tevent_title: this.selectedEvent.eventData.eventTitle,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tthis.snippet.openSuccessSnackBar('Registered');\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tfirebase.analytics().logEvent('unregister_event', {\r\n\t\t\t\t\t\t\t\tevent_registration: 'false',\r\n\t\t\t\t\t\t\t\tevent_title: this.selectedEvent.eventData.eventTitle,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tthis.snippet.openSuccessSnackBar('Removed Registration');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.settingStatus = false;\r\n\t\t\t\t\t\tthis.setRegistrationSubscription.unsubscribe();\r\n\t\t\t\t\t},\r\n\t\t\t\t\t(err) => {\r\n\t\t\t\t\t\tconsole.error(err);\r\n\t\t\t\t\t\tthis.snippet.openErrorSnackBar(err.message);\r\n\t\t\t\t\t\tthis.settingStatus = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tsanitize(url: string) {\r\n\t\treturn this.sanitization.bypassSecurityTrustResourceUrl(`${url}`);\r\n\t}\r\n\r\n\tRewriteEventRegistrants() {\r\n\t\tthis.db\r\n\t\t\t.GetUsers()\r\n\t\t\t.pipe(\r\n\t\t\t\tmap((users) => {\r\n\t\t\t\t\tlet userSet = new Set();\r\n\t\t\t\t\tusers.docs.map((user) => {\r\n\t\t\t\t\t\tuserSet[user.id] = user.data();\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn userSet;\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t\t.subscribe((usersSet) => {\r\n\t\t\t\tconsole.log(usersSet);\r\n\t\t\t\tconsole.log(this.selectedEvent);\r\n\t\t\t\tthis.db.rewriteRegistrantList(usersSet, this.selectedEvent.totalEventParticipants, this.selectedEvent.eventID);\r\n\t\t\t});\r\n\t}\r\n\r\n\tEventHasQueue() {\r\n\t\tif (this.selectedEvent.totalEventParticipants) {\r\n\t\t\tif (this.selectedEvent.totalEventParticipants.length - this.selectedEvent.eventData.maxParticipants < 0) {\r\n\t\t\t\treturn false;\r\n\t\t\t} else {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tisMobileWidth() {\r\n\t\tif (window.innerWidth <= 678) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tCalculateRank(xp) {\r\n\t\tlet playerRank = 0;\r\n\r\n\t\tlet keys = Object.keys(this.ranks);\r\n\t\tfor (let i = 0; i < keys.length - 1; i++) {\r\n\t\t\tplayerRank = i;\r\n\t\t\tif (Number(keys[i]) >= xp) {\r\n\t\t\t\tif (i > 0) playerRank--;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tlet values: string[] = Object.values(this.ranks);\r\n\t\treturn values[playerRank];\r\n\t}\r\n\r\n\tLoadAllEventParticipants(eventID: string): Observable {\r\n\t\treturn this.db.GetEventRegisteredParticipants(eventID).pipe(\r\n\t\t\tmap((users) => {\r\n\t\t\t\tlet list = [];\r\n\t\t\t\tusers.map((user) => {\r\n\t\t\t\t\tlet newparticipant = {\r\n\t\t\t\t\t\tcallsign: null,\r\n\t\t\t\t\t\tteam: '',\r\n\t\t\t\t\t\tremoved: false,\r\n\t\t\t\t\t\ttimestamp: 0,\r\n\t\t\t\t\t\tid: '',\r\n\t\t\t\t\t\txp: 0,\r\n\t\t\t\t\t};\r\n\t\t\t\t\tif (user.type == 'added') {\r\n\t\t\t\t\t\tnewparticipant.callsign = user.payload.doc.data().callsign;\r\n\t\t\t\t\t\tnewparticipant.xp = user.payload.doc.data().xp;\r\n\t\t\t\t\t\tnewparticipant.team = user.payload.doc.data().team;\r\n\t\t\t\t\t\tnewparticipant.removed = false;\r\n\t\t\t\t\t\tnewparticipant.timestamp = user.payload.doc.data().timestamp;\r\n\t\t\t\t\t\tnewparticipant.id = user.payload.doc.id;\r\n\t\t\t\t\t\tlist.push(newparticipant);\r\n\t\t\t\t\t} else if (user.type == 'removed' || (user.type == 'modified' && user.payload.doc.data().status == REGISTRATION_STATUS.NotAttending)) {\r\n\t\t\t\t\t\tnewparticipant.id = user.payload.doc.id;\r\n\t\t\t\t\t\tnewparticipant.removed = true;\r\n\t\t\t\t\t\tlist.push(newparticipant);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn list;\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tlastNonExpiredEvent: firebase.firestore.DocumentSnapshot;\r\n\tnonExpiredEvents: any[];\r\n\tGetNonExpiredEvents(): Observable {\r\n\t\treturn new Observable((sub) => {\r\n\t\t\tsub.add(\r\n\t\t\t\tthis.db.GetAllEventFilterExpired(false, this.nonExpiredEvents[this.nonExpiredEvents.length - 1]).subscribe(\r\n\t\t\t\t\t(events) => {\r\n\t\t\t\t\t\t// if (events.docs[events.docs.length - 1])\r\n\t\t\t\t\t\t// \tthis.lastNonExpiredEvent = events.docs[events.docs.length - 1]\r\n\t\t\t\t\t\tevents.docs.map((event) => {\r\n\t\t\t\t\t\t\tthis.nonExpiredEvents.push(event);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tsub.next(this.nonExpiredEvents);\r\n\t\t\t\t\t\tsub.complete();\r\n\t\t\t\t\t},\r\n\t\t\t\t\t(err) => {\r\n\t\t\t\t\t\tsub.error(err);\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\tlastExpiredEvent: firebase.firestore.DocumentSnapshot;\r\n\texpiredEvents: any[];\r\n\r\n\tGetExpiredEvents(): Observable {\r\n\t\treturn new Observable((sub) => {\r\n\t\t\tsub.add(\r\n\t\t\t\tthis.db.GetAllEventFilterExpired(true, this.expiredEvents[this.expiredEvents.length - 1]).subscribe(\r\n\t\t\t\t\t(events) => {\r\n\t\t\t\t\t\tif (events.docs[events.docs.length - 1]) this.lastExpiredEvent = events.docs[events.docs.length - 1];\r\n\t\t\t\t\t\tevents.docs.map((event) => {\r\n\t\t\t\t\t\t\tthis.expiredEvents.push(event);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tsub.next(this.expiredEvents);\r\n\t\t\t\t\t\tsub.complete();\r\n\t\t\t\t\t},\r\n\t\t\t\t\t(err) => {\r\n\t\t\t\t\t\tsub.error(err);\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\tgetCount() {\r\n\t\treturn Object.values(this.selectedEvent.totalEventParticipants).length;\r\n\t}\r\n\r\n\ttickDelay: Observable = interval(1000);\r\n\ttickSub: Subscription;\r\n\tRestartTimer() {\r\n\t\tthis.tickSub = this.tickDelay.subscribe((time) => {\r\n\t\t\tconst epochNow = new Date().getTime() / 1000;\r\n\r\n\t\t\tlet totalSeconds: any = (Number(this.selectedEvent.eventData.eventStartTime.seconds) - Number(epochNow)).toFixed(0);\r\n\t\t\tlet hours,\r\n\t\t\t\tminutes,\r\n\t\t\t\tseconds = 0;\r\n\t\t\thours = Math.floor(totalSeconds / 3600);\r\n\t\t\ttotalSeconds %= 3600;\r\n\t\t\tminutes = Math.floor(totalSeconds / 60);\r\n\t\t\tseconds = totalSeconds % 60;\r\n\t\t\tif (hours + minutes + seconds < 0) {\r\n\t\t\t\thours = 0;\r\n\t\t\t\tminutes = 0;\r\n\t\t\t\tseconds = 0;\r\n\t\t\t}\r\n\t\t\tthis.selectedEvent.eventHours = hours <= 9 ? '0'.concat(String(hours)) : String(hours);\r\n\t\t\tthis.selectedEvent.eventMinutes = minutes <= 9 ? '0'.concat(String(minutes)) : String(minutes);\r\n\t\t\tthis.selectedEvent.eventSeconds = seconds <= 9 ? '0'.concat(String(seconds)) : String(seconds);\r\n\t\t});\r\n\t}\r\n\r\n\tGetBadgeImage(badgeID: string): Observable {\r\n\t\treturn this.db.FetchBadgeImage(badgeID);\r\n\t}\r\n\r\n\tGetBadgeData(badgeID: string): Observable {\r\n\t\treturn this.db.GetBadge(badgeID);\r\n\t}\r\n\r\n\tGetPatchImage(patchID: string): Observable {\r\n\t\treturn this.db.FetchPatchImage(patchID);\r\n\t}\r\n\r\n\tGetPatchData(patchID: string): Observable {\r\n\t\treturn this.db.GetPatch(patchID);\r\n\t}\r\n\r\n\tteamSwitchDialogRefEmitter: EventEmitter = new EventEmitter();\r\n\tSwitchTeamDialog() {\r\n\t\tthis.teamSwitchDialogRefEmitter.subscribe((res: Observable) => {\r\n\t\t\tconsole.log(res);\r\n\t\t\tres.subscribe((x) => console.log(x));\r\n\t\t\tif (res) {\r\n\t\t\t\tthis.snippet.openSuccessSnackBar('Team Switched successfully');\r\n\t\t\t} else {\r\n\t\t\t\tthis.snippet.openSuccessSnackBar('Switching Team failed');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","
\r\n\t
\r\n
\r\n\r\n
\r\n\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\tUpcoming\r\n\t\t\t\t\tExpired\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{event.data().eventTitle}}\r\n\t\t\t\t\t\t{{(event.data().eventStartTime.seconds * 1000) | date: 'LLL EEE dd,H:mm'}}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{event.data().eventTitle}}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tExpired \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n\r\n\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t{{selectedEvent.eventData.eventTitle}}\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\"mission\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\tParticipants\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{participant.callsign}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t- {{CalculateRank(participant.xp)}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{selected.eventData.eventTeams[participant.team]}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tYou need at least {{selected.eventData.minimumXp}} XP to register for this event.\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t= selected.eventData.minimumXp)\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\tcheck_circle\r\n\t\t\t\t\t\t\t\t\t\tPaid for event\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
0\">\r\n\t\t\t\t\t\t\t\t\t\tcheck_circle\r\n\t\t\t\t\t\t\t\t\t\t{{'Paid for items: ' + bookingData?.rentals.length}} \r\n\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\t 1 \"\r\n\t\t\t\t\t\t\t\t\t\tdialogName=\"SwitchTeam\"\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tIN QUEUE {{positionInQueue}}\r\n\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{{ (EventHasQueue() ? 'Join Queue':'Register for Game' ) }}\r\n\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tUnregister\r\n\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t 0)\"\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t{{ getCount() }} / {{selected.eventData.maxParticipants}} registered\r\n\t\t\t\t\t\t\t

\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\tLogin to register for events\r\n\t\t\t\t\t\t

\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tOpen in Google Maps location_on\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t

Participants

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{participant.callsign}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t- {{CalculateRank(participant.xp)}}\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t{{selected.eventData.eventTeams[participant.team]}}\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t{{selected.eventHours}}:{{selected.eventMinutes}}:{{selected.eventSeconds}}\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t{{(selected.eventData.eventStartTime.seconds * 1000) | date: 'medium'}} — {{ (selected.eventData.eventEndTime.seconds * 1000) | date:\r\n\t\t\t\t\t\t\t\t'medium'}}\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\tSee More\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\texpand_more\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t

Rewards

\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\tEvent XP\r\n\r\n\t\t\t\t\t\t\t\tBonus XP\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\tPatches\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t{{patch[0].data().patchName}}\r\n\t\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t\t\t{{patch[0].data().patchDescription}}\r\n\t\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\tAchievements\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t{{badge[0].data().badgeName}}\r\n\t\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t\t\t-{{badge[0].data().badgeDescription}}\r\n\t\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\ndeclare var particlesJS: any;\r\n\r\n@Component({\r\n\tselector: 'app-nodes',\r\n\ttemplateUrl: './nodes.component.html',\r\n\tstyleUrls: ['./nodes.component.scss']\r\n})\r\nexport class NodesComponent implements OnInit {\r\n\r\n\tparticlesArray: Array;\r\n\tpublic particleName = \"\";\r\n\r\n\tconstructor() { }\r\n\r\n\tpublic loadLandingConfig(): void {\r\n\t\tparticlesJS.load('particlesLanding', '../../assets/particles.json', function () {\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tpublic loadLiveEventsDetailConfig(): void {\r\n\t\tparticlesJS.load('particlesLiveEventsDetailsProfile', '../../assets/particlesEventsDetail.json', function () {\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tpublic loadLiveRanksConfig(): void {\r\n\t\tparticlesJS.load('particlesRanks', '../../assets/ranks.json', function () {\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n}\r\n","
\r\n
\r\n
","import { Component, Inject } from \"@angular/core\";\nimport { MatBottomSheetRef, MAT_BOTTOM_SHEET_DATA } from \"@angular/material/bottom-sheet\";\nimport { of, Subscription } from \"rxjs\";\nimport { AuthService } from \"src/app/services/auth.service\";\nimport { DatabaseService } from \"src/app/services/database.service\";\nimport { SnippetService } from \"src/app/services/snippet.service\";\nimport firebase from 'firebase/app';\n\n\n\n\n@Component({\n selector: 'qr-scanner-dialog',\n templateUrl: './qr-scanner-dialog.html',\n styles: [\n `:host zxing-scanner::ng-deep .scanner {\n\t\t\theight: 400px;\n\t\t\twidth: 400px;\n\t\t\tobject-fit: contain;\n\t\t\t}`\n ]\n})\nexport class QrScanner {\n\n\n constructor(\n private db: DatabaseService,\n public _bottomSheetRef: MatBottomSheetRef,\n\n @Inject(MAT_BOTTOM_SHEET_DATA) public data: any,\n private auth: AuthService,\n private snippet: SnippetService) {\n\n\n }\n\n\n error: string;\n QRmatch = false;\n qrEnabled = true;\n ScannerSub: Subscription;\n WaitingForCamera = false;\n\n camerasFoundHandler(err) {\n this.WaitingForCamera = false;\n }\n\n camerasNotFoundHandler(error) {\n this.WaitingForCamera = true;\n this.error = \"Error Camera device Not found!\"\n }\n\n scanErrorHandler(error) {\n this.error = error\n }\n\n scanSuccessHandler(qrCode) {\n let code = atob(qrCode);\n let match: boolean = code.localeCompare(this.data.eventID) == 0;\n\n if (this.ScannerSub != null) {\n this.ScannerSub.unsubscribe();\n }\n\n if (match && !this.QRmatch) {\n this.QRmatch = true;\n this.qrEnabled = false;\n if (this.data.mode == \"register\") {\n this.ScannerSub = this.db.RegisterParticipantForEvent(this.auth.user.value.uid, code, Number(this.data.team), true)\n .subscribe((batch) => {\n this.ScannerSub.add(\n of(batch.commit())\n .subscribe(\n () => {\n firebase.analytics().logEvent('event_participant', {\n success: 'true',\n BonusXP: \"false\",\n event_title: this.data.eventTitle,\n GPS: \"false\"\n });\n if (this.data.bonusButtonDisabled) {\n this.ScannerSub.add(\n this.db.ClaimBonusXP(this.data.eventID, this.auth.user.value.uid.toString()).subscribe(batchStatement => {\n this.ScannerSub.add(of(batchStatement[0][2].commit()).subscribe(\n () => {\n firebase.analytics().logEvent('event_participant', {\n success: 'true',\n BonusXP: \"true\",\n event_title: this.data.eventTitle,\n GPS: \"false\"\n });\n this.snippet.openSuccessSnackBar(\"Welcome to the event soldier!\");\n this._bottomSheetRef.dismiss();\n this.ScannerSub.unsubscribe();\n }\n ))\n }, err => {\n console.error(err);\n this.snippet.openErrorSnackBar(\"An error occured claiming xp\");\n this.ScannerSub.unsubscribe();\n })\n )\n } else {\n\n this.snippet.openSuccessSnackBar(\"Welcome to the event soldier!\");\n this._bottomSheetRef.dismiss();\n }\n }\n ))\n }, err => {\n this.snippet.openErrorSnackBar(err)\n })\n } else {\n this.ScannerSub = this.db.ClaimBonusXP(this.data.eventID, this.auth.user.value.uid.toString()).subscribe(batchStatement => {\n this.ScannerSub.add(of(batchStatement[0][2].commit()).subscribe(\n () => {\n this.snippet.openSuccessSnackBar(\"Bonus Xp Claimed!\");\n this.ScannerSub.unsubscribe();\n }\n ))\n }, err => {\n console.error(err);\n this.snippet.openErrorSnackBar(\"An error occured claiming xp\");\n this.ScannerSub.unsubscribe();\n })\n }\n } else {\n this.error = \"Incorrect Event Code Scanned!\"\n }\n }\n\n}\n","\n
\n

Scan the QR code For: {{data.eventTitle}}

\n

{{error}}

\n \n \n

Warning Apple/IOS users will need to use Safari browsers to access the QR code scanner

\n
","import { AfterViewInit, Component, ElementRef, EventEmitter, OnDestroy, ViewChild } from '@angular/core';\r\nimport { NgcCookieConsentService, NgcInitializeEvent, NgcNoCookieLawEvent, NgcStatusChangeEvent } from 'ngx-cookieconsent';\r\nimport { Subscription } from 'rxjs';\r\nimport { StateServiceService } from './services/state-service.service';\r\nimport { UpdateServiceService } from './services/update-service.service';\r\nimport firebase from 'firebase/app'\r\nimport 'firebase/storage'\r\nimport 'firebase/analytics'\r\n\r\n// declare google analytics\r\ndeclare const gtag: any;\r\n\r\n@Component({\r\n\tselector: 'app-root',\r\n\ttemplateUrl: './app.component.html',\r\n\tstyleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent implements AfterViewInit, OnDestroy {\r\n\ttitle = 'CofAirsoft';\r\n\tlocalStorageDisabled = false;\r\n\t@ViewChild('router', { static: false }) router: ElementRef;\r\n\tclickedElement: Subscription = new Subscription();\r\n\tcollapsed: EventEmitter = new EventEmitter();\r\n\r\n\t//keep refs to subscriptions to be able to unsubscribe later\r\n\tprivate popupOpenSubscription: Subscription;\r\n\tprivate popupCloseSubscription: Subscription;\r\n\tprivate initializeSubscription: Subscription;\r\n\tprivate statusChangeSubscription: Subscription;\r\n\tprivate revokeChoiceSubscription: Subscription;\r\n\tprivate noCookieLawSubscription: Subscription;\r\n\r\n\r\n\r\n\r\n\t//inject state service at the top of the tree\r\n\tconstructor(private UpdatesSW: UpdateServiceService, private stateService: StateServiceService, private ccService: NgcCookieConsentService) {\r\n\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.lsTest()\r\n\t\tthis.popupOpenSubscription = this.ccService.popupOpen$.subscribe(() => {\r\n\t\t\t// you can use this.ccService.getConfig() to do stuff...\r\n\t\t\tfirebase.analytics().setAnalyticsCollectionEnabled(this.ccService.hasConsented());\r\n\t\t\tgtag('consent', this.ccService.hasConsented() ? 'granted' : 'denied', {\r\n\t\t\t\t'ad_storage': this.ccService.hasConsented() ? 'granted' : 'denied'\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis.popupCloseSubscription = this.ccService.popupClose$.subscribe(() => {\r\n\t\t\t// you can use this.ccService.getConfig() to do stuff...\r\n\t\t\tfirebase.analytics().setAnalyticsCollectionEnabled(this.ccService.hasConsented());\r\n\t\t\tgtag('consent', this.ccService.hasConsented() ? 'granted' : 'denied', {\r\n\t\t\t\t'ad_storage': this.ccService.hasConsented() ? 'granted' : 'denied'\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis.initializeSubscription = this.ccService.initialize$.subscribe(\r\n\t\t\t(event: NgcInitializeEvent) => {\r\n\t\t\t\t// you can use this.ccService.getConfig() to do stuff...\r\n\t\t\t\tfirebase.analytics().setAnalyticsCollectionEnabled(this.ccService.hasConsented());\r\n\t\t\t\tgtag('consent', this.ccService.hasConsented() ? 'granted' : 'denied', {\r\n\t\t\t\t\t'ad_storage': this.ccService.hasConsented() ? 'granted' : 'denied'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tthis.statusChangeSubscription = this.ccService.statusChange$.subscribe(\r\n\t\t\t(event: NgcStatusChangeEvent) => {\r\n\t\t\t\t// you can use this.ccService.getConfig() to do stuff...\r\n\t\t\t\tfirebase.analytics().setAnalyticsCollectionEnabled(this.ccService.hasConsented());\r\n\t\t\t\tgtag('consent', this.ccService.hasConsented() ? 'granted' : 'denied', {\r\n\t\t\t\t\t'ad_storage': this.ccService.hasConsented() ? 'granted' : 'denied'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tthis.revokeChoiceSubscription = this.ccService.revokeChoice$.subscribe(\r\n\t\t\t() => {\r\n\t\t\t\t// you can use this.ccService.getConfig() to do stuff...\r\n\t\t\t\tfirebase.analytics().setAnalyticsCollectionEnabled(this.ccService.hasConsented());\r\n\t\t\t\tgtag('consent', this.ccService.hasConsented() ? 'granted' : 'denied', {\r\n\t\t\t\t\t'ad_storage': this.ccService.hasConsented() ? 'granted' : 'denied'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tthis.noCookieLawSubscription = this.ccService.noCookieLaw$.subscribe(\r\n\t\t\t(event: NgcNoCookieLawEvent) => {\r\n\t\t\t\t// you can use this.ccService.getConfig() to do stuff...\r\n\t\t\t\tfirebase.analytics().setAnalyticsCollectionEnabled(this.ccService.hasConsented());\r\n\t\t\t\tgtag('consent', this.ccService.hasConsented() ? 'granted' : 'denied', {\r\n\t\t\t\t\t'ad_storage': this.ccService.hasConsented() ? 'granted' : 'denied'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.ccService.getStatus()\r\n\t\tfirebase.analytics().setAnalyticsCollectionEnabled(this.ccService.hasConsented());\r\n\r\n\t\tgtag('consent', this.ccService.hasConsented() ? 'granted' : 'denied', {\r\n\t\t\t'ad_storage': this.ccService.hasConsented() ? 'granted' : 'denied'\r\n\t\t});\r\n\t}\r\n\r\n\tlsTest() {\r\n\t\tvar test = 'test';\r\n\t\ttry {\r\n\t\t\tlocalStorage.setItem(test, test);\r\n\t\t\tlocalStorage.removeItem(test);\r\n\t\t\tthis.localStorageDisabled = false;\r\n\t\t} catch (e) {\r\n\t\t\tconsole.error(e)\r\n\t\t\tthis.localStorageDisabled = true;\r\n\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\tngOnDestroy() {\r\n\r\n\t\tthis.popupOpenSubscription.unsubscribe();\r\n\t\tthis.popupCloseSubscription.unsubscribe();\r\n\t\tthis.initializeSubscription.unsubscribe();\r\n\t\tthis.statusChangeSubscription.unsubscribe();\r\n\t\tthis.revokeChoiceSubscription.unsubscribe();\r\n\t\tthis.noCookieLawSubscription.unsubscribe();\r\n\r\n\t}\r\n\r\n\teventCookie(event) {\r\n\r\n\t}\r\n}\r\n","\r\n
\r\n

Cookies and LocalStorage have been disabled

\r\n

This site requires cookies to function properly. Please enable cookies in your browser settings

\r\n How to\r\n enable cookies\r\n
\r\n
\r\n \r\n
","import { Injectable } from '@angular/core';\nimport { SwUpdate } from '@angular/service-worker';\nimport { interval } from 'rxjs';\nimport { SnippetService } from './snippet.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UpdateServiceService {\n\n constructor(public updates: SwUpdate, private snippet: SnippetService) {\n if (updates.isEnabled) {\n interval(15000).subscribe(() => updates.checkForUpdate()\n .then().catch(err => console.error(err)));\n }\n }\n\n public checkForUpdates(): void {\n this.updates.available.subscribe(event => this.promptUser());\n }\n\n private promptUser(): void {\n console.log('updating to new version');\n this.snippet.openUpdateSnippet();\n }\n}\n\n","\r\nimport { Component, OnDestroy, OnInit, EventEmitter } from '@angular/core';\r\nimport { MatBottomSheet, MatBottomSheetRef } from '@angular/material/bottom-sheet';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { combineLatest, interval, Observable, of, Subscription } from 'rxjs';\r\nimport { map, switchMap, take } from 'rxjs/operators';\r\nimport { AuthService } from 'src/app/services/auth.service';\r\nimport { DatabaseService, eventData } from 'src/app/services/database.service';\r\nimport { SnippetService } from 'src/app/services/snippet.service';\r\nimport { GpsRegistrationSheet } from './participation/liveEventGpsRegistration.component';\r\nimport { QrScanner } from './participation/QrScanner.component';\r\n\r\n\r\nexport interface Tile {\r\n\tcolor: string;\r\n\tcols: number;\r\n\trows: number;\r\n\ttext: string;\r\n}\r\n\r\n\r\n\r\n\r\ninterface Timer {\r\n\tHours: number;\r\n\tMinutes: number;\r\n\tSeconds: number;\r\n}\r\n\r\n@Component({\r\n\tselector: 'app-live-event-page',\r\n\ttemplateUrl: './live-event-page.component.html',\r\n\tstyleUrls: ['./live-event-page.component.scss']\r\n})\r\nexport class LiveEventPageComponent implements OnInit, OnDestroy {\r\n\r\n\tevent: eventData;\r\n\teventID: String;\r\n\tuserID: String;\r\n\teventImage: Observable\r\n\tparticipantList: Map;\r\n\tparticipationStatus: Observable;\r\n\tselectedTeam: Number;\r\n\tteamIndexArray: Number[];\r\n\tuserTeam: number = -1;\r\n\teventParticipantsSub: Subscription;\r\n\tparticipantSub: Subscription;\r\n\r\n\r\n\tconstructor(\r\n\t\tprivate route: ActivatedRoute,\r\n\t\tprivate db: DatabaseService,\r\n\t\tprivate auth: AuthService,\r\n\t\tprivate router: Router,\r\n\t\tprivate sanitization: DomSanitizer,\r\n\t\tprivate snippet: SnippetService,\r\n\t\tprivate gpsRegistration: MatBottomSheet,\r\n\t\tpublic dialog: MatDialog\r\n\t) { }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\tsanitize(url: String) {\r\n\t\treturn this.sanitization.bypassSecurityTrustResourceUrl(url.toString());\r\n\t}\r\n\r\n\r\n\tConvertObject(obj: any) {\r\n\t\treturn JSON.stringify(obj);\r\n\t}\r\n\r\n\tuserIsRegistered(eventInfo) {\r\n\t\tif (!eventInfo[0].payload.exists || eventInfo[0].payload.data().status != 2) {\r\n\t\t\tthis.router.navigate(['/events']);\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit() {\r\n\r\n\t\tthis.selectedTeam = this.userTeam;\r\n\t\tcombineLatest([this.auth.afAuth.user, this.route.queryParams])\r\n\t\t\t.pipe(\r\n\t\t\t\tswitchMap((data) => {\r\n\t\t\t\t\tthis.userID = data[0].uid;\r\n\t\t\t\t\tthis.eventID = data[1].eventID;\r\n\t\t\t\t\treturn combineLatest([\r\n\t\t\t\t\t\tthis.db.GetUserRegistrationStatus(data[1].eventID, data[0].uid).pipe(take(1)),\r\n\t\t\t\t\t\tthis.db.GetEvent(data[1].eventID)\r\n\t\t\t\t\t])\r\n\t\t\t\t})\r\n\t\t\t).subscribe(\r\n\t\t\t\teventInfo => {\r\n\r\n\t\t\t\t\tthis.userIsRegistered(eventInfo);\r\n\r\n\t\t\t\t\t//LOAD TEAM DATA\r\n\t\t\t\t\tthis.teamIndexArray = [];\r\n\t\t\t\t\tthis.userTeam = Number(eventInfo[0].payload.data().team);\r\n\t\t\t\t\tthis.selectedTeam = this.userTeam;\r\n\r\n\t\t\t\t\tlet index = 0;\r\n\t\t\t\t\teventInfo[1].data().eventTeams.forEach(team => {\r\n\t\t\t\t\t\tthis.teamIndexArray.push(index++);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.event = eventInfo[1].data()\r\n\t\t\t\t\tthis.eventImage = this.db.FetchEventImage(this.eventID)\r\n\t\t\t\t\tthis.participationStatus = this.WatchUserParticipantStatus()\r\n\r\n\t\t\t\t\tthis.RestartTimer();\r\n\t\t\t\t\tthis.WatchEventParticipants();\r\n\r\n\t\t\t\t\tconst epochNow = (new Date).getTime() / 1000;\r\n\t\t\t\t\tif ((Number(this.event.eventStartTime.seconds) - Number(epochNow)) <= 0 && Number(this.event.eventEndTime.seconds) + this.bonusClaimTime - Number(epochNow) >= 0) {\r\n\t\t\t\t\t\t//watch to open dialog on claim lobby open\r\n\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.participationStatus.subscribe(status => {\r\n\t\t\t\t\t\t\t\tif (!status.participant) {\r\n\t\t\t\t\t\t\t\t\tthis.openGPSRegistrationSheet('register')\r\n\t\t\t\t\t\t\t\t} else if (status.participant && !status.data.bonusXPClaimed && this.EventHasRewards(this.event) && Number(this.event.eventEndTime.seconds) < Number(epochNow)) {\r\n\t\t\t\t\t\t\t\t\tconsole.log(`${Number(this.event.eventEndTime.seconds)}, ${Number(epochNow)}`)\r\n\t\t\t\t\t\t\t\t\tthis.openGPSRegistrationSheet('bonusXP')\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}, 2000);\r\n\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t)\r\n\r\n\r\n\t}\r\n\r\n\tBonusXP(success: EventEmitter) {\r\n\t\tsuccess.subscribe((data) => {\r\n\t\t\tif (data)\r\n\t\t\t\tthis.snippet.openSuccessSnackBar(\"Claimed bonus rewards!\")\r\n\t\t\telse {\r\n\t\t\t\tthis.snippet.openErrorSnackBar(\"Failed to claim bonus XP\");\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tregistration(success: EventEmitter) {\r\n\t\tsuccess.subscribe((valid) => {\r\n\t\t\tif (valid) {\r\n\t\t\t\tthis.snippet.openSuccessSnackBar(\"Welcome to the event soldier\");\r\n\t\t\t\t// this.WatchEventParticipants();\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\r\n\tWatchUserParticipantStatus() {\r\n\t\treturn this.db.WatchUserParticipantStatus(this.userID, this.eventID)\r\n\t\t\t.pipe(\r\n\t\t\t\tmap(data => {\r\n\t\t\t\t\tif (!data.payload.exists || data.type == 'removed') {\r\n\t\t\t\t\t\treturn { participant: false };\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (data.type == 'added' || data.type == 'modified') {\r\n\t\t\t\t\t\treturn { participant: true, data: data.payload.data() };\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t)\r\n\r\n\r\n\t}\r\n\r\n\tEventHasRewards(eventData: any): boolean {\r\n\t\treturn (eventData.bonusXP > 0 || eventData.badges.length > 0 || eventData.patches.length > 0)\r\n\t}\r\n\r\n\r\n\r\n\r\n\ttickDelay: Observable = interval(1000);\r\n\r\n\r\n\r\n\r\n\tbonusEndTimer: Timer = { Hours: 0, Minutes: 0, Seconds: 0 };\r\n\tbonusTimer: Timer = { Hours: 0, Minutes: 0, Seconds: 0 };\r\n\teventTimer: Timer = { Hours: 0, Minutes: 0, Seconds: 0 };\r\n\r\n\tsecondsTillBonus: Number = 5000;\r\n\ttotalSeconds: number;\r\n\ttotalEndSeconds: number;\r\n\tsecondsTillEnd: number;\r\n\tbonusClaimTime: number = 3 * 3600;\r\n\r\n\tRestartTimer() {\r\n\t\tthis.tickDelay.subscribe(time => {\r\n\t\t\tconst epochNow = (new Date).getTime() / 1000;\r\n\r\n\t\t\tthis.secondsTillEnd = Number(this.event.eventEndTime.seconds) - Number(epochNow)\r\n\t\t\tthis.secondsTillBonus = Number((this.secondsTillEnd).toFixed(0));\r\n\t\t\tthis.secondsTillEnd += this.bonusClaimTime;\r\n\r\n\t\t\tthis.bonusEndTimer = this.GetTimer(this.secondsTillEnd, this.bonusEndTimer)\r\n\t\t\tthis.bonusTimer = this.GetTimer(this.secondsTillBonus, this.bonusTimer)\r\n\t\t\tthis.eventTimer = this.GetTimer(this.totalSeconds, this.eventTimer)\r\n\r\n\t\t\tthis.totalSeconds = (Number(this.event.eventStartTime.seconds) - Number(epochNow));\r\n\r\n\t\t})\r\n\t}\r\n\r\n\tGetTimer(timeIn, timer) {\r\n\t\ttimeIn = Number(timeIn).toFixed(0)\r\n\t\tlet hours, minutes, seconds = 0;\r\n\t\thours = Math.floor(timeIn / 3600);\r\n\t\ttimeIn %= 3600;\r\n\t\tminutes = Math.floor(timeIn / 60);\r\n\t\tseconds = timeIn % 60; timeIn\r\n\t\tif (hours + minutes + seconds < 0) {\r\n\t\t\thours = 0;\r\n\t\t\tminutes = 0;\r\n\t\t\tseconds = 0;\r\n\t\t}\r\n\t\tlet h = (hours <= 9) ? \"0\".concat(String(hours)) : String(hours);\r\n\t\tlet m = (minutes <= 9) ? \"0\".concat(String(minutes)) : String(minutes);\r\n\t\tlet s = (seconds <= 9) ? \"0\".concat(String(seconds)) : String(seconds);\r\n\t\ttimer.Hours = h;\r\n\t\ttimer.Minutes = m;\r\n\t\ttimer.Seconds = s;\r\n\t\treturn timer\r\n\t}\r\n\r\n\topenScanQRDialog(registerMode: string): void {\r\n\r\n\t\tthis.gpsRegistration.open(QrScanner,\r\n\t\t\t{\r\n\t\t\t\tdata: {\r\n\t\t\t\t\teventTitle: this.event.eventTitle,\r\n\t\t\t\t\tmode: registerMode,\r\n\t\t\t\t\tbonusButtonDisabled: this.event.bonusButtonDisabled,\r\n\t\t\t\t\teventID: this.eventID,\r\n\t\t\t\t\tteam: this.userTeam\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t)\r\n\r\n\t}\r\n\r\n\topenGPSRegistrationSheet(registerMode: string) {\r\n\r\n\t\tthis.gpsRegistration.open(GpsRegistrationSheet,\r\n\t\t\t{\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tmode: registerMode,\r\n\t\t\t\t\tbonusButtonDisabled: this.event.bonusButtonDisabled,\r\n\t\t\t\t\teventID: this.eventID,\r\n\t\t\t\t\tteam: this.userTeam,\r\n\t\t\t\t\teventLocation: [this.event.eventPosition.latitude, this.event.eventPosition.longitude],\r\n\t\t\t\t\teventTitle: this.event.eventTitle\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t)\r\n\r\n\r\n\t}\r\n\r\n\r\n\r\n\tWatchEventParticipants() {\r\n\r\n\t\tthis.eventParticipantsSub = this.db.WatchEventParticipants(this.eventID).subscribe(document => {\r\n\t\t\tdocument.forEach((userRow) => {\r\n\r\n\t\t\t\tof(userRow).pipe(\r\n\t\t\t\t\tswitchMap((userRow, index) => {\r\n\r\n\t\t\t\t\t\treturn combineLatest([\r\n\t\t\t\t\t\t\tof(userRow),\r\n\t\t\t\t\t\t\tthis.db.FetchUser(userRow.payload.doc.id),\r\n\t\t\t\t\t\t\tthis.db.FetchProfileImage(userRow.payload.doc.id)\r\n\t\t\t\t\t\t])\r\n\t\t\t\t\t})\r\n\t\t\t\t).subscribe(\r\n\t\t\t\t\tdata => {\r\n\r\n\t\t\t\t\t\tif (this.participantList == null)\r\n\t\t\t\t\t\t\tthis.participantList = new Map()\r\n\r\n\t\t\t\t\t\tif (data[0].type == 'added' || data[0].type == 'modified')\r\n\t\t\t\t\t\t\tthis.participantList.set(data[1].id, { user: data[1].data(), photo: data[2], team: data[0].payload.doc.data().team });\r\n\t\t\t\t\t\tif (data[0].type == 'removed')\r\n\t\t\t\t\t\t\tthis.participantList.delete(data[1].id);\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t})\r\n\t\t})\r\n\r\n\r\n\r\n\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tif (this.eventParticipantsSub)\r\n\t\t\tthis.eventParticipantsSub.unsubscribe();\r\n\t\tif (this.participantSub)\r\n\t\t\tthis.participantSub.unsubscribe()\r\n\r\n\t}\r\n\r\n}\r\n","
\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t{{liveEvent.eventTitle}}\r\n\t\t\t\t\t 0\" class=\"text-danger\">Event Starts In:\r\n\t\t\t\t\t\t{{eventTimer.Hours}}:{{eventTimer.Minutes}}:{{eventTimer.Seconds}}\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t bonusClaimTime && EventHasRewards(liveEvent) && !liveEvent.bonusButtonDisabled \"\r\n\t\t\t\t\t\tclass=\"text-danger\">\r\n\r\n\r\n\t\t\t\t\t\tBonus\r\n\t\t\t\t\t\tRewards Available In:\r\n\t\t\t\t\t\t{{bonusTimer.Hours}}:{{bonusTimer.Minutes}}:{{bonusTimer.Seconds}}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tBonus\r\n\t\t\t\t\t\tRewards Available For:\r\n\t\t\t\t\t\t{{bonusEndTimer.Hours}}:{{bonusEndTimer.Minutes}}:{{bonusEndTimer.Seconds}}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t 0\">\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t

\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tCurrently Not Participating\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tParticipating in Game\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tBonus Rewards Claimed\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tBonus Rewards Not Claimed\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tNo bonus rewards for this event\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t

\r\n\r\n\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t
= 0\">\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tWaiting for game to start...\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tYou can still redeem bonus rewards when they are available\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tAll XP/Rewards have been claimed enjoy the game!\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tThis event has expired\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t 0 \">\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\tClaim XP with:\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tClaim Bonus Rewards with:\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\tGPS gps_fixed\r\n\t\t\t\t\t\t\t\tOr QR Code qr_code_scanner\r\n\t\t\t\t\t\t\t

\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\r\n\r\n\r\n\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tSelect a team\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{{team}}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{player.value.user.userID}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t

\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\r\n\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t
\r\n\r\n\t
\r\n\r\n\r\n
\r\n\r\n
","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppComponent } from './app.component';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { MaterialModule } from './material';\r\n\r\nimport { NavbarComponent } from './navbar/navbar.component';\r\nimport { LandingPageComponent } from './pages/landing-page/landing-page.component';\r\nimport { NodesComponent } from './nodes/nodes.component';\r\nimport { EventsPageComponent } from './pages/events-page/events-page.component';\r\nimport { AboutUsPageComponent } from './pages/about-us-page/about-us-page.component';\r\nimport { ContactUsPageComponent } from './pages/contact-us-page/contact-us-page.component';\r\n\r\n//firebase\r\n// 1. Import the libs you need\r\nimport { AngularFireModule } from '@angular/fire';\r\nimport { AngularFirestoreModule } from '@angular/fire/firestore';\r\nimport { AngularFireStorageModule } from '@angular/fire/storage';\r\nimport { AngularFireAuthModule } from '@angular/fire/auth';\r\nimport { AngularFireAnalyticsModule } from '@angular/fire/analytics';\r\n\r\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\r\nimport {\r\n\tDialogComponent,\r\n\tLoginComponent,\r\n\tEventDialogComponent,\r\n\tUserRegistrationDialogComponent,\r\n\tPasswordResetDialog,\r\n\tEmailReminderDialog,\r\n\tBookingDialogComponent,\r\n\tRefundNotificationComponent,\r\n} from './dialog/dialog.component';\r\nimport { EventsDetailPageComponent } from './pages/events-detail-page/events-detail-page.component';\r\nimport { RankingsPageComponent } from './pages/rankings-page/rankings-page.component';\r\n\r\n//maps\r\nimport { AgmCoreModule } from '@agm/core';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { EditorModule } from '@tinymce/tinymce-angular';\r\nimport { NgScrollbarModule } from 'ngx-scrollbar';\r\nimport { SmoothScrollModule } from 'ngx-scrollbar/smooth-scroll';\r\nimport { RoleGuardService } from './services/role-guard.service';\r\nimport { SnackErrorComponent, SnackSuccessComponent, UpdateSnackComponent } from './services/snippet.service';\r\nimport { ResponsiveSidenavDirective } from './responsive-sidenav/responsive-sidenav.directive';\r\nimport { RulesComponent } from './pages/rules/rules.component';\r\nimport { ServiceWorkerModule } from '@angular/service-worker';\r\nimport { environment } from 'src/environments/environment';\r\nimport { ConfirmDialogComponent } from './adminPages/confirm-dialog/confirm-dialog.component';\r\n\r\nimport { Router, Scroll, Event } from '@angular/router';\r\nimport { ViewportScroller } from '@angular/common';\r\nimport { filter } from 'rxjs/operators';\r\nimport { OrderByPipe } from './pipes/sort-by.pipe';\r\nimport { NgcCookieConsentModule } from 'ngx-cookieconsent';\r\nimport { consentConfig } from './cookies';\r\nimport { TextFieldModule } from '@angular/cdk/text-field';\r\n\r\n// 2. Add your credentials from step 1\r\n// apiKey: 'AIzaSyAmDyI1Yg1UiDqvgBerJnX78_DMMFIaNPw',\r\n// authDomain: 'cofairsoft-a1d63.firebaseapp.com',\r\n// databaseURL: 'https://cofairsoft-a1d63.firebaseio.com',\r\n// projectId: 'cofairsoft-a1d63',\r\n// storageBucket: 'cofairsoft-a1d63.appspot.com',\r\n// messagingSenderId: '256190960268',\r\n// appId: '1:256190960268:web:44428e80917e0456ebe1a9',\r\n// measurementId: 'G-Z0YZ9GNFNW',\r\nconst firebaseConfig = {\r\n\tapiKey: 'AIzaSyAmDyI1Yg1UiDqvgBerJnX78_DMMFIaNPw',\r\n\tauthDomain: 'cofairsoft-a1d63.firebaseapp.com',\r\n\tdatabaseURL: 'https://cofairsoft-a1d63.firebaseio.com',\r\n\tprojectId: 'cofairsoft-a1d63',\r\n\tstorageBucket: 'cofairsoft-a1d63.appspot.com',\r\n\tmessagingSenderId: '256190960268',\r\n\tappId: '1:256190960268:web:44428e80917e0456ebe1a9',\r\n\tmeasurementId: 'G-Z0YZ9GNFNW',\r\n};\r\n\r\n@NgModule({\r\n\tdeclarations: [\r\n\t\tAppComponent,\r\n\t\tNavbarComponent,\r\n\t\tNodesComponent,\r\n\t\t//dialogs & pages\r\n\t\tLandingPageComponent,\r\n\t\tAboutUsPageComponent,\r\n\t\tEventsPageComponent,\r\n\t\tContactUsPageComponent,\r\n\t\tDialogComponent,\r\n\t\tLoginComponent,\r\n\t\tPasswordResetDialog,\r\n\t\tEmailReminderDialog,\r\n\t\tUserRegistrationDialogComponent,\r\n\t\tEventDialogComponent,\r\n\t\tEventsDetailPageComponent,\r\n\t\tRankingsPageComponent,\r\n\t\tConfirmDialogComponent,\r\n\t\tSnackErrorComponent,\r\n\t\tSnackSuccessComponent,\r\n\t\tUpdateSnackComponent,\r\n\t\tResponsiveSidenavDirective,\r\n\t\tRulesComponent,\r\n\t\tOrderByPipe,\r\n\t\tBookingDialogComponent,\r\n\t\tRefundNotificationComponent,\r\n\t],\r\n\timports: [\r\n\t\tBrowserModule,\r\n\t\tAppRoutingModule,\r\n\t\tBrowserAnimationsModule,\r\n\t\tMaterialModule,\r\n\t\tFormsModule,\r\n\t\tReactiveFormsModule,\r\n\t\tAngularFireModule.initializeApp(firebaseConfig),\r\n\t\tAngularFirestoreModule,\r\n\t\tAngularFirestoreModule.enablePersistence(),\r\n\t\tAngularFireAuthModule,\r\n\t\tAngularFireStorageModule,\r\n\t\tAgmCoreModule.forRoot({\r\n\t\t\t// apiKey: 'AIzaSyBrmQh0JtJIfhZlRjI-GSwerM-uL0TGjkU'\r\n\t\t\tapiKey: 'AIzaSyDZH1hOSrThy7z5Raze7pgsmIRU6FySSCM',\r\n\t\t}),\r\n\t\tHttpClientModule,\r\n\t\tInfiniteScrollModule,\r\n\t\tEditorModule,\r\n\t\tNgScrollbarModule,\r\n\t\tSmoothScrollModule,\r\n\t\tServiceWorkerModule.register('ngsw-worker.js', {\r\n\t\t\tenabled: environment.production,\r\n\t\t\tregistrationStrategy: 'registerWithDelay:1000',\r\n\t\t}),\r\n\t\tAngularFireAnalyticsModule,\r\n\t\tNgcCookieConsentModule.forRoot(consentConfig),\r\n\t\tTextFieldModule,\r\n\t],\r\n\tentryComponents: [\r\n\t\tLoginComponent,\r\n\t\tEventDialogComponent,\r\n\t\tUserRegistrationDialogComponent,\r\n\t\tConfirmDialogComponent,\r\n\t\tPasswordResetDialog,\r\n\t\tSnackSuccessComponent,\r\n\t\tEmailReminderDialog,\r\n\t\tSnackErrorComponent,\r\n\t\tUpdateSnackComponent,\r\n\t],\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\r\n\t\t\tuseValue: { appearance: 'outline' },\r\n\t\t},\r\n\t\tRoleGuardService,\r\n\t],\r\n\tbootstrap: [AppComponent],\r\n\texports: [ResponsiveSidenavDirective],\r\n})\r\nexport class AppModule {\r\n\tconstructor(router: Router, viewportScroller: ViewportScroller) {\r\n\t\trouter.events.pipe(filter((e: Event): e is Scroll => e instanceof Scroll)).subscribe((e) => {\r\n\t\t\tif (e.position) {\r\n\t\t\t\t// backward navigation\r\n\t\t\t\tviewportScroller.scrollToPosition(e.position);\r\n\t\t\t} else if (e.anchor) {\r\n\t\t\t\t// anchor navigation\r\n\t\t\t\tviewportScroller.scrollToAnchor(e.anchor);\r\n\t\t\t} else {\r\n\t\t\t\t// forward navigation\r\n\t\t\t\tviewportScroller.scrollToPosition([0, 0]);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { AngularFirestore } from '@angular/fire/firestore';\nimport { AngularFireStorage } from '@angular/fire/storage';\nimport { combineLatest, forkJoin, from, Observable, of, throwError } from 'rxjs';\nimport { catchError, finalize, first, map, pluck, retry, switchMap, take, tap } from 'rxjs/operators';\nimport firestore from 'firebase/app';\nimport { AngularFireDatabase } from '@angular/fire/database';\nimport { HttpClient } from '@angular/common/http';\nimport { P } from '@angular/cdk/keycodes';\n\nexport enum REGISTRATION_STATUS {\n\tNotAttending,\n\tInterested,\n\tAttending,\n\tInQueue,\n}\n\nexport enum LogType {\n\tXP,\n\tBadge,\n\tPatch,\n\tParticipant,\n\tRegistration,\n\tBonusRewards,\n\tRedeemXP,\n\tPermissions,\n\tnone,\n}\nexport enum ReasonIdType {\n\tUser,\n\tEvent,\n\tRedeemXP,\n}\nexport interface LogData {\n\tlogMessage: string;\n\tlogType: LogType;\n\treasonID: string;\n\treasonIdType: ReasonIdType;\n\ttimeStamp: number;\n}\n\ninterface badgeData {\n\tbadgeDescription: string;\n\tbadgeName: string;\n\tcreatedBy: string;\n\ttimestamp: number;\n}\n\ninterface patchData {\n\tpatchDescription: string;\n\tpatchName: string;\n\tcreatedBy: string;\n\ttimestamp: number;\n}\n\ninterface patchRequestData {\n\tUserID: string;\n\tpatchID: string;\n}\nexport interface eventData {\n\tbookingCutoffTime: firestore.firestore.Timestamp;\n\teventTitle: string;\n\tbonusButtonDisabled: boolean;\n\teventDescription: string;\n\teventEndTime: firestore.firestore.Timestamp;\n\teventStartTime: firestore.firestore.Timestamp;\n\teventPosition: firestore.firestore.GeoPoint;\n\tmaxParticipants: number;\n\teventTeams: [];\n\teventTeamsMaxPlayers: [];\n\tbadges: [];\n\tpatches: [];\n\txp: string;\n\tbonusXP: number;\n\ttoggleBonusXP: boolean;\n\tminimumXP: number;\n\teventBookable: boolean;\n\trentals: Array;\n\tminEventBookingXP: number;\n\tbookingStartTime: firestore.firestore.Timestamp;\n}\n\ninterface ranksData {\n\tranks: {};\n}\n\ninterface locationData {\n\tlocationName: string;\n\tposition: [];\n}\n\ninterface participantData {\n\tbonusXPClaimed: boolean;\n\tteam: number;\n}\n\nexport interface registrationData {\n\tcallsign: string;\n\txp: number;\n\tstatus: REGISTRATION_STATUS;\n\tteam: number;\n\ttimestamp: number;\n}\n\ninterface logData {\n\tlogMessage: string;\n\tlogType: LogType;\n\treasonID: string;\n\treasonIdType: ReasonIdType;\n\ttimeStamp: number;\n}\n\nexport interface userData {\n\tadmin: boolean;\n\tfullname: string;\n\tmarshal: boolean;\n\tmatchesPlayed: number;\n\tpatches: { [key: string]: number };\n\tbadges: { [key: string]: number };\n\tphoneNumber: string;\n\tserviceTime: firestore.firestore.Timestamp;\n\tsocial: string;\n\tuserID: string;\n\txp: number;\n}\n\ninterface redeemXPData {\n\tredeemEmail: string;\n\txp: number;\n}\n\nfunction AutoUnsub() {\n\treturn function (constructor) {\n\t\tconst orig = constructor.prototype.ngOnDestroy;\n\t\tconstructor.prototype.ngOnDestroy = function () {\n\t\t\tfor (const prop in this) {\n\t\t\t\tconst property = this[prop];\n\t\t\t\tif (typeof property.subscribe === 'function') {\n\t\t\t\t\tproperty.unsubscribe();\n\t\t\t\t}\n\t\t\t}\n\t\t\torig.apply();\n\t\t};\n\t};\n}\n\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class DatabaseService {\n\tuploadPercent: Observable;\n\tprofileUpload: Observable;\n\teventUpload: Observable;\n\n\tconstructor(\n\t\tprivate readonly afs: AngularFirestore,\n\t\tprivate storage: AngularFireStorage,\n\t\tprivate realTimeDB: AngularFireDatabase,\n\t\tprivate httpClient: HttpClient\n\t) {}\n\n\tRedeemXPError(email: string) {\n\t\tthis.afs\n\t\t\t.collection('RedeemXpError')\n\t\t\t.add({ email: email })\n\t\t\t.then()\n\t\t\t.catch((err) => {\n\t\t\t\tconsole.error(err);\n\t\t\t});\n\t}\n\n\tSetUserTeam(uid: string, teamName: string): Promise {\n\t\treturn this.afs.collection('Users').doc(uid).update({ team: teamName });\n\t}\n\n\tRedeemXP(userID: string, redeemID: string) {\n\t\treturn this.afs\n\t\t\t.collection('RedeemXP', (ref) => ref.where('redeemEmail', '==', redeemID))\n\t\t\t.get()\n\t\t\t.pipe(first())\n\t\t\t.subscribe((ret) => {\n\t\t\t\tif (!ret.empty) {\n\t\t\t\t\tlet data = ret.docs[0];\n\t\t\t\t\tlet batch = this.afs.firestore.batch();\n\n\t\t\t\t\tbatch.delete(data.ref);\n\t\t\t\t\tbatch.update(this.afs.collection('Users').doc(userID).ref, {\n\t\t\t\t\t\txp: firestore.firestore.FieldValue.increment(Number(data.data().xp)),\n\t\t\t\t\t});\n\t\t\t\t\tthis.log(LogType.RedeemXP, `Redeemed ${data.data().xp}`, ReasonIdType.RedeemXP, userID, userID, batch);\n\t\t\t\t\tbatch\n\t\t\t\t\t\t.commit()\n\t\t\t\t\t\t.then()\n\t\t\t\t\t\t.catch((err) => {\n\t\t\t\t\t\t\tthis.log(LogType.RedeemXP, `An error occured redeeming previous xp`, ReasonIdType.RedeemXP, userID, userID, batch);\n\t\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tLoadRuleBook() {\n\t\treturn this.afs.collection('Rules').doc('RuleBook');\n\t}\n\n\ttogglePermissions(userId: string, mode: string, value: boolean, reasonID: string) {\n\t\tlet batch = this.afs.firestore.batch();\n\t\tif (mode == 'admin') {\n\t\t\tbatch.update(this.afs.collection('Users').doc(userId).ref, {\n\t\t\t\tadmin: value,\n\t\t\t});\n\t\t\tthis.log(LogType.Permissions, `Admin permissions set to ${value}`, ReasonIdType.User, userId, reasonID, batch);\n\t\t} else if (mode == 'marshal') {\n\t\t\tbatch.update(this.afs.collection('Users').doc(userId).ref, {\n\t\t\t\tmarshal: value,\n\t\t\t});\n\t\t\tthis.log(LogType.Permissions, `Marshal permissions set to ${value}`, ReasonIdType.User, userId, reasonID, batch);\n\t\t}\n\t\treturn batch.commit();\n\t}\n\n\tAddUserXP(userID: string, amount: number, reasonID: string) {\n\t\tlet batch = this.afs.firestore.batch();\n\t\tthis.log(LogType.XP, `Awarded ${amount} Xp to player`, ReasonIdType.User, userID, reasonID, batch);\n\t\tbatch.update(this.afs.collection('Users').doc(userID).ref, {\n\t\t\txp: firestore.firestore.FieldValue.increment(amount),\n\t\t});\n\t\treturn batch.commit();\n\t}\n\n\tRemoveUserXP(userID: string, amount: number, reasonID: string) {\n\t\tlet batch = this.afs.firestore.batch();\n\t\tthis.log(LogType.XP, `Removed ${amount} Xp from player`, ReasonIdType.User, userID, reasonID, batch);\n\t\tbatch.update(this.afs.collection('Users').doc(userID).ref, {\n\t\t\txp: firestore.firestore.FieldValue.increment(-1 * amount),\n\t\t});\n\t\treturn batch.commit();\n\t}\n\n\tisAdmin(userID: string, role: string): Observable {\n\t\treturn this.afs\n\t\t\t.collection('Users')\n\t\t\t.doc(userID)\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((user) => {\n\t\t\t\t\treturn user.data().admin || (role == 'marshal' && user.data().marshal);\n\t\t\t\t})\n\t\t\t);\n\t}\n\n\tGetAdminType(userID: string): Observable {\n\t\treturn this.afs\n\t\t\t.collection('Users')\n\t\t\t.doc(userID)\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((user) => {\n\t\t\t\t\treturn user.data().admin ? 'admin' : user.data().marshal ? 'marshal' : '';\n\t\t\t\t})\n\t\t\t);\n\t}\n\n\tGetEventBonusXP(eventID: string) {\n\t\treturn this.afs\n\t\t\t.collection('Event')\n\t\t\t.doc(eventID)\n\t\t\t.snapshotChanges()\n\t\t\t.pipe(\n\t\t\t\tmap((data) => {\n\t\t\t\t\treturn data.payload.data();\n\t\t\t\t}),\n\t\t\t\tpluck('toggleBonusXP')\n\t\t\t);\n\t}\n\n\tGetMainEvents() {\n\t\treturn this.afs\n\t\t\t.collection('Event', (ref) => ref.orderBy('eventStartTime', 'desc'))\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((data) => {\n\t\t\t\t\treturn data.docs.slice(0, 3).map((event) => {\n\t\t\t\t\t\treturn combineLatest([this.GetEvent(event.id), this.FetchEventImage(event.id)]);\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t\tswitchMap((event) => {\n\t\t\t\t\treturn forkJoin(event);\n\t\t\t\t})\n\t\t\t);\n\t}\n\n\tToggleMainEvents(obj: any) {\n\t\treturn this.afs.collection('MainEvents').doc('events').update(obj);\n\t}\n\n\tuploadFile(file, uid: String) {\n\t\tconst filePath = 'profileImages/' + uid;\n\t\tconst fileRef = this.storage.ref(filePath);\n\t\tconst task = this.storage.upload(filePath, file);\n\n\t\t// get notified when the download URL is available\n\t\ttask\n\t\t\t.snapshotChanges()\n\t\t\t.pipe(finalize(() => (this.profileUpload = fileRef.getDownloadURL())))\n\t\t\t.subscribe();\n\t\treturn task;\n\t}\n\n\tuploadTeamImage(file, uid: String) {\n\t\tconst filePath = 'teamImages/' + uid;\n\t\tconst fileRef = this.storage.ref(filePath);\n\t\tconst task = this.storage.upload(filePath, file);\n\n\t\t// get notified when the download URL is available\n\t\ttask\n\t\t\t.snapshotChanges()\n\t\t\t.pipe(finalize(() => (this.profileUpload = fileRef.getDownloadURL())))\n\t\t\t.subscribe();\n\n\t\treturn task;\n\t}\n\n\tuploadPatchRequestImage(file, uid: string, patchID: string) {\n\t\tlet id: string = this.afs.createId();\n\t\tconst data = { UserID: uid, patchID: patchID };\n\t\treturn this.afs\n\t\t\t.collection('PatchRequests')\n\t\t\t.doc(id)\n\t\t\t.set(data)\n\t\t\t.then(() => {\n\t\t\t\tconst filePath = 'patchRequestImages/' + id;\n\t\t\t\tconst fileRef = this.storage.ref(filePath);\n\t\t\t\tconst task = this.storage.upload(filePath, file);\n\n\t\t\t\treturn task;\n\t\t\t});\n\t}\n\n\tuploadEventImage(file, uid: String) {\n\t\tconst filePath = 'eventImages/' + uid;\n\t\tconst fileRef = this.storage.ref(filePath);\n\t\tconst task = this.storage.upload(filePath, file);\n\n\t\t// observe percentage changes\n\t\tthis.uploadPercent = task.percentageChanges();\n\t\t// get notified when the download URL is available\n\t\treturn task;\n\t}\n\n\tGetEventInterested(eventID: String) {\n\t\treturn this.afs\n\t\t\t.collection('Registration')\n\t\t\t.doc(`${eventID}`)\n\t\t\t.collection('EventRegistration', (ref) => ref.where('status', '==', 1))\n\t\t\t.valueChanges();\n\t}\n\n\tGetEventNotAttending(eventID: String) {\n\t\treturn this.afs\n\t\t\t.collection('Registration')\n\t\t\t.doc(`${eventID}`)\n\t\t\t.collection('EventRegistration', (ref) => ref.where('status', '==', 0))\n\t\t\t.valueChanges();\n\t}\n\n\tToggleXP(eventID: string, xp: boolean) {\n\t\treturn this.afs.collection('Event').doc(eventID).update({ toggleBonusXP: xp });\n\t}\n\n\tGetUserDocument(uid: String) {\n\t\treturn this.afs.collection('Users').doc(`${uid}`);\n\t}\n\n\tGetParticipantDetails(uid: String) {\n\t\treturn this.afs.collection('Users').doc(`${uid}`).get();\n\t}\n\n\tCreateNewUserDocument(obj: any, userID: String) {\n\t\treturn this.afs.collection('Users').doc(`${userID}`).set(obj);\n\t}\n\n\tUpdateUserDocument(obj: any, user: any): Observable> {\n\t\tconsole.log('UPDATING DOC');\n\t\tif (obj.userID) {\n\t\t\tconsole.log(obj.userID);\n\t\t\treturn this.afs\n\t\t\t\t.collection('UserRegistrations')\n\t\t\t\t.doc(user.user.id)\n\t\t\t\t.get()\n\t\t\t\t.pipe(\n\t\t\t\t\tmap((registrationData) => {\n\t\t\t\t\t\tconsole.log(registrationData);\n\t\t\t\t\t\tlet batch = this.afs.firestore.batch();\n\t\t\t\t\t\t[...Object.values(registrationData.data())].forEach((registration) => {\n\t\t\t\t\t\t\tlet eventID = registration.path.split('/')[1];\n\t\t\t\t\t\t\tbatch.update(this.afs.collection('Registration').doc(eventID).collection('EventRegistration').doc(user.user.id).ref, {\n\t\t\t\t\t\t\t\tcallsign: obj.userID,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbatch.update(this.afs.collection('Users').doc(`${user.user.id}`).ref, obj);\n\t\t\t\t\t\treturn batch.commit();\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t} else {\n\t\t\treturn of(this.afs.collection('Users').doc(`${user.user.id}`).update(obj));\n\t\t}\n\t}\n\n\tCheckIfUserExists(username: String) {\n\t\treturn this.afs.collection('Users', (ref) => ref.where('userID', '==', `${username}`)).get();\n\t}\n\n\tCheckIfBadgeNameExists(badgeName: string) {\n\t\treturn this.afs.collection('Badges', (ref) => ref.where('badgeName', '==', badgeName)).get();\n\t}\n\n\tCheckIfPatchNameExists(badgeName: string) {\n\t\treturn this.afs.collection('Patches', (ref) => ref.where('patchName', '==', badgeName)).get();\n\t}\n\n\tKickUsersFromEvent(eventID: string, usersToKick: string[], reasonID: string) {\n\t\treturn new Observable((sub) => {\n\t\t\t// Once we get the results, begin a batch\n\t\t\tlet batch = this.afs.firestore.batch();\n\t\t\tusersToKick.forEach((userID) => {\n\t\t\t\t//check if they are Participants too\n\t\t\t\tlet ref = this.afs.collection('Participant').doc(eventID).collection('Lobby').doc(userID).ref;\n\t\t\t\tif (ref) {\n\t\t\t\t\tthis.log(LogType.Participant, `Participation status deleted`, ReasonIdType.User, userID, reasonID, batch);\n\t\t\t\t\tbatch.delete(ref);\n\t\t\t\t}\n\t\t\t\tthis.log(LogType.Registration, `Registration status deleted`, ReasonIdType.User, userID, reasonID, batch);\n\t\t\t\tbatch.delete(this.afs.collection('Registration').doc(eventID).collection('EventRegistration').doc(userID).ref);\n\t\t\t});\n\t\t\tbatch\n\t\t\t\t.commit()\n\t\t\t\t.then(() => {\n\t\t\t\t\tsub.next(true);\n\t\t\t\t})\n\t\t\t\t.catch((err) => sub.next(err));\n\t\t});\n\t}\n\n\tFetchProfileImage(uid: String): Observable {\n\t\treturn this.storage\n\t\t\t.ref('profileImages/' + uid)\n\t\t\t.getDownloadURL()\n\t\t\t.pipe(\n\t\t\t\tmap((image) => {\n\t\t\t\t\treturn image;\n\t\t\t\t}),\n\t\t\t\tcatchError((err) => this.storage.ref('profileImages/defaultPP.png').getDownloadURL())\n\t\t\t);\n\t}\n\n\tFetchTeamImage(uid: String): Observable {\n\t\treturn this.storage\n\t\t\t.ref('teamImages/' + uid)\n\t\t\t.getDownloadURL()\n\t\t\t.pipe(\n\t\t\t\tmap((image) => {\n\t\t\t\t\treturn image;\n\t\t\t\t}),\n\t\t\t\tcatchError((err) => this.storage.ref('teamImages/noTeam.png').getDownloadURL())\n\t\t\t);\n\t}\n\n\tFetchEventImage(eventUID: String): Observable {\n\t\treturn this.storage.ref('eventImages/' + eventUID).getDownloadURL();\n\t}\n\n\tUpdateEvent(obj: any, eventID: string) {\n\t\treturn this.afs.collection('Event').doc(eventID).update(obj);\n\t}\n\n\tSwitchUsersTeams(eventID: string, usersToMove: string[], teamIndex: Number, reasonID, eventName: string): Observable {\n\t\tlet batch = this.afs.firestore.batch();\n\t\treturn this.afs\n\t\t\t.collection('Participant')\n\t\t\t.doc(`${eventID}`)\n\t\t\t.collection('Lobby')\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((users) => {\n\t\t\t\t\tlet participants = new Map();\n\t\t\t\t\tusers.docs.map((doc) => {\n\t\t\t\t\t\tparticipants.set(doc.id, true);\n\t\t\t\t\t});\n\t\t\t\t\tusersToMove.forEach((userID) => {\n\t\t\t\t\t\t//if the user is already participating in the game switch the team in Participant table too\n\t\t\t\t\t\tif (participants.get(userID)) {\n\t\t\t\t\t\t\tthis.log(\n\t\t\t\t\t\t\t\tLogType.Participant,\n\t\t\t\t\t\t\t\t`Participation team switched to team ${teamIndex} for event ${eventName}`,\n\t\t\t\t\t\t\t\tReasonIdType.User,\n\t\t\t\t\t\t\t\tuserID,\n\t\t\t\t\t\t\t\treasonID,\n\t\t\t\t\t\t\t\tbatch\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tbatch.update(this.afs.collection('Participant').doc(eventID).collection('Lobby').doc(userID).ref, { team: teamIndex });\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.log(\n\t\t\t\t\t\t\tLogType.Participant,\n\t\t\t\t\t\t\t`Registration team switched to team ${teamIndex} for event ${eventName}`,\n\t\t\t\t\t\t\tReasonIdType.User,\n\t\t\t\t\t\t\tuserID,\n\t\t\t\t\t\t\treasonID,\n\t\t\t\t\t\t\tbatch\n\t\t\t\t\t\t);\n\t\t\t\t\t\tbatch.update(this.afs.collection('Registration').doc(eventID).collection('EventRegistration').doc(userID).ref, { team: teamIndex });\n\t\t\t\t\t});\n\n\t\t\t\t\treturn batch;\n\t\t\t\t}),\n\t\t\t\tswitchMap((batch) => {\n\t\t\t\t\treturn batch.commit();\n\t\t\t\t})\n\t\t\t);\n\t}\n\n\t// fetch all event documents and order by start date\n\tGetAllEventDocuments(docIndex): Observable {\n\t\tif (docIndex)\n\t\t\treturn this.afs\n\t\t\t\t.collection('Event', (ref) => ref.orderBy('eventStartTime', 'asc').startAfter(docIndex).limit(16))\n\t\t\t\t.get();\n\t\treturn this.afs\n\t\t\t.collection('Event', (ref) => ref.orderBy('eventStartTime', 'asc').limit(16))\n\t\t\t.get();\n\t}\n\n\t// fetch all event documents and order by start date\n\tGetAllEventDocumentsDateFilter(filter, docIndex): Observable {\n\t\tif (docIndex)\n\t\t\treturn this.afs\n\t\t\t\t.collection('Event', (ref) => ref.orderBy('eventStartTime', filter).endAt(docIndex).limit(10))\n\t\t\t\t.get();\n\t\treturn this.afs\n\t\t\t.collection('Event', (ref) => ref.orderBy('eventStartTime', filter).limit(10))\n\t\t\t.get();\n\t}\n\n\t// fetch all event documents and order by start date\n\tGetAllEventFilterExpired(expired: Boolean, docIndex): Observable {\n\t\tif (expired) {\n\t\t\tif (docIndex)\n\t\t\t\treturn this.afs\n\t\t\t\t\t.collection('Event', (ref) =>\n\t\t\t\t\t\tref\n\t\t\t\t\t\t\t.where('eventEndTime', '<=', new firestore.firestore.Timestamp(Date.now() / 1000 - 10800, 0))\n\t\t\t\t\t\t\t.orderBy('eventEndTime', 'desc')\n\t\t\t\t\t\t\t.startAfter(docIndex)\n\t\t\t\t\t\t\t.limit(20)\n\t\t\t\t\t)\n\t\t\t\t\t.get();\n\t\t\treturn this.afs\n\t\t\t\t.collection('Event', (ref) =>\n\t\t\t\t\tref\n\t\t\t\t\t\t.where('eventEndTime', '<=', new firestore.firestore.Timestamp(Date.now() / 1000 - 10800, 0))\n\t\t\t\t\t\t.orderBy('eventEndTime', 'desc')\n\t\t\t\t\t\t.limit(20)\n\t\t\t\t)\n\t\t\t\t.get();\n\t\t}\n\t\tif (docIndex)\n\t\t\treturn this.afs\n\t\t\t\t.collection('Event', (ref) =>\n\t\t\t\t\tref\n\t\t\t\t\t\t.where('eventEndTime', '>=', new firestore.firestore.Timestamp(Date.now() / 1000 - 10800, 0))\n\t\t\t\t\t\t.startAfter(docIndex)\n\t\t\t\t\t\t.limit(20)\n\t\t\t\t)\n\t\t\t\t.get();\n\t\treturn this.afs\n\t\t\t.collection('Event', (ref) => ref.where('eventEndTime', '>=', new firestore.firestore.Timestamp(Date.now() / 1000 - 10800, 0)).limit(20))\n\t\t\t.get();\n\t}\n\n\t// fetch all event documents and order by start date\n\tFindEventDocuments(eventTitle: string): Observable {\n\t\treturn this.afs\n\t\t\t.collection('Event', (ref) =>\n\t\t\t\tref\n\t\t\t\t\t.orderBy('eventTitle')\n\t\t\t\t\t.startAt(eventTitle)\n\t\t\t\t\t.endAt(eventTitle + '\\uf8ff')\n\t\t\t\t\t.limit(10)\n\t\t\t)\n\t\t\t.get();\n\t}\n\n\tFinduserDocuments(userName: string): Observable {\n\t\treturn this.afs\n\t\t\t.collection('Users', (ref) =>\n\t\t\t\tref\n\t\t\t\t\t.orderBy('userID')\n\t\t\t\t\t.startAt(userName)\n\t\t\t\t\t.endAt(userName + '\\uf8ff')\n\t\t\t\t\t.limit(10)\n\t\t\t)\n\t\t\t.get();\n\t}\n\n\tFinduserDocumentsByFullname(userName: string): Observable {\n\t\treturn this.afs\n\t\t\t.collection('Users', (ref) =>\n\t\t\t\tref\n\t\t\t\t\t.orderBy('fullname')\n\t\t\t\t\t.startAt(userName)\n\t\t\t\t\t.endAt(userName + '\\uf8ff')\n\t\t\t\t\t.limit(15)\n\t\t\t)\n\t\t\t.get();\n\t}\n\n\tUpdateBadge(obj: any, badgeID: string) {\n\t\treturn this.afs.collection('Badges').doc(badgeID).update(obj);\n\t}\n\n\tUpdatePatch(obj: any, patchID: string) {\n\t\treturn this.afs.collection('Patches').doc(patchID).update(obj);\n\t}\n\n\tUploadBadgeImage(data: any, badgeID: string) {\n\t\treturn this.storage.upload('badgeImages/' + badgeID, data);\n\t}\n\n\tUploadPatchImage(data: any, badgeID: string) {\n\t\treturn this.storage.upload('patchImages/' + badgeID, data);\n\t}\n\n\t// fetch all Badges by badge Name\n\tFindBadgeDocuments(badgeName: string): Observable {\n\t\treturn this.afs\n\t\t\t.collection('Badges', (ref) =>\n\t\t\t\tref\n\t\t\t\t\t.orderBy('badgeName')\n\t\t\t\t\t.startAt(badgeName)\n\t\t\t\t\t.endAt(badgeName + '\\uf8ff')\n\t\t\t\t\t.limit(10)\n\t\t\t)\n\t\t\t.get();\n\t}\n\n\t// fetch all Badges by Patch Name\n\tFindPatchDocuments(patchName: string): Observable {\n\t\treturn this.afs\n\t\t\t.collection('Patches', (ref) =>\n\t\t\t\tref\n\t\t\t\t\t.orderBy('patchName')\n\t\t\t\t\t.startAt(patchName)\n\t\t\t\t\t.endAt(patchName + '\\uf8ff')\n\t\t\t\t\t.limit(10)\n\t\t\t)\n\t\t\t.get();\n\t}\n\n\tGetEventRegisteredParticipants(eventUid: String) {\n\t\treturn this.afs\n\t\t\t.collection('Registration')\n\t\t\t.doc(`${eventUid}`)\n\t\t\t.collection('EventRegistration', (ref) => ref.where('status', '==', REGISTRATION_STATUS.Attending).orderBy('timestamp', 'desc'))\n\t\t\t.stateChanges(['added', 'removed']);\n\t}\n\n\tDeleteUserTeam(uid: string) {\n\t\treturn this.storage\n\t\t\t.ref('teamImages/' + uid)\n\t\t\t.delete()\n\t\t\t.pipe(\n\t\t\t\tmap(() => {\n\t\t\t\t\treturn this.afs.collection('Users').doc(uid).update({ team: firestore.firestore.FieldValue.delete() });\n\t\t\t\t})\n\t\t\t);\n\t}\n\n\tDeleteUserBadge(userID: string, badgeID: string, badgeName: string, reasonID: string) {\n\t\treturn this.afs\n\t\t\t.collection('Users')\n\t\t\t.doc(userID)\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((user) => {\n\t\t\t\t\tlet badges = user.data().badges;\n\t\t\t\t\tlet badgeCount = badges[badgeID];\n\t\t\t\t\tlet batch = this.afs.firestore.batch();\n\n\t\t\t\t\tthis.log(LogType.Badge, `Achievement ${badgeName} Deleted, ${badgeCount - 1} remaining`, ReasonIdType.User, userID, reasonID, batch);\n\t\t\t\t\tif (badgeCount > 1) {\n\t\t\t\t\t\tbadges[badgeID] = badgeCount - 1;\n\t\t\t\t\t\tbatch.update(user.ref, { badges: badges });\n\t\t\t\t\t\treturn batch.commit();\n\t\t\t\t\t}\n\t\t\t\t\tdelete badges[badgeID];\n\t\t\t\t\tbatch.update(user.ref, { badges: badges });\n\t\t\t\t\treturn batch.commit();\n\t\t\t\t})\n\t\t\t);\n\t}\n\n\tDeleteUserPatch(userID: string, patchID: string, patchName: string, reasonID: string) {\n\t\treturn this.afs\n\t\t\t.collection('Users')\n\t\t\t.doc(userID)\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((user) => {\n\t\t\t\t\tlet patches = user.data().patches;\n\t\t\t\t\tlet patchCount = patches[patchID];\n\t\t\t\t\tlet batch = this.afs.firestore.batch();\n\n\t\t\t\t\tthis.log(LogType.Patch, `Patch ${patchName} Deleted, ${patchCount - 1} remaining`, ReasonIdType.User, userID, reasonID, batch);\n\n\t\t\t\t\tif (patchCount > 1) {\n\t\t\t\t\t\tpatches[patchID] = patchCount - 1;\n\t\t\t\t\t\tbatch.update(user.ref, { patches: patches });\n\t\t\t\t\t\treturn batch.commit();\n\t\t\t\t\t}\n\t\t\t\t\tdelete patches[patchID];\n\t\t\t\t\tbatch.update(user.ref, { patches: patches });\n\t\t\t\t\treturn batch.commit();\n\t\t\t\t})\n\t\t\t);\n\t}\n\n\tDeleteuser(userID: string) {\n\t\treturn new Observable((sub) => {\n\t\t\tthis.afs\n\t\t\t\t.collection('Event')\n\t\t\t\t.get()\n\t\t\t\t.pipe(\n\t\t\t\t\tmap((data) => {\n\t\t\t\t\t\treturn data.docs.map((doc) => {\n\t\t\t\t\t\t\treturn combineLatest([\n\t\t\t\t\t\t\t\tthis.afs.collection('Registration').doc(doc.id).collection('EventRegistration').doc(userID).get(),\n\t\t\t\t\t\t\t\tthis.afs.collection('Participant').doc(doc.id).collection('Lobby').doc(userID).get(),\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t});\n\t\t\t\t\t}),\n\t\t\t\t\tswitchMap((data) => {\n\t\t\t\t\t\treturn forkJoin(data);\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.subscribe(\n\t\t\t\t\t(data) => {\n\t\t\t\t\t\tlet batch = this.afs.firestore.batch();\n\t\t\t\t\t\tdata.forEach((pair) => {\n\t\t\t\t\t\t\t// delete from Registration\n\t\t\t\t\t\t\tif (pair[0].exists) batch.delete(pair[0].ref);\n\t\t\t\t\t\t\t//delete from Participants\n\t\t\t\t\t\t\tif (pair[1].exists) batch.delete(pair[1].ref);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tbatch.delete(this.afs.collection('Users').doc(userID).ref);\n\t\t\t\t\t\tbatch\n\t\t\t\t\t\t\t.commit()\n\t\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t\t\t//delete image\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tthis.storage\n\t\t\t\t\t\t\t\t\t\t\t.ref('profileImages/' + userID)\n\t\t\t\t\t\t\t\t\t\t\t.delete()\n\t\t\t\t\t\t\t\t\t\t\t.subscribe(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tsub.next(true);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t\t\t//users without profile pictures will break spinner in UI here\n\t\t\t\t\t\t\t\t\t\tsub.next(true);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t(err) => {\n\t\t\t\t\t\t\t\t\tthrow err;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.catch((err) => {\n\t\t\t\t\t\t\t\tthrow err;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\t(err) => sub.error(err)\n\t\t\t\t);\n\t\t});\n\t}\n\n\tDeleteBadge(badgeID: string) {\n\t\treturn combineLatest([\n\t\t\tthis.afs.collection('Badges').doc(badgeID).get(),\n\t\t\tthis.afs.firestore\n\t\t\t\t.collection('Users')\n\t\t\t\t.where('badges.' + badgeID, '>=', 1)\n\t\t\t\t.get(),\n\t\t\tthis.afs.firestore.collection('Event').where('badges', 'array-contains', badgeID).get(),\n\t\t]).pipe(\n\t\t\tmap((data) => {\n\t\t\t\tlet batch = this.afs.firestore.batch();\n\t\t\t\tlet badgeRef = data[0];\n\t\t\t\tlet usersWithBadge = data[1];\n\t\t\t\tlet eventsWithBadge = data[2];\n\n\t\t\t\tif (!usersWithBadge.empty) {\n\t\t\t\t\tusersWithBadge.docs.forEach((user) => {\n\t\t\t\t\t\tlet obj = {};\n\t\t\t\t\t\tobj['badges.' + badgeID] = firestore.firestore.FieldValue.delete();\n\t\t\t\t\t\tbatch.update(user.ref, obj);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (!eventsWithBadge.empty) {\n\t\t\t\t\teventsWithBadge.docs.forEach((event) => {\n\t\t\t\t\t\tbatch.update(event.ref, {\n\t\t\t\t\t\t\tbadges: firestore.firestore.FieldValue.arrayRemove(badgeID),\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbatch.delete(badgeRef.ref);\n\t\t\t\tbatch.commit().then(() => {\n\t\t\t\t\tthis.storage\n\t\t\t\t\t\t.ref('badgeImages/' + badgeID)\n\t\t\t\t\t\t.delete()\n\t\t\t\t\t\t.subscribe();\n\t\t\t\t});\n\t\t\t})\n\t\t);\n\n\t\t// return new Observable(sub => {\n\n\t\t// \tthis.afs.collection('Badges').doc(badgeID).get()\n\t\t// \t\t.subscribe((querySnapshot) => {\n\t\t// \t\t\t// Once we get ref , begin a batch\n\t\t// \t\t\tlet batch = this.afs.firestore.batch();\n\t\t// \t\t\t// let batch = this.afs.firestore.batch();\n\t\t// \t\t\tthis.afs.firestore.collection('Users')\n\t\t// \t\t\t\t.where(\"badges.\" + badgeID, \">=\", 1)\n\t\t// \t\t\t\t.get()\n\t\t// \t\t\t\t.then(data => {\n\t\t// \t\t\t\t\tthis.afs.firestore.collection(\"Event\").where(\"badges\", \"array-contains\", badgeID)\n\t\t// \t\t\t\t\t\t.get()\n\t\t// \t\t\t\t\t\t.then(\n\t\t// \t\t\t\t\t\t\tevents => {\n\t\t// \t\t\t\t\t\t\t\tif (!data.empty) {\n\t\t// \t\t\t\t\t\t\t\t\tdata.forEach(user => {\n\t\t// \t\t\t\t\t\t\t\t\t\tlet obj = {}\n\t\t// \t\t\t\t\t\t\t\t\t\tobj[\"badges.\" + badgeID] = firestore.firestore.FieldValue.delete()\n\t\t// \t\t\t\t\t\t\t\t\t\tbatch.update(user.ref, obj);\n\t\t// \t\t\t\t\t\t\t\t\t})\n\t\t// \t\t\t\t\t\t\t\t}\n\t\t// \t\t\t\t\t\t\t\tif (!events.empty) {\n\t\t// \t\t\t\t\t\t\t\t\tevents.forEach(event => {\n\t\t// \t\t\t\t\t\t\t\t\t\tlet obj = {}\n\t\t// \t\t\t\t\t\t\t\t\t\tobj[\"badges\"] = firestore.firestore.FieldValue.arrayRemove(badgeID);\n\t\t// \t\t\t\t\t\t\t\t\t\tbatch.update(event.ref, obj);\n\t\t// \t\t\t\t\t\t\t\t\t})\n\t\t// \t\t\t\t\t\t\t\t}\n\n\t\t// \t\t\t\t\t\t\t\tbatch.delete(querySnapshot.ref)\n\t\t// \t\t\t\t\t\t\t\tbatch.commit().then(() => {\n\t\t// \t\t\t\t\t\t\t\t\tthis.storage.ref('badgeImages/' + badgeID).delete().subscribe(\n\t\t// \t\t\t\t\t\t\t\t\t\t() => {\n\t\t// \t\t\t\t\t\t\t\t\t\t\tsub.next(true)\n\t\t// \t\t\t\t\t\t\t\t\t\t\tsub.complete()\n\t\t// \t\t\t\t\t\t\t\t\t\t}\n\t\t// \t\t\t\t\t\t\t\t\t)\n\t\t// \t\t\t\t\t\t\t\t})\n\t\t// \t\t\t\t\t\t\t}\n\t\t// \t\t\t\t\t\t).catch(err => { throw err })\n\t\t// \t\t\t\t})\n\n\t\t// \t\t}, (err) => { sub.error(err) })\n\t\t// })\n\t}\n\n\tDeletePatch(patchID: string) {\n\t\treturn combineLatest([\n\t\t\tthis.afs.collection('Patches').doc(patchID).get(),\n\t\t\tthis.afs.firestore\n\t\t\t\t.collection('Users')\n\t\t\t\t.where('patches.' + patchID, '>=', 1)\n\t\t\t\t.get(),\n\t\t\tthis.afs.firestore.collection('Event').where('badges', 'array-contains', patchID).get(),\n\t\t]).pipe(\n\t\t\tmap((data) => {\n\t\t\t\tlet batch = this.afs.firestore.batch();\n\t\t\t\tlet patchRef = data[0];\n\t\t\t\tlet usersWithPatch = data[1];\n\t\t\t\tlet eventsWithPatch = data[2];\n\n\t\t\t\tif (!usersWithPatch.empty) {\n\t\t\t\t\tusersWithPatch.docs.forEach((user) => {\n\t\t\t\t\t\tlet obj = {};\n\t\t\t\t\t\tobj['patches.' + patchID] = firestore.firestore.FieldValue.delete();\n\t\t\t\t\t\tbatch.update(user.ref, obj);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (!eventsWithPatch.empty) {\n\t\t\t\t\teventsWithPatch.docs.forEach((event) => {\n\t\t\t\t\t\tbatch.update(event.ref, {\n\t\t\t\t\t\t\tbadges: firestore.firestore.FieldValue.arrayRemove(patchID),\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbatch.delete(patchRef.ref);\n\t\t\t\tbatch.commit().then(() => {\n\t\t\t\t\tthis.storage\n\t\t\t\t\t\t.ref('patchImages/' + patchID)\n\t\t\t\t\t\t.delete()\n\t\t\t\t\t\t.subscribe();\n\t\t\t\t});\n\t\t\t})\n\t\t);\n\n\t\t// return new Observable(sub => {\n\t\t// \tthis.afs.collection('Patches').doc(patchID).get()\n\t\t// \t\t.subscribe((querySnapshot) => {\n\t\t// \t\t\t// Once we get ref , begin a batch\n\t\t// \t\t\tlet batch = this.afs.firestore.batch();\n\t\t// \t\t\t// let batch = this.afs.firestore.batch();\n\t\t// \t\t\tthis.afs.firestore.collection('Users')\n\t\t// \t\t\t\t.where(\"patches.\" + patchID, \">=\", 1)\n\t\t// \t\t\t\t.get()\n\t\t// \t\t\t\t.then(data => {\n\t\t// \t\t\t\t\tthis.afs.firestore.collection(\"Event\").where(\"patches\", \"array-contains\", patchID)\n\t\t// \t\t\t\t\t\t.get()\n\t\t// \t\t\t\t\t\t.then(\n\t\t// \t\t\t\t\t\t\tevents => {\n\t\t// \t\t\t\t\t\t\t\tif (!data.empty) {\n\t\t// \t\t\t\t\t\t\t\t\tdata.forEach(user => {\n\t\t// \t\t\t\t\t\t\t\t\t\tlet obj = {}\n\t\t// \t\t\t\t\t\t\t\t\t\tobj[\"patches.\" + patchID] = firestore.FieldValue.delete()\n\t\t// \t\t\t\t\t\t\t\t\t\tbatch.update(user.ref, obj);\n\t\t// \t\t\t\t\t\t\t\t\t})\n\t\t// \t\t\t\t\t\t\t\t}\n\t\t// \t\t\t\t\t\t\t\tif (!events.empty) {\n\t\t// \t\t\t\t\t\t\t\t\tevents.forEach(event => {\n\t\t// \t\t\t\t\t\t\t\t\t\tlet obj = {}\n\t\t// \t\t\t\t\t\t\t\t\t\tobj[\"patches\"] = firestore.FieldValue.arrayRemove(patchID);\n\t\t// \t\t\t\t\t\t\t\t\t\tbatch.update(event.ref, obj);\n\t\t// \t\t\t\t\t\t\t\t\t})\n\t\t// \t\t\t\t\t\t\t\t}\n\n\t\t// \t\t\t\t\t\t\t\tbatch.delete(querySnapshot.ref)\n\t\t// \t\t\t\t\t\t\t\tbatch.commit().then(() => {\n\t\t// \t\t\t\t\t\t\t\t\tthis.storage.ref('patchImages/' + patchID).delete().subscribe(\n\t\t// \t\t\t\t\t\t\t\t\t\t() => {\n\t\t// \t\t\t\t\t\t\t\t\t\t\tsub.next(true)\n\t\t// \t\t\t\t\t\t\t\t\t\t\tsub.complete()\n\t\t// \t\t\t\t\t\t\t\t\t\t}\n\t\t// \t\t\t\t\t\t\t\t\t)\n\t\t// \t\t\t\t\t\t\t\t})\n\t\t// \t\t\t\t\t\t\t}\n\t\t// \t\t\t\t\t\t).catch(err => { throw err })\n\t\t// \t\t\t\t})\n\n\t\t// \t\t}, (err) => { sub.error(err) })\n\t\t// })\n\t}\n\n\tDeleteEvent(eventID: string) {\n\t\treturn this.afs\n\t\t\t.collection('Event')\n\t\t\t.doc(eventID)\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap(\n\t\t\t\t\t(event) => {\n\t\t\t\t\t\tlet batch = this.afs.firestore.batch();\n\t\t\t\t\t\tbatch.delete(this.afs.collection('Participant').doc(eventID).ref);\n\t\t\t\t\t\tbatch.delete(this.afs.collection('Registration').doc(eventID).ref);\n\t\t\t\t\t\tbatch.delete(this.afs.collection('Event').doc(eventID).ref);\n\t\t\t\t\t\treturn from(batch.commit());\n\t\t\t\t\t},\n\t\t\t\t\tforkJoin((sub) => {\n\t\t\t\t\t\treturn from(this.realTimeDB.database.ref(eventID).remove());\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t);\n\n\t\t// return new Observable(sub => {\n\t\t// \tthis.afs.collection('Event').doc(eventID).get()\n\t\t// \t\t.subscribe((querySnapshot) => {\n\t\t// \t\t\t// Once we get the results, begin a batch\n\t\t// \t\t\tlet batch = this.afs.firestore.batch();\n\t\t// \t\t\tbatch.delete(this.afs.collection('Participant').doc(eventID).ref)\n\t\t// \t\t\tbatch.delete(this.afs.collection('Registration').doc(eventID).ref)\n\t\t// \t\t\tbatch.delete(this.afs.collection('Event').doc(eventID).ref)\n\t\t// \t\t\t// Commit the batch\n\t\t// \t\t\tbatch.commit().then(() => {\n\t\t// \t\t\t\t//remove the event image\n\t\t// \t\t\t\tlet deletSub = this.storage.ref('eventImages/' + eventID)\n\t\t// \t\t\t\t\t.delete()\n\t\t// \t\t\t\t\t.subscribe(() => {\n\t\t// \t\t\t\t\t\t//delete the chats\n\t\t// \t\t\t\t\t\tthis.realTimeDB.database.ref(eventID).remove().then(() => {\n\t\t// \t\t\t\t\t\t\tsub.next(true)\n\t\t// \t\t\t\t\t\t\tsub.complete();\n\t\t// \t\t\t\t\t\t}).catch(err => { throw err });\n\t\t// \t\t\t\t\t}, (err) => { deletSub.unsubscribe(); throw (err); }, () => {\n\t\t// \t\t\t\t\t\tdeletSub.unsubscribe();\n\t\t// \t\t\t\t\t})\n\n\t\t// \t\t\t}).catch(err => { throw err })\n\t\t// \t\t}, (err) => { sub.error(err); sub.complete(); })\n\t\t// })\n\t}\n\n\tFetchUser(userID: String): Observable {\n\t\treturn this.afs\n\t\t\t.collection('Users')\n\t\t\t.doc(`${userID}`)\n\t\t\t.get()\n\t\t\t.pipe(retry(3))\n\t\t\t.pipe(\n\t\t\t\tmap((user) => {\n\t\t\t\t\tif (!user.exists) throwError('user doc not found');\n\t\t\t\t\treturn user;\n\t\t\t\t})\n\t\t\t);\n\t}\n\n\tGetEventTeamLists(eventID: string) {\n\t\treturn combineLatest([\n\t\t\tthis.afs.collection('Event').doc(eventID).get(),\n\t\t\tthis.afs\n\t\t\t\t.collection('Registration')\n\t\t\t\t.doc(eventID)\n\t\t\t\t.collection('EventRegistration', (ref) => ref.where('status', '==', REGISTRATION_STATUS.Attending))\n\t\t\t\t.get(),\n\t\t]).pipe(\n\t\t\tmap((data) => {\n\t\t\t\tlet teamsCountArr: number[] = [];\n\t\t\t\tfor (const inx of data[0].data().eventTeams) {\n\t\t\t\t\tteamsCountArr.push(0);\n\t\t\t\t}\n\t\t\t\tdata[1].docs.forEach((doc) => {\n\t\t\t\t\tteamsCountArr[doc.data()['team']] += 1;\n\t\t\t\t});\n\t\t\t\tconst output = {\n\t\t\t\t\tlimits: data[0].data()['eventTeamsMaxPlayers'],\n\t\t\t\t\tteamNumbers: teamsCountArr,\n\t\t\t\t};\n\t\t\t\treturn output;\n\t\t\t})\n\t\t);\n\t}\n\n\t//LIVE EVENT PARTICIPANT TABLE\n\n\tRegisterParticipantForEvent(userID: string, eventID: string, team: Number, Scanned: boolean = false) {\n\t\treturn combineLatest([\n\t\t\tthis.afs.collection('Users').doc(userID).get(),\n\t\t\tthis.afs.collection('Participant').doc(eventID).collection('Lobby').doc(userID).get(),\n\t\t\tthis.afs\n\t\t\t\t.collection('Event')\n\t\t\t\t.doc(`${eventID}`)\n\t\t\t\t.get()\n\t\t\t\t.pipe(\n\t\t\t\t\tmap((data) => data.data()),\n\t\t\t\t\tpluck('xp')\n\t\t\t\t),\n\t\t]).pipe(\n\t\t\tmap((data) => {\n\t\t\t\tif (data[1].metadata.fromCache) {\n\t\t\t\t\tthrow new Error('Cannot set participation status user is offline');\n\t\t\t\t}\n\t\t\t\tif (data[1].exists) {\n\t\t\t\t\tthrow new Error('Already participating in event');\n\t\t\t\t}\n\n\t\t\t\tlet batch = this.afs.firestore.batch();\n\n\t\t\t\tif (!Scanned) this.log(LogType.Participant, `Participating in Event using GPS`, ReasonIdType.Event, userID, eventID, batch);\n\t\t\t\telse this.log(LogType.Participant, `Participating in Event using QR`, ReasonIdType.Event, userID, eventID, batch);\n\n\t\t\t\tbatch.set(this.afs.collection('Participant').doc(`${eventID}`).collection('Lobby').doc(`${userID}`).ref, { team: team });\n\t\t\t\tbatch.update(data[0].ref, {\n\t\t\t\t\txp: firestore.firestore.FieldValue.increment(Number(data[2])),\n\t\t\t\t\tmatchesPlayed: firestore.firestore.FieldValue.increment(1),\n\t\t\t\t});\n\n\t\t\t\treturn batch;\n\t\t\t})\n\t\t);\n\t}\n\n\tWatchEventParticipants(eventID: String) {\n\t\treturn this.afs.collection('Participant').doc(`${eventID}`).collection('Lobby').stateChanges();\n\t}\n\n\tWatchEventQueue(eventID: String) {\n\t\treturn this.afs\n\t\t\t.collection('Registration')\n\t\t\t.doc(`${eventID}`)\n\t\t\t.collection('EventRegistration', (ref) => ref.where('status', '==', REGISTRATION_STATUS.InQueue).orderBy('timestamp', 'asc'))\n\t\t\t.snapshotChanges();\n\t}\n\n\tWatchEvent(eventID: String) {\n\t\treturn this.afs.collection('Event').doc(`${eventID}`).snapshotChanges();\n\t}\n\n\tGetUserParticipantStatus(userID: String, eventID: String) {\n\t\treturn this.afs.collection('Participant').doc(`${eventID}`).collection('Lobby').doc(`${userID}`).get();\n\t}\n\n\tWatchUserParticipantStatus(userID: String, eventID: String) {\n\t\treturn this.afs.collection('Participant').doc(`${eventID}`).collection('Lobby').doc(`${userID}`).snapshotChanges();\n\t}\n\n\tGetUsername(userID: string): Observable {\n\t\treturn this.afs\n\t\t\t.collection('Users')\n\t\t\t.doc(userID)\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((data) => {\n\t\t\t\t\tif (data.exists) return data.data();\n\t\t\t\t\telse return { userID: null };\n\t\t\t\t}),\n\t\t\t\tpluck('userID')\n\t\t\t);\n\t}\n\n\tGetEvent(eventID: String) {\n\t\treturn this.afs.collection('Event').doc(`${eventID}`).get();\n\t}\n\n\tClaimBonusXP(eventID: string, userID: string) {\n\t\treturn combineLatest([\n\t\t\tthis.afs.collection('Users').doc(userID).get(),\n\t\t\tthis.afs.collection('Participant').doc(eventID).collection('Lobby').doc(userID).get(),\n\t\t\tthis.afs.collection('Event').doc(`${eventID}`).get(),\n\t\t]).pipe(\n\t\t\tmap((data) => {\n\t\t\t\tif (data[1].data() && data[1].data()['bonusXPClaimed'] != null) {\n\t\t\t\t\tthrow new Error('bonus XP already claimed');\n\t\t\t\t}\n\t\t\t\tlet user = data[0];\n\t\t\t\tlet participant = data[1];\n\t\t\t\tlet event = data[2].data();\n\n\t\t\t\tlet batch = this.afs.firestore.batch();\n\n\t\t\t\tif (event.bonusXP > 0 || event.patches.length || event.badges.length)\n\t\t\t\t\tthis.log(LogType.BonusRewards, `Claimed Bonus Rewards For Event`, ReasonIdType.Event, userID, eventID, batch);\n\n\t\t\t\tif (event.bonusXP > 0) {\n\t\t\t\t\tthis.log(LogType.BonusRewards, `bonus ${event.bonusXP} XP for event redeemed`, ReasonIdType.Event, userID, eventID, batch);\n\t\t\t\t\tbatch.update(user.ref, {\n\t\t\t\t\t\txp: firestore.firestore.FieldValue.increment(Number(event.bonusXP)),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (participant.data()) {\n\t\t\t\t\tbatch.update(participant.ref, { bonusXPClaimed: true });\n\t\t\t\t} else {\n\t\t\t\t\tbatch.set(participant.ref, {\n\t\t\t\t\t\tbonusXPClaimed: true,\n\t\t\t\t\t\tteam: participant.data().team,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn combineLatest([\n\t\t\t\t\tthis.AddUserPatchesBatch(data[0].id, event.patches, batch, eventID),\n\t\t\t\t\tthis.AddUserBadgesBatch(data[0].id, event.badges, batch, eventID),\n\t\t\t\t\tof(batch),\n\t\t\t\t]);\n\t\t\t}),\n\t\t\tswitchMap((obs) => {\n\t\t\t\treturn forkJoin([obs]);\n\t\t\t})\n\t\t);\n\t}\n\n\tCreateEventDocument(obj, imageData): Observable {\n\t\treturn new Observable((sub) => {\n\t\t\tthis.afs\n\t\t\t\t.collection('Event')\n\t\t\t\t.add(obj)\n\t\t\t\t.then((ref) => {\n\t\t\t\t\tthis.storage\n\t\t\t\t\t\t.upload('eventImages/' + `${ref.id}`, imageData)\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tsub.next(true);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((err) => {\n\t\t\t\t\t\t\tthrow err;\n\t\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tsub.error(err);\n\t\t\t\t});\n\t\t});\n\t}\n\n\t//EVENTDETAILS REGISTRATION\n\tSetUserRegistrationStatus(eventUid: String, userUid: string, statusToSet: Number, loadedEvent: any, registrationStatus: any) {\n\t\treturn this.afs\n\t\t\t.collection('Users')\n\t\t\t.doc(`${userUid}`)\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((data) => {\n\t\t\t\t\tlet obj: registrationData = {\n\t\t\t\t\t\tstatus: statusToSet as REGISTRATION_STATUS,\n\t\t\t\t\t\tteam: registrationStatus.team,\n\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\tcallsign: data.data().userID,\n\t\t\t\t\t\txp: data.data().xp,\n\t\t\t\t\t};\n\t\t\t\t\tlet maxParticipants = loadedEvent.eventData.maxParticipants;\n\t\t\t\t\tlet allRegistrantsCount = loadedEvent.totalEventParticipants.length;\n\t\t\t\t\tlet minimumXP = loadedEvent.eventData.minimumXP;\n\n\t\t\t\t\tif (minimumXP && data.data().xp < minimumXP) throw new Error(`Event requires a minimum player XP of ${minimumXP}`);\n\n\t\t\t\t\t//over Max participants and register status?\n\t\t\t\t\tif (allRegistrantsCount >= maxParticipants && statusToSet == REGISTRATION_STATUS.Attending) {\n\t\t\t\t\t\tobj.status = REGISTRATION_STATUS.InQueue;\n\t\t\t\t\t\tstatusToSet = REGISTRATION_STATUS.InQueue;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet batch = this.afs.firestore.batch();\n\t\t\t\t\t//if someone is dropping out i.e status == NotAttending && the queue is full\n\t\t\t\t\tif (allRegistrantsCount >= maxParticipants && statusToSet == REGISTRATION_STATUS.NotAttending) {\n\t\t\t\t\t\tthis.log(LogType.Registration, `Registration status set to [Not Attending]`, ReasonIdType.Event, userUid, eventUid.toString(), batch);\n\t\t\t\t\t\tthis.afs\n\t\t\t\t\t\t\t.collection('Registration')\n\t\t\t\t\t\t\t.doc(`${eventUid}`)\n\t\t\t\t\t\t\t.collection('EventRegistration')\n\t\t\t\t\t\t\t.doc(`${userUid}`)\n\t\t\t\t\t\t\t.set(obj)\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\tconsole.log('Bump Queue');\n\n\t\t\t\t\t\t\t\tthis.BumpEventQueue(eventUid.toString(), maxParticipants, batch, eventUid.toString(), ReasonIdType.Event).subscribe(\n\t\t\t\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t\t\t\tbatch.commit();\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t(err) => {\n\t\t\t\t\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.catch((err) => {\n\t\t\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet reference = {};\n\t\t\t\t\t\tif (statusToSet != REGISTRATION_STATUS.NotAttending)\n\t\t\t\t\t\t\treference[`${eventUid}`] = this.afs.collection('Registration').doc(`${eventUid}`).collection('EventRegistration').doc(`${userUid}`).ref;\n\t\t\t\t\t\telse reference[`${eventUid}`] = firestore.firestore.FieldValue.delete();\n\n\t\t\t\t\t\tif (statusToSet == REGISTRATION_STATUS.InQueue) {\n\t\t\t\t\t\t\tbatch.set(this.afs.collection('UserRegistrations').doc(userUid).ref, reference, { merge: true });\n\t\t\t\t\t\t\tthis.log(LogType.Registration, `Registration status set to [In Queue]`, ReasonIdType.Event, userUid, eventUid.toString(), batch);\n\t\t\t\t\t\t} else if (statusToSet == REGISTRATION_STATUS.Attending) {\n\t\t\t\t\t\t\tbatch.set(this.afs.collection('UserRegistrations').doc(userUid).ref, reference, { merge: true });\n\t\t\t\t\t\t\tthis.log(LogType.Registration, `Registration status set to [Registered]`, ReasonIdType.Event, userUid, eventUid.toString(), batch);\n\t\t\t\t\t\t} else if (statusToSet == REGISTRATION_STATUS.NotAttending) {\n\t\t\t\t\t\t\tbatch.set(this.afs.collection('UserRegistrations').doc(userUid).ref, reference, { merge: true });\n\t\t\t\t\t\t\tthis.log(LogType.Registration, `Registration status set to [Not Attending]`, ReasonIdType.Event, userUid, eventUid.toString(), batch);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbatch.set(this.afs.collection('Registration').doc(`${eventUid}`).collection('EventRegistration').doc(`${userUid}`).ref, obj);\n\t\t\t\t\t\tbatch.commit().catch((err) => {\n\t\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn statusToSet;\n\t\t\t\t})\n\t\t\t);\n\t}\n\n\tGetUserRegistrationStatus(eventID: String, userID: String) {\n\t\treturn this.afs.collection('Registration').doc(`${eventID}`).collection('EventRegistration').doc(`${userID}`).snapshotChanges();\n\t}\n\n\tGetUserBookingStatus(eventID: String, userID: String) {\n\t\treturn this.afs.collection('Booking').doc(`${eventID}`).collection('UserBooking').doc(`${userID}`).snapshotChanges();\n\t}\n\n\tBumpEvent(eventID: string, reasonID: string) {\n\t\tlet sub = this.GetEvent(eventID)\n\t\t\t.pipe(\n\t\t\t\tswitchMap((event) => {\n\t\t\t\t\tlet batch = this.afs.firestore.batch();\n\t\t\t\t\treturn this.BumpEventQueue(eventID, event.data().maxParticipants, batch, reasonID, ReasonIdType.User);\n\t\t\t\t})\n\t\t\t)\n\t\t\t.subscribe(\n\t\t\t\t(batch) => {\n\t\t\t\t\tbatch\n\t\t\t\t\t\t.commit()\n\t\t\t\t\t\t.then()\n\t\t\t\t\t\t.catch((err) => console.error(err));\n\t\t\t\t\tsub.unsubscribe();\n\t\t\t\t},\n\t\t\t\t(err) => {\n\t\t\t\t\tconsole.error(err);\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tsub.unsubscribe();\n\t\t\t\t}\n\t\t\t);\n\t}\n\n\tBumpEventQueue(eventID: string, maxParticipants: number, batch: firestore.firestore.WriteBatch, reasonID: string, reasonType: ReasonIdType) {\n\t\treturn this.afs\n\t\t\t.collection('Registration')\n\t\t\t.doc(eventID)\n\t\t\t.collection('EventRegistration', (ref) => ref.orderBy('timestamp', 'asc'))\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((queue) => {\n\t\t\t\t\tlet docs = queue.docs;\n\t\t\t\t\tlet subbedCount = queue.docs.filter((user) => {\n\t\t\t\t\t\treturn user.data().status == REGISTRATION_STATUS.Attending;\n\t\t\t\t\t}).length;\n\n\t\t\t\t\tdocs = queue.docs.filter((user) => {\n\t\t\t\t\t\treturn user.data().status == REGISTRATION_STATUS.InQueue;\n\t\t\t\t\t});\n\n\t\t\t\t\tif (docs.length > 0) {\n\t\t\t\t\t\tlet diff = maxParticipants - subbedCount;\n\t\t\t\t\t\tlet index = 0;\n\t\t\t\t\t\twhile (diff) {\n\t\t\t\t\t\t\tthis.log(LogType.Registration, `Event Queue changed new status set to [Registered]`, reasonType, docs[index].id, reasonID, batch);\n\t\t\t\t\t\t\tbatch.update(docs[index].ref, {\n\t\t\t\t\t\t\t\tstatus: REGISTRATION_STATUS.Attending,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t// console.log(docs[index])\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t\tdiff--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn batch;\n\t\t\t\t})\n\t\t\t);\n\t}\n\n\tCreateBadge(obj: any, imageData: any) {\n\t\treturn new Observable((sub) => {\n\t\t\tthis.afs\n\t\t\t\t.collection('Badges')\n\t\t\t\t.add(obj)\n\t\t\t\t.then((ref) => {\n\t\t\t\t\tthis.storage\n\t\t\t\t\t\t.upload('badgeImages/' + `${ref.id}`, imageData)\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tsub.next(true);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((err) => {\n\t\t\t\t\t\t\tthrow err;\n\t\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tsub.error(err);\n\t\t\t\t});\n\t\t});\n\t}\n\n\tCreatePatch(obj: any, imageData: any) {\n\t\treturn new Observable((sub) => {\n\t\t\tthis.afs\n\t\t\t\t.collection('Patches')\n\t\t\t\t.add(obj)\n\t\t\t\t.then((ref) => {\n\t\t\t\t\tthis.storage\n\t\t\t\t\t\t.upload('patchImages/' + `${ref.id}`, imageData)\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tsub.next(true);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((err) => {\n\t\t\t\t\t\t\tthrow err;\n\t\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tsub.error(err);\n\t\t\t\t});\n\t\t});\n\t}\n\n\tGetBadge(badgeID: string) {\n\t\treturn this.afs.collection('Badges').doc(badgeID).get();\n\t}\n\n\tGetPatch(patchID: string) {\n\t\treturn this.afs.collection('Patches').doc(patchID).get();\n\t}\n\n\tFetchRanks() {\n\t\treturn this.afs.collection('Ranks').doc('rankList').get();\n\t}\n\n\tFetchBadgeImage(badgeID: string) {\n\t\treturn this.storage.ref('badgeImages/' + badgeID).getDownloadURL();\n\t}\n\n\tFetchPatchImage(badgeID: string) {\n\t\treturn this.storage.ref('patchImages/' + badgeID).getDownloadURL();\n\t}\n\n\tFetchPatchRequestImage(badgeID: string) {\n\t\treturn this.storage.ref('patchRequestImages/' + badgeID).getDownloadURL();\n\t}\n\n\tGetFullPatchList() {\n\t\treturn this.afs\n\t\t\t.collection('Patches', (ref) => ref.orderBy('patchName', 'desc'))\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((patches) => {\n\t\t\t\t\treturn patches.docs.map((patch) => {\n\t\t\t\t\t\treturn combineLatest([of(patch), this.storage.ref('patchImages/' + patch.id).getDownloadURL()]);\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t\tswitchMap((data) => {\n\t\t\t\t\treturn forkJoin(data);\n\t\t\t\t})\n\t\t\t);\n\t}\n\n\tGetAllBadgesNoLimit() {\n\t\treturn this.afs.collection('Badges', (ref) => ref.orderBy('badgeName', 'desc')).snapshotChanges();\n\t}\n\n\tGetAllPatchesNoLimit() {\n\t\treturn this.afs.collection('Patches', (ref) => ref.orderBy('patchName', 'desc')).snapshotChanges();\n\t}\n\n\tAddUserBadges(userID: string, newBadges: string[], reasonID: string, badges: string[]) {\n\t\treturn this.afs\n\t\t\t.collection('Users')\n\t\t\t.doc(userID)\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((data) => {\n\t\t\t\t\tlet badgeMap = data.data().badges;\n\t\t\t\t\tif (!badgeMap) badgeMap = {};\n\n\t\t\t\t\tnewBadges.forEach((nb) => {\n\t\t\t\t\t\tif (badgeMap[nb]) badgeMap[nb] = badgeMap[nb] + 1;\n\t\t\t\t\t\telse badgeMap[nb] = 1;\n\t\t\t\t\t});\n\t\t\t\t\tlet batch = this.afs.firestore.batch();\n\n\t\t\t\t\tbatch.update(data.ref, { badges: badgeMap });\n\t\t\t\t\tthis.log(LogType.BonusRewards, `Added Achievements [${badges.join(',')}] to account`, ReasonIdType.User, userID, reasonID, batch);\n\t\t\t\t\treturn batch.commit();\n\t\t\t\t})\n\t\t\t);\n\t}\n\n\tAddUserPatches(userID: string, newPatches: string[], reasonID: string, patches: string[]) {\n\t\treturn this.afs\n\t\t\t.collection('Users')\n\t\t\t.doc(userID)\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((data) => {\n\t\t\t\t\tlet patchMap = data.data().patches;\n\t\t\t\t\tif (!patchMap) patchMap = {};\n\n\t\t\t\t\tnewPatches.forEach((nb) => {\n\t\t\t\t\t\tif (patchMap[nb]) patchMap[nb] = patchMap[nb] + 1;\n\t\t\t\t\t\telse patchMap[nb] = 1;\n\t\t\t\t\t});\n\t\t\t\t\tlet batch = this.afs.firestore.batch();\n\t\t\t\t\tbatch.update(data.ref, { patches: patchMap });\n\t\t\t\t\tthis.log(LogType.BonusRewards, `Added Patches [${patches.join(',')}] to account`, ReasonIdType.User, userID, reasonID, batch);\n\t\t\t\t\treturn batch.commit();\n\t\t\t\t})\n\t\t\t);\n\t}\n\n\tAcceptPatchRequest(\n\t\tuserID: string,\n\t\tpatchRequestID: string,\n\t\tnewPatch: string,\n\t\treasonID: string,\n\t\tpatchName: string\n\t): Observable {\n\t\treturn new Observable((sub) => {\n\t\t\tlet innersub = this.afs\n\t\t\t\t.collection('Users')\n\t\t\t\t.doc(userID)\n\t\t\t\t.get()\n\t\t\t\t.pipe(\n\t\t\t\t\tmap((userdoc) => {\n\t\t\t\t\t\treturn combineLatest([of(userdoc), this.storage.ref('patchRequestImages/' + patchRequestID).delete()]);\n\t\t\t\t\t}),\n\t\t\t\t\tswitchMap((data) => {\n\t\t\t\t\t\treturn data;\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.subscribe((data) => {\n\t\t\t\t\tlet patchMap = data[0].data().patches;\n\t\t\t\t\tif (!patchMap) patchMap = {};\n\n\t\t\t\t\tif (patchMap[newPatch]) patchMap[newPatch] = patchMap[newPatch] + 1;\n\t\t\t\t\telse patchMap[newPatch] = 1;\n\n\t\t\t\t\tlet batch = this.afs.firestore.batch();\n\t\t\t\t\tbatch.update(data[0].ref, { patches: patchMap });\n\t\t\t\t\tbatch.delete(this.afs.collection('PatchRequests').doc(patchRequestID).ref);\n\t\t\t\t\tthis.log(LogType.BonusRewards, `Accepted ${patchName} patch request`, ReasonIdType.User, userID, reasonID, batch);\n\t\t\t\t\tthis.log(LogType.BonusRewards, `Accepted user patch request`, ReasonIdType.User, reasonID, userID, batch);\n\t\t\t\t\tsub.next(batch);\n\t\t\t\t\tsub.complete();\n\t\t\t\t\tinnersub.unsubscribe();\n\t\t\t\t});\n\t\t});\n\t}\n\n\tDeclinePatchRequest(userID: string, patchRequestID: string, patchName: string, declinerUserID: string): Observable {\n\t\treturn this.storage\n\t\t\t.ref('patchRequestImages/' + patchRequestID)\n\t\t\t.delete()\n\t\t\t.pipe(\n\t\t\t\tmap(() => {\n\t\t\t\t\tlet batch = this.afs.firestore.batch();\n\t\t\t\t\tbatch.delete(this.afs.collection('PatchRequests').doc(patchRequestID).ref);\n\t\t\t\t\tthis.log(LogType.Patch, `Rejected Patch request for ${patchName}`, ReasonIdType.User, userID, declinerUserID, batch);\n\t\t\t\t\tthis.log(LogType.BonusRewards, `Rejected user patch request`, ReasonIdType.User, declinerUserID, userID, batch);\n\t\t\t\t\treturn batch;\n\t\t\t\t})\n\t\t\t);\n\t}\n\n\tAddUserPatchesBatch(userID: string, newBadges: string[], batch: firestore.firestore.WriteBatch, reasonID: string) {\n\t\treturn this.afs\n\t\t\t.collection('Users')\n\t\t\t.doc(userID)\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((data) => {\n\t\t\t\t\tlet patchMap = data.data().patches;\n\t\t\t\t\tif (!patchMap) patchMap = {};\n\n\t\t\t\t\tnewBadges.forEach((nb) => {\n\t\t\t\t\t\tif (patchMap[nb]) patchMap[nb] = patchMap[nb] + 1;\n\t\t\t\t\t\telse patchMap[nb] = 1;\n\t\t\t\t\t});\n\t\t\t\t\tif (newBadges.length != 0) {\n\t\t\t\t\t\tthis.log(LogType.BonusRewards, `Redeemed patches for event bonus rewards`, ReasonIdType.Event, userID, reasonID, batch);\n\t\t\t\t\t\treturn batch.update(data.ref, { patches: patchMap });\n\t\t\t\t\t}\n\t\t\t\t\treturn batch;\n\t\t\t\t})\n\t\t\t);\n\t}\n\n\tAddUserBadgesBatch(userID: string, newBadges: string[], batch: firestore.firestore.WriteBatch, reasonID: string) {\n\t\treturn this.afs\n\t\t\t.collection('Users')\n\t\t\t.doc(userID)\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((data) => {\n\t\t\t\t\tlet badgeMap = data.data().badges;\n\t\t\t\t\tif (!badgeMap) badgeMap = {};\n\n\t\t\t\t\tnewBadges.forEach((nb) => {\n\t\t\t\t\t\tif (badgeMap[nb]) badgeMap[nb] = badgeMap[nb] + 1;\n\t\t\t\t\t\telse badgeMap[nb] = 1;\n\t\t\t\t\t});\n\t\t\t\t\tif (newBadges.length != 0) {\n\t\t\t\t\t\tthis.log(LogType.BonusRewards, `Redeemed badges for event bonus rewards`, ReasonIdType.Event, userID, reasonID, batch);\n\t\t\t\t\t\treturn batch.update(data.ref, { badges: badgeMap });\n\t\t\t\t\t}\n\t\t\t\t\treturn batch;\n\t\t\t\t})\n\t\t\t);\n\t}\n\n\tGetAllBadges(timeOrder: Boolean, filter: firestore.firestore.OrderByDirection, lastBadgeID: firestore.firestore.DocumentSnapshot) {\n\t\tif (timeOrder) {\n\t\t\tif (lastBadgeID != null)\n\t\t\t\treturn this.afs.collection('Badges', (ref) => ref.orderBy('timestamp', filter).startAfter(lastBadgeID).limit(10)).snapshotChanges();\n\t\t\treturn this.afs.collection('Badges', (ref) => ref.orderBy('timestamp', filter).limit(10)).snapshotChanges();\n\t\t}\n\t\tif (lastBadgeID != null)\n\t\t\treturn this.afs.collection('Badges', (ref) => ref.orderBy('badgeName', filter).startAfter(lastBadgeID).limit(10)).snapshotChanges();\n\t\treturn this.afs.collection('Badges', (ref) => ref.orderBy('badgeName', filter).limit(10)).snapshotChanges();\n\t}\n\n\tGetEventRegisteredLimited(eventUid: String, lastParticipantID: firestore.firestore.DocumentSnapshot) {\n\t\treturn this.afs\n\t\t\t.collection('Registration')\n\t\t\t.doc(`${eventUid}`)\n\t\t\t.collection('EventRegistration', (ref) =>\n\t\t\t\tref.where('status', '==', REGISTRATION_STATUS.Attending).orderBy('timestamp', 'desc').startAfter(lastParticipantID).limit(20)\n\t\t\t)\n\t\t\t.get();\n\t}\n\n\tGetAllPatchRequests() {\n\t\treturn this.afs.collection('PatchRequests').get();\n\t}\n\n\tGetAllPatchRequestsLimted(lastPatchIdRequest: firestore.firestore.DocumentReference) {\n\t\tif (lastPatchIdRequest != null)\n\t\t\treturn this.afs\n\t\t\t\t.collection('PatchRequests', (ref) => ref.orderBy('UserID').startAfter(lastPatchIdRequest).limit(15))\n\t\t\t\t.get();\n\t\treturn this.afs\n\t\t\t.collection('PatchRequests', (ref) => ref.orderBy('UserID').limit(15))\n\t\t\t.get();\n\t}\n\n\tGetUserPendingPatchRequests(userID: string) {\n\t\treturn this.afs\n\t\t\t.collection('PatchRequests', (ref) => ref.where('UserID', '==', userID))\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((pending) => {\n\t\t\t\t\tif (pending.empty) throw 'pending.empty';\n\n\t\t\t\t\treturn pending.docs.map((doc) => {\n\t\t\t\t\t\treturn combineLatest([of(doc), this.GetPatch(doc.data().patchID), this.FetchPatchRequestImage(doc.id)]);\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t\tswitchMap((data) => {\n\t\t\t\t\treturn forkJoin(data);\n\t\t\t\t})\n\t\t\t);\n\t}\n\n\tGetAllPatches(timeOrder: Boolean, filter: firestore.firestore.OrderByDirection, lastPatchID: firestore.firestore.DocumentSnapshot) {\n\t\tif (timeOrder) {\n\t\t\tif (lastPatchID != null)\n\t\t\t\treturn this.afs.collection('Patches', (ref) => ref.orderBy('timestamp', filter).startAfter(lastPatchID).limit(10)).snapshotChanges();\n\t\t\treturn this.afs.collection('Patches', (ref) => ref.orderBy('timestamp', filter).limit(10)).snapshotChanges();\n\t\t}\n\t\tif (lastPatchID != null)\n\t\t\treturn this.afs.collection('Patches', (ref) => ref.orderBy('patchName', filter).startAfter(lastPatchID).limit(10)).snapshotChanges();\n\t\treturn this.afs.collection('Patches', (ref) => ref.orderBy('patchName', filter).limit(10)).snapshotChanges();\n\t}\n\n\tGetAllUsers(filter: firestore.firestore.OrderByDirection, LastUserID: firestore.firestore.DocumentSnapshot) {\n\t\tif (LastUserID != null)\n\t\t\treturn this.afs.collection('Users', (ref) => ref.orderBy('userID', filter).startAfter(LastUserID).limit(10)).snapshotChanges();\n\t\treturn this.afs.collection('Users', (ref) => ref.orderBy('userID', filter).limit(10)).snapshotChanges();\n\t}\n\n\tGetUsers() {\n\t\treturn this.afs.collection('Users').get();\n\t}\n\n\tGetUsersByRank(LastUserID: firestore.firestore.DocumentSnapshot) {\n\t\tif (LastUserID != null)\n\t\t\treturn this.afs\n\t\t\t\t.collection('Users', (ref) => ref.orderBy('xp', 'desc').startAfter(LastUserID).limit(15))\n\t\t\t\t.get();\n\t\treturn this.afs\n\t\t\t.collection('Users', (ref) => ref.orderBy('xp', 'desc').limit(20))\n\t\t\t.get();\n\t}\n\n\tGetUserBadges(badgesData: string[]) {\n\t\treturn of(Object.keys(badgesData)).pipe(\n\t\t\tmap((patches) => {\n\t\t\t\treturn patches.map((badge) => {\n\t\t\t\t\treturn combineLatest([this.GetBadge(badge), this.storage.ref('badgeImages/' + badge).getDownloadURL(), of(badgesData[badge])]);\n\t\t\t\t});\n\t\t\t}),\n\t\t\tswitchMap((data) => {\n\t\t\t\treturn forkJoin(data);\n\t\t\t})\n\t\t);\n\t}\n\n\t//try get from cache first then from server\n\tGetUserCallsignAndXP(userID: string) {\n\t\treturn this.afs\n\t\t\t.collection('Users')\n\t\t\t.doc(userID)\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((user) => {\n\t\t\t\t\tif (!user.exists) throwError('user doc not found');\n\t\t\t\t\telse {\n\t\t\t\t\t\tconst obj = { callsign: user.data().userID, xp: user.data().xp };\n\t\t\t\t\t\treturn obj;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t}\n\n\tGetUserPatches(patchesData: string[]) {\n\t\treturn of(Object.keys(patchesData)).pipe(\n\t\t\tmap((patches) => {\n\t\t\t\treturn patches.map((patch) => {\n\t\t\t\t\treturn combineLatest([this.GetPatch(patch), this.storage.ref('patchImages/' + patch).getDownloadURL(), of(patchesData[patch])]);\n\t\t\t\t});\n\t\t\t}),\n\t\t\tswitchMap((data) => {\n\t\t\t\treturn forkJoin(data);\n\t\t\t})\n\t\t);\n\t}\n\n\tWatchAllLocations() {\n\t\treturn this.afs.collection('Locations').stateChanges();\n\t}\n\n\tCreateLocation(obj) {\n\t\treturn this.afs.collection('Locations').add(obj);\n\t}\n\n\tDeleteLocation(locationID) {\n\t\treturn this.afs.collection('Locations').doc(locationID).delete();\n\t}\n\n\tGetAllLocations() {\n\t\treturn this.afs.collection('Locations').get();\n\t}\n\n\tGetEventName(logId: string) {\n\t\treturn this.GetEvent(logId).pipe(\n\t\t\tmap((data) => {\n\t\t\t\tif (data.exists) return data.data();\n\t\t\t\telse return { eventTitle: null };\n\t\t\t}),\n\t\t\tpluck('eventTitle')\n\t\t);\n\t}\n\n\tGetUserXP(userID: string) {\n\t\treturn this.afs\n\t\t\t.collection('Users')\n\t\t\t.doc(userID)\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((user) => {\n\t\t\t\t\tif (!user.exists) throwError('user doc not found');\n\t\t\t\t\telse {\n\t\t\t\t\t\treturn { xp: user.data().xp };\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tpluck('xp')\n\t\t\t);\n\t}\n\n\tlog(logType: LogType, logMessage: string, reasonIdType: ReasonIdType, userID: string, reasonID: string, batch: firestore.firestore.WriteBatch) {\n\t\tlet obj = {\n\t\t\tlogType: logType,\n\t\t\tlogMessage: logMessage,\n\t\t\treasonIdType: reasonIdType,\n\t\t\treasonID: reasonID,\n\t\t\ttimeStamp: Date.now(),\n\t\t};\n\t\t// console.log(obj)\n\n\t\treturn batch.set(this.afs.collection('UserLogs').doc(userID).collection('Logs').doc(this.afs.createId()).ref, obj);\n\t}\n\n\tFetchUserLogs(userID: string) {\n\t\treturn this.afs.collection('UserLogs').doc(userID).collection('Logs').get();\n\t}\n\n\tListParticipantsWithNoBonus(eventID: string) {\n\t\tthis.afs\n\t\t\t.collection('Participant')\n\t\t\t.doc(eventID)\n\t\t\t.collection('Lobby')\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((users) => {\n\t\t\t\t\treturn users.docs.filter((user) => {\n\t\t\t\t\t\treturn !user.data().bonusXPClaimed;\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t)\n\t\t\t.subscribe((users) => {\n\t\t\t\tusers.forEach((user) => {\n\t\t\t\t\tconsole.log(user.id);\n\t\t\t\t});\n\t\t\t\tconsole.log(users.length);\n\t\t\t});\n\t}\n\n\tListParticipantsWithBonus(eventID: string) {\n\t\tthis.afs\n\t\t\t.collection('Participant')\n\t\t\t.doc(eventID)\n\t\t\t.collection('Lobby')\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((users) => {\n\t\t\t\t\treturn users.docs.filter((user) => {\n\t\t\t\t\t\treturn user.data().bonusXPClaimed;\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t)\n\t\t\t.subscribe((users) => {\n\t\t\t\tusers.forEach((user) => {\n\t\t\t\t\tconsole.log(user.id);\n\t\t\t\t});\n\t\t\t\tconsole.log(users.length);\n\t\t\t\treturn users;\n\t\t\t});\n\t}\n\n\tListParticipantsBelowXp(eventID: string) {\n\t\tthis.afs\n\t\t\t.collection('Registration')\n\t\t\t.doc(eventID)\n\t\t\t.collection('EventRegistration', (ref) => ref.where('status', '==', REGISTRATION_STATUS.Attending))\n\t\t\t.get()\n\t\t\t.pipe(take(1))\n\t\t\t.subscribe((x) => {\n\t\t\t\tx.docs.forEach((doc) => {\n\t\t\t\t\tif (doc.data().xp < 85) console.log(doc.id);\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tGetEventRewards(eventId: string) {\n\t\treturn this.afs\n\t\t\t.collection('Event', (e) => e.where('eventID', '==', eventId))\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((e) => {\n\t\t\t\t\tif (!e.empty)\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tbadges: e.docs[0].data()['badges'],\n\t\t\t\t\t\t\tpatches: e.docs[0].data()['patches'],\n\t\t\t\t\t\t\txp: e.docs[0].data()['xp'],\n\t\t\t\t\t\t\tbonusXp: e.docs[0].data()['bonusXP'],\n\t\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t);\n\t}\n\n\tcalcExpectedXP() {\n\t\tforkJoin([this.afs.collection('Event').get(), this.afs.collection('Users').doc('1p6aGb9UCWYp8ewu1OSupB1rayD2').get()])\n\t\t\t.pipe(\n\t\t\t\tmap((allData) => {\n\t\t\t\t\tlet events: { [key: string]: any } = {};\n\t\t\t\t\tallData[0].docs.map((e) => {\n\t\t\t\t\t\tevents[e.id] = e.data();\n\t\t\t\t\t});\n\n\t\t\t\t\tlet users: { [key: string]: any } = {};\n\n\t\t\t\t\tusers[allData[1].id] = allData[1].data();\n\n\t\t\t\t\tObject.keys(users).forEach((userid) => {\n\t\t\t\t\t\tlet xpExpected = 0;\n\t\t\t\t\t\tthis.afs\n\t\t\t\t\t\t\t.collection('UserLogs')\n\t\t\t\t\t\t\t.doc(userid)\n\t\t\t\t\t\t\t.collection('Logs')\n\t\t\t\t\t\t\t.get()\n\t\t\t\t\t\t\t.pipe(\n\t\t\t\t\t\t\t\tmap((logs) => {\n\t\t\t\t\t\t\t\t\tlogs.forEach((log) => {\n\t\t\t\t\t\t\t\t\t\t// console.log(log.data())\n\t\t\t\t\t\t\t\t\t\tif (log.data().logType == LogType.XP) {\n\t\t\t\t\t\t\t\t\t\t\tconst rExp: RegExp = /([0-9]+) ([Xp])\\w+/g;\n\t\t\t\t\t\t\t\t\t\t\tlet XpIndex = rExp.exec(log.data().logMessage);\n\t\t\t\t\t\t\t\t\t\t\txpExpected += Number(XpIndex[1]);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (log.data().logType == LogType.Participant) {\n\t\t\t\t\t\t\t\t\t\t\tif (events[log.data().reasonID] != undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\t// console.log(`Adding ${eventXpMap[log.data().reasonID].xp} to player`)\n\t\t\t\t\t\t\t\t\t\t\t\txpExpected += Number(events[log.data().reasonID].xp);\n\t\t\t\t\t\t\t\t\t\t\t} else if (!String(log.data().logMessage).includes('team switched'))\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.warn('CANT FIND EVENT ID : ' + log.data().reasonID);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (log.data().logType == LogType.BonusRewards) {\n\t\t\t\t\t\t\t\t\t\t\tif (events[log.data().reasonID] != undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\t// console.log(`Adding ${eventXpMap[log.data().reasonID].bonusXp} to player`)\n\t\t\t\t\t\t\t\t\t\t\t\txpExpected += Number(events[log.data().reasonID].bonusXP);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (log.data().logType == LogType.RedeemXP) {\n\t\t\t\t\t\t\t\t\t\t\txpExpected += Number(log.data().logMessage.split(' ')[1]);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tconsole.log(`UserId: ${userid} EXPECTED: ${xpExpected}: ACTUAL: ${users[userid].xp}`);\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.subscribe();\n\n\t\t\t\t\t\t// console.log(data.users[userid])\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t)\n\t\t\t.subscribe();\n\t}\n\n\t// \t.pipe(\n\t// \t\tmap(result => {\n\t// \t\t\tlet xpExpected: number = 0;\n\n\t// \t\t\tresult.forEach(log => {\n\t// \t\t\t\t// console.log(log.data())\n\t// \t\t\t\tif (log.data().logType == LogType.XP) {\n\t// \t\t\t\t\tconst rExp: RegExp = /([0-9]+) ([Xp])\\w+/g\n\t// \t\t\t\t\tlet XpIndex = rExp.exec(log.data().logMessage)\n\t// \t\t\t\t\txpExpected += Number(XpIndex[1]);\n\t// \t\t\t\t}\n\t// \t\t\t\tif (log.data().logType == LogType.Participant) {\n\t// \t\t\t\t\tif (eventXpMap[log.data().reasonID] != undefined) {\n\t// \t\t\t\t\t\t// console.log(`Adding ${eventXpMap[log.data().reasonID].xp} to player`)\n\t// \t\t\t\t\t\txpExpected += eventXpMap[log.data().reasonID].xp;\n\t// \t\t\t\t\t}\n\t// \t\t\t\t\telse\n\t// \t\t\t\t\t\tif (!String(log.data().logMessage).includes(\"team switched\"))\n\t// \t\t\t\t\t\t\tconsole.warn(\"CANT FIND EVENT ID : \" + log.data().reasonID)\n\t// \t\t\t\t}\n\t// \t\t\t\tif (log.data().logType == LogType.BonusRewards) {\n\n\t// \t\t\t\t\tif (eventXpMap[log.data().reasonID] != undefined) {\n\t// \t\t\t\t\t\t// console.log(`Adding ${eventXpMap[log.data().reasonID].bonusXp} to player`)\n\t// \t\t\t\t\t\txpExpected += eventXpMap[log.data().reasonID].bonusXp;\n\t// \t\t\t\t\t}\n\n\t// \t\t\t\t}\n\t// \t\t\t\tif (log.data().logType == LogType.RedeemXP) {\n\t// \t\t\t\t\txpExpected += Number(log.data().logMessage.split(\" \")[1]);\n\t// \t\t\t\t}\n\t// \t\t\t})\n\n\t// \t\t\tconsole.log(`UserId: ${userId} EXPECTED: ${xpExpected}: ACTUAL: ${result[0].xp}`)\n\t// \t\t})\n\t// \t).pipe(take(1));\n\n\t// })\n\n\tListDuplicateBonusXPParticipants(eventID: string) {\n\t\tlet userlogArr = [];\n\n\t\tthis.afs\n\t\t\t.collection('Participant')\n\t\t\t.doc(eventID)\n\t\t\t.collection('Lobby')\n\t\t\t.get()\n\t\t\t.pipe(\n\t\t\t\tmap((users) => {\n\t\t\t\t\treturn users.docs.map((user) => {\n\t\t\t\t\t\treturn combineLatest([\n\t\t\t\t\t\t\tof(user),\n\t\t\t\t\t\t\tthis.afs\n\t\t\t\t\t\t\t\t.collection('UserLogs')\n\t\t\t\t\t\t\t\t.doc(user.id)\n\t\t\t\t\t\t\t\t.collection('Logs', (ref) => ref.where('reasonID', '==', eventID))\n\t\t\t\t\t\t\t\t.get(),\n\t\t\t\t\t\t]);\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t\tswitchMap((obs) => {\n\t\t\t\t\treturn forkJoin(obs);\n\t\t\t\t})\n\t\t\t)\n\t\t\t.subscribe((data) => {\n\t\t\t\tdata.map((e) => {\n\t\t\t\t\tconsole.log(e[1].docs.map((x) => x.data()));\n\t\t\t\t});\n\n\t\t\t\tthis.GetEventRewards(eventID).subscribe((rewards) => {\n\t\t\t\t\tdata.map((doc) => {\n\t\t\t\t\t\tlet arr = doc[1].docs.filter((data) => {\n\t\t\t\t\t\t\tlet firstWord = data.data().logMessage.split(' ')[0];\n\n\t\t\t\t\t\t\treturn firstWord == 'Participating';\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (arr.length > 1) {\n\t\t\t\t\t\t\tuserlogArr.push({ user: doc[0], logs: arr });\n\t\t\t\t\t\t\tconsole.log(`${doc[0].id} : ${arr.length}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tconsole.log(userlogArr);\n\t\t\t\t\t// let logMessage = \"A Bonus XP error has been detected , your account xp and logs have been modified in response\";\n\n\t\t\t\t\t// let batch1 = this.afs.firestore.batch();\n\t\t\t\t\t// let batch2 = this.afs.firestore.batch();\n\t\t\t\t\t// let batchArr = [batch1, batch2]\n\t\t\t\t\t// //create as many batches as you need for the size of the event\n\t\t\t\t\t// let chunkArr = this.chunkArray(userlogArr, 2)\n\n\t\t\t\t\t// console.log(chunkArr);\n\n\t\t\t\t\t// batchArr.forEach(batch => {\n\t\t\t\t\t// \tchunkArr[0].forEach(userLogPair => {\n\n\t\t\t\t\t// \t\tlet redeemCount = userLogPair.logs.filter(doc => {\n\t\t\t\t\t// \t\t\treturn doc.data().logMessage == \"Claimed Bonus Rewards For Event\"\n\t\t\t\t\t// \t\t}).length\n\n\t\t\t\t\t// \t\tif (redeemCount > 1) {\n\t\t\t\t\t// \t\t\tconsole.log(\"Double\")\n\t\t\t\t\t// \t\t\tlet xpToRemove = (rewards.bonusXp * redeemCount) - rewards.bonusXp;\n\n\t\t\t\t\t// \t\t\tbatch.update(this.afs.collection('Users').doc(userLogPair.user.id).ref, { xp: firestore.firestore.FieldValue.increment(Number(-1 * xpToRemove)) })\n\n\t\t\t\t\t// \t\t\tthis.log(LogType.XP, logMessage, ReasonIdType.User, userLogPair.user.id, \"V2Kz0fgrEBfOPxfaWVymE9XTyVU2\", batch)\n\t\t\t\t\t// \t\t\tuserLogPair.logs.forEach(doc => {\n\t\t\t\t\t// \t\t\t\tbatch.delete(doc.ref)\n\t\t\t\t\t// \t\t\t});\n\t\t\t\t\t// \t\t}\n\n\t\t\t\t\t// \t});\n\t\t\t\t\t// });\n\n\t\t\t\t\t// console.log(batchArr)\n\t\t\t\t\t// batch1.commit().then(() => {\n\t\t\t\t\t// \tbatch2.commit().then(\n\t\t\t\t\t// \t\t() => {\n\t\t\t\t\t// \t\t\tconsole.log(\"I hope you know what your doing \")\n\t\t\t\t\t// \t\t}\n\t\t\t\t\t// \t).catch(err => {\n\t\t\t\t\t// \t\tconsole.log(err)\n\t\t\t\t\t// \t})\n\t\t\t\t\t// }).catch(err => {\n\t\t\t\t\t// \tconsole.log(err)\n\t\t\t\t\t// })\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\trewriteRegistrantList(allUsers: Set, participants: any[], eventID: string) {\n\t\tconsole.log(participants);\n\t\tlet userSet = new Set();\n\t\tparticipants.forEach((participant) => {\n\t\t\tlet obj: registrationData = {\n\t\t\t\tcallsign: allUsers[participant.id].userID,\n\t\t\t\txp: allUsers[participant.id].xp,\n\t\t\t\tstatus: REGISTRATION_STATUS.Attending,\n\t\t\t\tteam: participant.team,\n\t\t\t\ttimestamp: participant.timestamp,\n\t\t\t};\n\t\t\tuserSet[participant.id] = obj;\n\t\t});\n\n\t\tconsole.log(userSet);\n\t\tlet batch = this.afs.firestore.batch();\n\t\tlet registryBatch = this.afs.firestore.batch();\n\n\t\tfor (let key of [...Object.keys(userSet)]) {\n\t\t\tlet reference = {};\n\t\t\treference[`${eventID}`] = this.afs.collection('Registration').doc(eventID).collection('EventRegistration').doc(key).ref;\n\t\t\tregistryBatch.set(this.afs.collection('UserRegistrations').doc(key).ref, reference, { merge: true });\n\t\t\tbatch.update(this.afs.collection('Registration').doc(eventID).collection('EventRegistration').doc(key).ref, userSet[key]);\n\t\t}\n\n\t\t// console.log(batch);\n\t\t// console.log(registryBatch)\n\t\t// batch.commit().then(\n\t\t// \t() => {\n\t\t// \t\tconsole.log(\"Registration Updated\")\n\t\t// \t\tregistryBatch.commit().then(\n\t\t// \t\t\t() => {\n\t\t// \t\t\t\tconsole.log(\"UserRegistration Updated\")\n\t\t// \t\t\t}\n\t\t// \t\t)\n\t\t// \t}\n\t\t// ).catch(err => {\n\t\t// \tconsole.log(err)\n\t\t// \tconsole.log(\"Epic Fail\")\n\t\t// })\n\t}\n\n\tchunkArray(arr, n) {\n\t\tlet chunkLength = Math.max(arr.length / n, 1);\n\t\tlet chunks = [];\n\t\tfor (var i = 0; i < n; i++) {\n\t\t\tif (chunkLength * (i + 1) <= arr.length) chunks.push(arr.slice(chunkLength * i, chunkLength * (i + 1)));\n\t\t}\n\t\treturn chunks;\n\t}\n\n\t//USER BOOKING\n\n\tBookUserForEvent(userID: string, eventID: string, rentals: Array, event: boolean) {\n\t\tconst bookingRef = this.afs.collection('Booking').doc(`${eventID}`);\n\t\treturn bookingRef.set({ add: true }).then(() => {\n\t\t\tbookingRef.collection('UserBooking').doc(`${userID}`).set({ eventBooked: event, rentals: rentals }, { merge: true });\n\t\t});\n\t}\n}\n","import { Component, Inject, Input, Output, EventEmitter, OnInit, OnDestroy, AfterViewInit } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { FormControl, FormGroup, AbstractControl, FormGroupDirective, NgForm, Validators, ValidationErrors } from '@angular/forms';\r\nimport { ErrorStateMatcher } from '@angular/material/core';\r\nimport { AuthService } from '../services/auth.service';\r\nimport { DatabaseService, REGISTRATION_STATUS } from '../services/database.service';\r\nimport { interval, Observable, of, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport firebase from 'firebase/app';\r\nimport { SnippetService } from '../services/snippet.service';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { OnChange } from 'property-watch-decorator';\r\nimport axios from 'axios';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\nexport interface DialogData {\r\n\tname: string;\r\n}\r\n\r\n@Component({\r\n\tselector: 'app-dialog',\r\n\ttemplateUrl: './dialog.component.html',\r\n\tstyleUrls: ['./dialog.component.scss'],\r\n})\r\nexport class DialogComponent {\r\n\t@Input() public dialogName: string = 'dialog';\r\n\t@Input() public dataToPass: any;\r\n\t@Input() public eventID: String;\r\n\t@Output() public dialogRef: EventEmitter;\r\n\r\n\tconstructor(public dialog: MatDialog) {\r\n\t\tthis.dialogRef = new EventEmitter(false);\r\n\t}\r\n\r\n\topenLoginDialog(): void {\r\n\t\tthis.dialogRef.emit(\r\n\t\t\tthis.dialog\r\n\t\t\t\t.open(LoginComponent, {\r\n\t\t\t\t\twidth: '400px',\r\n\t\t\t\t\tdata: { name: this.dialogName },\r\n\t\t\t\t})\r\n\t\t\t\t.beforeClosed()\r\n\t\t);\r\n\r\n\t\t// this.dialog.open(EmailReminderDialog)\r\n\t}\r\n\r\n\topenEventDialog(): void {\r\n\t\tthis.dialogRef.emit(\r\n\t\t\tthis.dialog\r\n\t\t\t\t.open(EventDialogComponent, {\r\n\t\t\t\t\theight: '500px',\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\tname: this.dialogName,\r\n\t\t\t\t\t\tloadedEvent: this.dataToPass,\r\n\t\t\t\t\t\teventID: this.eventID,\r\n\t\t\t\t\t},\r\n\t\t\t\t})\r\n\t\t\t\t.beforeClosed()\r\n\t\t);\r\n\t}\r\n\r\n\topenRegistrationDialog(): void {\r\n\t\tthis.dialogRef.emit(\r\n\t\t\tthis.dialog\r\n\t\t\t\t.open(UserRegistrationDialogComponent, {\r\n\t\t\t\t\twidth: '80%',\r\n\t\t\t\t\theight: '95vh',\r\n\r\n\t\t\t\t\tdata: {},\r\n\t\t\t\t\tdisableClose: true,\r\n\t\t\t\t})\r\n\t\t\t\t.beforeClosed()\r\n\t\t);\r\n\r\n\t\t// this.dialog.open(EmailReminderDialog)\r\n\t}\r\n\r\n\topenPasswordResetDialog() {\r\n\t\tthis.dialogRef.emit(\r\n\t\t\tthis.dialog\r\n\t\t\t\t.open(PasswordResetDialog, {\r\n\t\t\t\t\twidth: '400px',\r\n\t\t\t\t\tdata: {},\r\n\t\t\t\t})\r\n\t\t\t\t.beforeClosed()\r\n\t\t);\r\n\t}\r\n\topenBookingDialog() {\r\n\t\tthis.dialogRef.emit(\r\n\t\t\tthis.dialog\r\n\t\t\t\t.open(BookingDialogComponent, {\r\n\t\t\t\t\twidth: '600px',\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\tname: this.dialogName,\r\n\t\t\t\t\t\tloadedEvent: this.dataToPass,\r\n\t\t\t\t\t\teventID: this.eventID,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tpanelClass: 'booking-panel',\r\n\t\t\t\t})\r\n\t\t\t\t.beforeClosed()\r\n\t\t);\r\n\t}\r\n\topenRefundDialog() {\r\n\t\tthis.dialogRef.emit(\r\n\t\t\tthis.dialog\r\n\t\t\t\t.open(RefundNotificationComponent, {\r\n\t\t\t\t\twidth: '600px',\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\tname: this.dialogName,\r\n\t\t\t\t\t},\r\n\t\t\t\t})\r\n\t\t\t\t.beforeClosed()\r\n\t\t);\r\n\t}\r\n}\r\n\r\n/** Error when invalid control is dirty, touched, or submitted. */\r\nexport class MyErrorStateMatcher implements ErrorStateMatcher {\r\n\tisErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n\t\tconst isSubmitted = form && form.submitted;\r\n\t\treturn !!(control && control.invalid && (control.dirty || control.touched || isSubmitted));\r\n\t}\r\n}\r\n\r\n@Component({\r\n\tselector: 'login-dialog',\r\n\ttemplateUrl: 'login-dialog.html',\r\n})\r\nexport class LoginComponent implements AfterViewInit {\r\n\thide = true;\r\n\r\n\tconstructor(\r\n\t\tpublic authService: AuthService,\r\n\t\tpublic dialogRef: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: DialogData,\r\n\t\tprivate snippet: SnippetService,\r\n\t\tprivate db: DatabaseService,\r\n\t\tpublic platform: Platform\r\n\t) {}\r\n\r\n\tviewInit = false;\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.viewInit = true;\r\n\r\n\t\tthis.emailFormControl.valueChanges.subscribe((value) => {\r\n\t\t\tthis.EmailTrimValidation();\r\n\t\t});\r\n\t}\r\n\r\n\tpreviousEmail: string = '';\r\n\tEmailTrimValidation() {\r\n\t\tif (this.viewInit) {\r\n\t\t\tlet nonTrimmed: string = this.emailFormControl.value;\r\n\r\n\t\t\tif (nonTrimmed != null && this.previousEmail.localeCompare(nonTrimmed) != 0) {\r\n\t\t\t\tthis.previousEmail = this.emailFormControl.value;\r\n\t\t\t\tthis.emailFormControl.setValue(nonTrimmed.trim());\r\n\r\n\t\t\t\tthis.emailFormControl.updateValueAndValidity();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\temailFormControl = new FormControl(null, {\r\n\t\tvalidators: [Validators.required, Validators.email],\r\n\t});\r\n\r\n\tpasswordFormControl = new FormControl('', [Validators.required]);\r\n\r\n\tgetAuthService() {\r\n\t\treturn this.authService.user != null;\r\n\t}\r\n\r\n\tmatcher = new MyErrorStateMatcher();\r\n\r\n\tonNoClick(): void {\r\n\t\tthis.dialogRef.close();\r\n\t}\r\n\r\n\tonGoogleClick() {\r\n\t\tthis.authService.loginWithGoogle().then();\r\n\t}\r\n\r\n\tonGoogleClickIOS() {\r\n\t\tthis.authService.onGoogleClickIOS();\r\n\t}\r\n\r\n\tonLogin() {\r\n\t\tthis.authService\r\n\t\t\t.login(this.emailFormControl.value, this.passwordFormControl.value)\r\n\t\t\t.then(\r\n\t\t\t\t(success) => {\r\n\t\t\t\t\tthis.authService.afAuth.currentUser.then((user) => {\r\n\t\t\t\t\t\tif (user.emailVerified) {\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\tthis.db.RedeemXP(user.uid, user.email.toLowerCase());\r\n\t\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\t\tconsole.log('no Xp to redeem');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tfirebase.analytics().logEvent('login', {\r\n\t\t\t\t\t\t\t\tmethod: 'user details',\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tthis.snippet.openSuccessSnackBar('Welcome back');\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.snippet.openErrorSnackBar('Please verify you email address before login');\r\n\t\t\t\t\t\t\tthis.authService.logout();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.dialogRef.close();\r\n\t\t\t\t},\r\n\t\t\t\t(err) => {\r\n\t\t\t\t\tthis.snippet.openErrorSnackBar(err);\r\n\t\t\t\t\tthis.passwordFormControl.reset();\r\n\t\t\t\t}\r\n\t\t\t)\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tthis.snippet.openErrorSnackBar(err);\r\n\t\t\t\tthis.passwordFormControl.reset();\r\n\t\t\t});\r\n\t}\r\n}\r\n\r\n@Component({\r\n\tselector: 'event-registration-dialog',\r\n\ttemplateUrl: './event-registration-dialog.html',\r\n})\r\nexport class EventDialogComponent implements OnDestroy, OnInit {\r\n\teventRegSub: Subscription;\r\n\tLoadingTeams: boolean = true;\r\n\r\n\tteamsCountIndices = this.injected.loadedEvent.eventData.eventTeams.map((a) => (a = 0));\r\n\tconstructor(\r\n\t\tpublic dialogRef: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) public injected: any,\r\n\t\tprivate db: DatabaseService,\r\n\t\tprivate auth: AuthService,\r\n\t\tprivate snippet: SnippetService\r\n\t) {}\r\n\r\n\tngOnInit() {\r\n\t\tthis.LoadingTeams = true;\r\n\t\tthis.injected.loadedEvent.totalEventParticipants.forEach((participant) => {\r\n\t\t\tthis.teamsCountIndices[participant.team]++;\r\n\t\t});\r\n\t\tthis.LoadingTeams = false;\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tif (this.eventRegSub) this.eventRegSub.unsubscribe();\r\n\t}\r\n\r\n\tTeamIsFull(teamIndex: number): boolean {\r\n\t\tif (this.teamsCountIndices[teamIndex] >= this.injected.loadedEvent.eventData.eventTeamsMaxPlayers[teamIndex]) return true;\r\n\t\treturn false;\r\n\t}\r\n\r\n\tSwitchUserTeam(index: number) {\r\n\t\tif (this.TeamIsFull(index)) return;\r\n\r\n\t\tif (this.registrationSub != null) {\r\n\t\t\tthis.registrationSub.unsubscribe();\r\n\t\t}\r\n\r\n\t\tthis.registrationSub = this.auth.user.subscribe((user) => {\r\n\t\t\tlet switchSub = this.db\r\n\t\t\t\t.SwitchUsersTeams(this.injected.eventID, [user.uid], index, user.uid, this.injected.loadedEvent.eventData.eventTitle)\r\n\t\t\t\t.subscribe(\r\n\t\t\t\t\t(batch) => {\r\n\t\t\t\t\t\tthis.registrationSub.add(switchSub);\r\n\t\t\t\t\t\tthis.snippet.openSuccessSnackBar('Team Switched successfully');\r\n\t\t\t\t\t\tthis.registrationSub.unsubscribe();\r\n\t\t\t\t\t\tthis.dialogRef.close();\r\n\t\t\t\t\t},\r\n\t\t\t\t\t(err) => {\r\n\t\t\t\t\t\tconsole.error(err);\r\n\t\t\t\t\t\tthis.registrationSub.add(switchSub);\r\n\t\t\t\t\t\tthis.snippet.openErrorSnackBar('Error switching team contact Admin if this persists');\r\n\t\t\t\t\t\tthis.registrationSub.unsubscribe();\r\n\t\t\t\t\t\tthis.dialogRef.close();\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\tregistrationSub: Subscription;\r\n\tRegisterForEvent(index: number) {\r\n\t\tif (this.TeamIsFull(index)) return;\r\n\r\n\t\tif (this.registrationSub != null) {\r\n\t\t\tthis.registrationSub.unsubscribe();\r\n\t\t}\r\n\r\n\t\tthis.registrationSub = this.auth.user.subscribe(\r\n\t\t\t(user) => {\r\n\t\t\t\tthis.eventRegSub = this.db.GetUserRegistrationStatus(this.injected.eventID, user.uid).subscribe(\r\n\t\t\t\t\t(data) => {\r\n\t\t\t\t\t\tthis.registrationSub.add(this.eventRegSub);\r\n\r\n\t\t\t\t\t\tif (data.payload.exists && Object.entries(data.payload.data())['team'] != null) {\r\n\t\t\t\t\t\t\tthis.snippet.openErrorSnackBar('Error Previously Registered with team contact Admin if this persists');\r\n\t\t\t\t\t\t\tthis.registrationSub.unsubscribe();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t//2 is not registered for the event\r\n\t\t\t\t\t\t\tthis.registrationSub.add(\r\n\t\t\t\t\t\t\t\tthis.db\r\n\t\t\t\t\t\t\t\t\t.SetUserRegistrationStatus(this.injected.eventID, user.uid, REGISTRATION_STATUS.Attending, this.injected.loadedEvent, {\r\n\t\t\t\t\t\t\t\t\t\tteam: index,\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t.subscribe(\r\n\t\t\t\t\t\t\t\t\t\t(statusOut) => {\r\n\t\t\t\t\t\t\t\t\t\t\tif (statusOut == REGISTRATION_STATUS.InQueue) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.snippet.openSuccessSnackBar('Joined Event Queue');\r\n\t\t\t\t\t\t\t\t\t\t\t\tfirebase.analytics().logEvent('register_event', {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tevent_registration: 'true',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tevent_title: this.injected.loadedEvent.eventData.eventTitle,\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t} else if (statusOut == REGISTRATION_STATUS.Attending) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tfirebase.analytics().logEvent('register_event', {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tevent_registration: 'true',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tevent_title: this.injected.loadedEvent.eventData.eventTitle,\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.snippet.openSuccessSnackBar('Registered');\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tthis.registrationSub.unsubscribe();\r\n\t\t\t\t\t\t\t\t\t\t\tthis.dialogRef.close();\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t(err) => {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.snippet.openErrorSnackBar(err.message);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tthis.dialogRef.close();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t(err: any) => {\r\n\t\t\t\t\t\tthrow err;\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t\t(err: any) => {\r\n\t\t\t\tthis.snippet.openErrorSnackBar('An Error occured registering for event');\r\n\t\t\t\t// console.log(err);\r\n\t\t\t\tthis.registrationSub.unsubscribe();\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n}\r\n\r\n@Component({\r\n\tselector: 'userRegistration-dialog',\r\n\ttemplateUrl: './registration-dialog.html',\r\n})\r\nexport class UserRegistrationDialogComponent implements OnInit {\r\n\tNotUnique = false;\r\n\thide = true;\r\n\tpasswordMismatch = false;\r\n\tuserCreated = false;\r\n\tuser: any = null;\r\n\r\n\tconstructor(\r\n\t\tpublic authService: AuthService,\r\n\t\tprivate db: DatabaseService,\r\n\t\tpublic dialogRef: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: DialogData,\r\n\t\tprivate snippet: SnippetService\r\n\t) {}\r\n\r\n\tClearWhiteSpace(control: AbstractControl) {\r\n\t\tcontrol.setValue(control.value.trim());\r\n\t}\r\n\r\n\tngOnInit() {}\r\n\r\n\tgetAuthService() {\r\n\t\treturn this.authService.user != null;\r\n\t}\r\n\r\n\tonGoogleClick() {\r\n\t\tthis.authService\r\n\t\t\t.loginWithGoogle()\r\n\t\t\t.then()\r\n\t\t\t.catch((err) => console.error(err));\r\n\t}\r\n\r\n\tasync uploadProfilePicture(imageInput: any) {\r\n\t\tconst file: File = imageInput.files[0];\r\n\t\tconst reader = new FileReader();\r\n\r\n\t\t// this.profileUrl = this.db.profileUpload;\r\n\t\treader.addEventListener('load', (event: any) => {\r\n\t\t\tlet registrationSub = this.authService.user.subscribe(\r\n\t\t\t\t(user) => {\r\n\t\t\t\t\tlet uploadSub = this.db\r\n\t\t\t\t\t\t.uploadFile(file, user.uid)\r\n\t\t\t\t\t\t.then((uploadPercent) => {\r\n\t\t\t\t\t\t\tthis.snippet.openSuccessSnackBar('image uploaded');\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch(() => {\r\n\t\t\t\t\t\t\tthis.snippet.openErrorSnackBar('image upload failed!');\r\n\t\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t(err: any) => {\r\n\t\t\t\t\tregistrationSub.unsubscribe();\r\n\t\t\t\t},\r\n\t\t\t\t() => {\r\n\t\t\t\t\tregistrationSub.unsubscribe();\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\tregisterUser() {\r\n\t\tif (this.regForm.valid) {\r\n\t\t\tthis.authService.afAuth\r\n\t\t\t\t.createUserWithEmailAndPassword(String(this.regForm.controls.email.value).trim(), this.regForm.controls.password.value)\r\n\t\t\t\t.then((userDoc) => {\r\n\t\t\t\t\tthis.user = userDoc.user;\r\n\r\n\t\t\t\t\tlet obj = {\r\n\t\t\t\t\t\tadmin: false,\r\n\t\t\t\t\t\tmarshal: false,\r\n\t\t\t\t\t\tuserID: String(this.regForm.value.username).trim(),\r\n\t\t\t\t\t\tfullname: String(this.regForm.value.fullname).trim(),\r\n\t\t\t\t\t\tmatchesPlayed: 0,\r\n\t\t\t\t\t\tphoneNumber: this.regForm.value.phone,\r\n\t\t\t\t\t\tserviceTime: firebase.firestore.Timestamp.fromDate(new Date()),\r\n\t\t\t\t\t\tsocial: this.regForm.value.social,\r\n\t\t\t\t\t\txp: 0,\r\n\t\t\t\t\t\tbadges: {},\r\n\t\t\t\t\t\tpatches: {},\r\n\t\t\t\t\t\treferral: this.regForm.value.referral,\r\n\t\t\t\t\t\tusedRefferal: false,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tthis.db\r\n\t\t\t\t\t\t.CreateNewUserDocument(obj, userDoc.user.uid)\r\n\t\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\tthis.db.RedeemXP(userDoc.user.uid, userDoc.user.email.toLowerCase());\r\n\t\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\t\tif (error == 1) this.db.RedeemXPError(userDoc.user.email.toLowerCase());\r\n\t\t\t\t\t\t\t\telse console.log('no Xp to redeem');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tthis.userCreated = true;\r\n\t\t\t\t\t\t\tthis.closeDialog();\r\n\t\t\t\t\t\t\tthis.authService.logout();\r\n\t\t\t\t\t\t\tfirebase.analytics().logEvent('sign_up', {\r\n\t\t\t\t\t\t\t\tmethod: 'user details',\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tthis.snippet.openSuccessSnackBar('Email verification sent please check your spam and junk folders');\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch((err) => {\r\n\t\t\t\t\t\t\tthrow err;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\tuserDoc.user.sendEmailVerification();\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tif (err.code == 'auth/email-already-in-use') {\r\n\t\t\t\t\t\tthis.snippet.openErrorSnackBar('Email already in use');\r\n\t\t\t\t\t\tthis.regForm.controls.email.setErrors({\r\n\t\t\t\t\t\t\tsaveError: err.message,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.snippet.openErrorSnackBar('An Error occured during registration');\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.snippet.openErrorSnackBar('Registration form invalid');\r\n\t\t}\r\n\t}\r\n\r\n\tcloseDialog() {\r\n\t\tthis.dialogRef.close();\r\n\t}\r\n\r\n\tusernameValidation(control: AbstractControl): Promise | Observable {\r\n\t\treturn this.db.CheckIfUserExists(control.value).pipe(\r\n\t\t\tmap((data) => {\r\n\t\t\t\tif (!data.empty) {\r\n\t\t\t\t\tthis.NotUnique = true;\r\n\t\t\t\t\treturn of({ NotUnique: 'Username is not unique' });\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.NotUnique = false;\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tpreviousEmail: string = '';\r\n\tEmailTrimValidation(control: AbstractControl): Promise | Observable {\r\n\t\tlet nonTrimmed: string = this.regForm.controls.email.value;\r\n\t\tif (nonTrimmed != null && this.previousEmail.localeCompare(nonTrimmed) != 0) {\r\n\t\t\tthis.previousEmail = this.regForm.controls.email.value;\r\n\t\t\tthis.regForm.controls.email.setValue(nonTrimmed.trim());\r\n\t\t}\r\n\t\treturn of({});\r\n\t}\r\n\r\n\tMustMatch(control: AbstractControl): Promise | Observable {\r\n\t\tif (this.regForm != null) {\r\n\t\t\tif (this.regForm.controls.confirmPassword.value != this.regForm.controls.password.value) {\r\n\t\t\t\tthis.passwordMismatch = true;\r\n\t\t\t\treturn of({ passwordMismatch: true });\r\n\t\t\t}\r\n\t\t\tthis.passwordMismatch = false;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tregForm = new FormGroup({\r\n\t\temail: new FormControl(null, {\r\n\t\t\tupdateOn: 'change',\r\n\t\t\tvalidators: [Validators.email, Validators.required],\r\n\t\t\tasyncValidators: this.EmailTrimValidation.bind(this),\r\n\t\t}),\r\n\t\tpassword: new FormControl(null, {\r\n\t\t\tupdateOn: 'change',\r\n\t\t\tvalidators: [Validators.pattern(new RegExp('^(?=.*\\\\d).{8,20}$')), Validators.required],\r\n\t\t}),\r\n\t\tconfirmPassword: new FormControl(null, {\r\n\t\t\tvalidators: [this.MustMatch.bind(this), Validators.required],\r\n\t\t}),\r\n\t\tusername: new FormControl(null, {\r\n\t\t\tupdateOn: 'change',\r\n\t\t\tvalidators: [Validators.pattern('^\\\\s*[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*\\\\s*$'), Validators.required, Validators.maxLength(24)],\r\n\t\t\tasyncValidators: [this.usernameValidation.bind(this)],\r\n\t\t}),\r\n\t\tfullname: new FormControl(null, {\r\n\t\t\tupdateOn: 'change',\r\n\t\t\tvalidators: [Validators.pattern(\"^\\\\s*[a-zA-Z]+(([',. -][a-zA-Z ])?[a-zA-Z]*)*\\\\s*$\"), Validators.required, Validators.maxLength(30)],\r\n\t\t}),\r\n\t\tphone: new FormControl(null, {\r\n\t\t\tupdateOn: 'change',\r\n\t\t\tvalidators: [\r\n\t\t\t\tValidators.pattern('^\\\\d{3}(-| )*\\\\d{3}(-| )*\\\\d{4}$|^\\\\+\\\\d{4}(-| )*\\\\d{3}(-| )*\\\\d{4}$|^\\\\+\\\\d{2}(-| )*\\\\d{2}(-| )*\\\\d{3}(-| )*\\\\d{4}$'),\r\n\t\t\t],\r\n\t\t}),\r\n\t\tsocial: new FormControl(null, {\r\n\t\t\tupdateOn: 'change',\r\n\t\t\tvalidators: Validators.max(35),\r\n\t\t}),\r\n\t\treferral: new FormControl(null, {\r\n\t\t\tupdateOn: 'change',\r\n\t\t\tvalidators: [Validators.email],\r\n\t\t}),\r\n\t});\r\n}\r\n\r\n@Component({\r\n\tselector: 'password-reset-dialog',\r\n\ttemplateUrl: './password-reset-dialog.html',\r\n})\r\nexport class PasswordResetDialog {\r\n\tconstructor(\r\n\t\tprivate db: DatabaseService,\r\n\t\tpublic dialogRef: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any,\r\n\t\tprivate auth: AuthService,\r\n\t\tprivate snippet: SnippetService\r\n\t) {}\r\n\r\n\tpasswordResetForm = new FormGroup({\r\n\t\tuserEmail: new FormControl(null, {\r\n\t\t\tvalidators: [Validators.email, Validators.required],\r\n\t\t\tupdateOn: 'change',\r\n\t\t}),\r\n\t});\r\n\r\n\tresetPassword() {\r\n\t\tif (this.passwordResetForm.valid) {\r\n\t\t\tthis.auth.sendPasswordResetEmail(this.passwordResetForm.controls.userEmail.value).then(\r\n\t\t\t\t() => {\r\n\t\t\t\t\tthis.dialogRef.close();\r\n\r\n\t\t\t\t\tthis.snippet.openSuccessSnackBar('Password Reset sent, please be patient');\r\n\t\t\t\t},\r\n\t\t\t\t(err) => {\r\n\t\t\t\t\tthis.dialogRef.close();\r\n\t\t\t\t\tthis.snippet.openErrorSnackBar('Error Previously Registered with team Consult Admin if this persists');\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@Component({\r\n\tselector: 'email-reminder-dialog',\r\n\ttemplateUrl: './email-reminder-dialog.html',\r\n})\r\nexport class EmailReminderDialog {}\r\n\r\n@Component({\r\n\tselector: 'booking-dialog',\r\n\ttemplateUrl: './booking-dialog.html',\r\n})\r\nexport class BookingDialogComponent implements OnInit {\r\n\t@Input() public dataToPass: any;\r\n\tselectedRentals: any;\r\n\tpaymentStarted: boolean;\r\n\r\n\tconstructor(\r\n\t\tpublic dialogRef: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) public injected: any,\r\n\t\tprivate db: DatabaseService,\r\n\t\tprivate auth: AuthService,\r\n\t\tprivate snippet: SnippetService,\r\n\t\tprivate snackBar: MatSnackBar\r\n\t) {}\r\n\t//@ts-ignore\r\n\r\n\teventCost: string;\r\n\teventData: any;\r\n\r\n\t@OnChange('onTotalChange')\r\n\ttotalCost: number;\r\n\r\n\tbookEvent: boolean;\r\n\twarning: string;\r\n\tinline: any;\r\n\tselectionCost: number;\r\n\tbookingCost: number;\r\n\r\n\thasMinXP: boolean = false;\r\n\tuserXP: number = 0;\r\n\r\n\ttickDelay: Observable = interval(1000);\r\n\ttickSub: Subscription;\r\n\tbookingHours: string = '0';\r\n\tbookingMinutes: string = '00';\r\n\tbookingSeconds: string = '00';\r\n\r\n\tbookingExpired: boolean = false;\r\n\r\n\tRestartTimer() {\r\n\t\tthis.tickSub = this.tickDelay.subscribe((time) => {\r\n\t\t\tconst epochNow = new Date().getTime() / 1000;\r\n\r\n\t\t\tlet totalSeconds: any = (Number(this.eventData.bookingCutoffTime?.seconds || 0) - Number(epochNow)).toFixed(0);\r\n\t\t\tlet hours,\r\n\t\t\t\tminutes,\r\n\t\t\t\tseconds = 0;\r\n\t\t\thours = Math.floor(totalSeconds / 3600);\r\n\t\t\ttotalSeconds %= 3600;\r\n\t\t\tminutes = Math.floor(totalSeconds / 60);\r\n\t\t\tseconds = totalSeconds % 60;\r\n\r\n\t\t\tif (hours + minutes + seconds <= 0) {\r\n\t\t\t\thours = 0;\r\n\t\t\t\tminutes = 0;\r\n\t\t\t\tseconds = 0;\r\n\t\t\t\tthis.bookingExpired = true;\r\n\t\t\t}\r\n\t\t\tthis.bookingHours = String(hours);\r\n\t\t\tthis.bookingMinutes = minutes <= 9 ? '0'.concat(String(minutes)) : String(minutes);\r\n\t\t\tthis.bookingSeconds = seconds <= 9 ? '0'.concat(String(seconds)) : String(seconds);\r\n\t\t});\r\n\t}\r\n\r\n\tonTotalChange(value) {\r\n\t\tconsole.log(value);\r\n\t}\r\n\r\n\topenSnackBar(message: string) {\r\n\t\tthis.snackBar.open(message, undefined, {\r\n\t\t\tduration: 3000,\r\n\t\t});\r\n\t}\r\n\r\n\ttoCurrency(value) {\r\n\t\treturn value.toLocaleString('en-ZA', {\r\n\t\t\tstyle: 'currency',\r\n\t\t\tcurrency: 'ZAR',\r\n\t\t});\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.eventData = this.injected.loadedEvent.eventData;\r\n\t\tthis.eventCost = this.eventData.eventCost;\r\n\t\tthis.totalCost = 0;\r\n\t\tthis.bookEvent = false;\r\n\t\tthis.RestartTimer();\r\n\t\tthis.db.GetUserXP(this.auth.user.value.uid).subscribe((xp) => {\r\n\t\t\tthis.userXP = xp;\r\n\t\t\tif (!this.eventData.minEventBookingXP) {\r\n\t\t\t\tthis.hasMinXP = true;\r\n\t\t\t} else {\r\n\t\t\t\tthis.hasMinXP = this.userXP >= this.eventData.minEventBookingXP;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\thandlePayment() {\r\n\t\tthis.paymentStarted = true;\r\n\t\tlet Dialog = this;\r\n\t\tDialog.warning = '';\r\n\t\taxios\r\n\t\t\t.post('https://us-central1-cofairsoft-a1d63.cloudfunctions.net/handlePayment', {\r\n\t\t\t\tdata: {\r\n\t\t\t\t\teventID: Dialog.injected.eventID,\r\n\t\t\t\t\teventBooked: Dialog.bookEvent,\r\n\t\t\t\t\trentals: Dialog.selectedRentals?.map((rental) => rental.description) || [],\r\n\t\t\t\t\tuserID: Dialog.auth.user.value.uid,\r\n\t\t\t\t},\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\t//@ts-ignore\r\n\t\t\t\twindow.open(data?.data.checkoutData.redirectUrl);\r\n\t\t\t})\r\n\t\t\t.catch((e) => {\r\n\t\t\t\tconsole.error(e);\r\n\t\t\t});\r\n\t}\r\n\r\n\tcalcTotal() {\r\n\t\tthis.totalCost = (this.bookEvent ? this.bookingCost || 0 : 0) + (this.selectionCost || 0);\r\n\t}\r\n\r\n\tbookEventChange(val) {\r\n\t\tthis.bookEvent = val;\r\n\t\tif (val === true) {\r\n\t\t\tthis.bookingCost = this.eventData.eventCost;\r\n\t\t} else if (val === false) {\r\n\t\t\tthis.bookingCost = 0;\r\n\t\t}\r\n\t\tthis.calcTotal();\r\n\t}\r\n\r\n\tselectionChange(options) {\r\n\t\tthis.selectedRentals = options.map((e) => e.value);\r\n\t\tthis.selectionCost = options.map((e) => e.value.cost).reduce((prev, current) => prev + current, 0);\r\n\t\tthis.calcTotal();\r\n\t}\r\n}\r\n\r\n@Component({\r\n\tselector: 'refund-notification-dialog',\r\n\ttemplateUrl: './refund-notification-dialog.html',\r\n})\r\nexport class RefundNotificationComponent implements OnInit {\r\n\t@Input() public dataToPass: any;\r\n\tconstructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public injected: any) {}\r\n\tngOnInit(): void {}\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","

Sign In

\r\n
\r\n
\r\n
\r\n \r\n Email\r\n \r\n email\r\n \r\n Please enter a valid email address\r\n \r\n \r\n Email is required\r\n \r\n \r\n \r\n Enter your password\r\n \r\n \r\n \r\n

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

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

You're Logged in and ready to play!

\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
","
\r\n\t\r\n\t\tTeam Selection\r\n\t\t *Warning\r\n\t\t
\r\n\t\t\t

Choose A Team!\r\n\t\t\t

\r\n\t\t\t this team selection can be changed later\r\n\r\n\t\t
\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\r\n\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\r\n\t\t\r\n\r\n\t
\r\n\r\n\r\n
","
\r\n\t
\r\n\t\t
\r\n\t\t\t

\r\n\t\t\t\tWelcome to CofAirsoft {{regForm.controls.username.value}}\r\n\t\t\t

\r\n\t\t
\r\n\t
\r\n\t
\r\n\t
\r\n\t\t\r\n\r\n\t\t
\r\n\t\t

Or

\r\n\t\t

Register with email

\r\n\t
\r\n\r\n\t\r\n
\r\n","
\r\n\t
\r\n\t\t\r\n\t\t\tReset Email\r\n\t\t\t\r\n\t\t\tenter email to reset password\r\n\t\t\t Email is required \r\n\t\t\t\r\n\t\t\t\tInvalid Email format\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t
\r\n
\r\n","
\r\n\t\r\n\t\t\r\n\t\t\tEvent Booking\r\n\t\t\r\n\t\t

\r\n\t\t\tTime Left to book: {{bookingHours}}:{{bookingMinutes}}:{{bookingSeconds}}\r\n\t\t

\r\n\t\t

\r\n\t\t\tEarly cancellations will result in a R50 cancellation fee (Up to 12 hours before the event starts). Refunds are not applicable to cancellations\r\n\t\t\tafterwards.\r\n\t\t

\r\n\t\t
\r\n\t\t\t

{{eventData.eventBookingDescription}}

\r\n\t\t\t
\r\n\t\t\t\t

Event Cost: {{toCurrency(eventCost)}}

\r\n\t\t\t\tBook for event\r\n\t\t\t
\r\n\t\t
\r\n\t\t
0\">\r\n\t\t\t

Extras are available for this event.

\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{{rentalItem.description}}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{{toCurrency(rentalItem.cost)}}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t\t
0 ? 'block' : 'none'}\">\r\n\t\t\tPayment Details\r\n\t\t\t
\r\n\t\t\t\t

Your total: {{toCurrency(totalCost)}}

\r\n\t\t\t\t
0)\" id=\"card-frame\">
\r\n\t\t\t\t *{{warning}}\r\n\t\t\t
\r\n\t\t
\r\n\t\t 0) && !bookingExpired\">\r\n\t\t\t\r\n\t\t\t

\r\n\t\t\t\t*Please be patient, payment process may take a few minutes...\r\n\t\t\t

\r\n\t\t
\r\n\t
\r\n
\r\n","
\r\n

Welcome to the new site!

\r\n

To recieve your original account XP you must register a new account with the email used by your original Cof\r\n Airsoft account.\r\n

\r\n

You may also Login/Register using Google,\r\n

*Note the Gmail email address must match your\r\n original Cof Airsoft email to receive your original COfAirsoft account XP

\r\n

\r\n
","
\n\t\n\t\t\n\t\t\tHow to cancel a booking\n\t\t\n\t\tTo refund your ticket purchase, please email grant@flg.co.za the following information:\n\t\t
    \n\t\t\t
  • \n\t\t\t\tName and surname\n\t\t\t
  • \n\t\t\t
  • \n\t\t\t\tCellphone number\n\t\t\t
  • \n\t\t\t
  • \n\t\t\t\tCallsign (as per COF website)\n\t\t\t
  • \n\t\t\t
  • \n\t\t\t\tEvent date and description\n\t\t\t
  • \n\t\t\t
  • \n\t\t\t\tEvent/Extras you would like to cancel\n\t\t\t
  • \n\t\t\t
  • \n\t\t\t\tThe account details you want the refund to be paid into\n\t\t\t
  • \n\t\t
\n\t\t

\n\t\t\tRefunds are handled on a weekly basis, and are not automated by our system.
\n\t\t\tIf you have not received a response within a week of your request, please send a Whatsapp to Grant at 079 517 5640\n\t\t

\n\t
\n
\n","import { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core';\nimport { NodesComponent } from 'src/app/nodes/nodes.component';\nimport { DatabaseService } from 'src/app/services/database.service';\n\n@Component({\n selector: 'app-rules',\n templateUrl: './rules.component.html',\n styleUrls: ['./rules.component.scss']\n})\nexport class RulesComponent implements OnInit, AfterViewInit {\n\n ruleNames: string[];\n ruleData: any[];\n opened = null;\n constructor(private db: DatabaseService) {\n\n }\n\n @ViewChild(NodesComponent, { static: true })\n nodes: NodesComponent;\n\n openIndex(index) {\n this.opened = index;\n }\n\n ngOnInit(): void {\n this.nodes.particleName = \"particlesLiveEventsDetailsProfile\";\n let sub = this.db.LoadRuleBook()\n .get()\n .subscribe(\n (rules) => {\n this.ruleNames = Object.keys(rules.data())\n this.ruleData = Object.values(rules.data())\n },\n (err) => {\n\n },\n () => {\n sub.unsubscribe();\n }\n )\n\n }\n\n ngAfterViewInit() {\n this.nodes.loadLiveEventsDetailConfig();\n }\n\n}\n","
\n \n
\n
\n
\n

Rulebook

\n
\n\n \n \n \n \n {{ruleData[idx].icon}}\n \n\n \n

\n {{key}}\n\n

\n
\n

- {{rule}}

\n
\n\n
\n
\n\n\n
\n\n
","import { Component, OnInit, HostListener, ElementRef } from '@angular/core';\r\ndeclare var $: any;\r\n\r\n@Component({\r\n selector: 'app-about-us-page',\r\n templateUrl: './about-us-page.component.html',\r\n styleUrls: ['./about-us-page.component.scss']\r\n})\r\nexport class AboutUsPageComponent implements OnInit {\r\n\r\n constructor(public el: ElementRef) { }\r\n\r\n mouseX: number;\r\n mouseY: number;\r\n\r\n\r\n angleLogo(event: MouseEvent) {\r\n // \r\n this.mouseX = event.pageX - this.el.nativeElement.offsetLeft;\r\n this.mouseY = event.pageY - this.el.nativeElement.offsetTop;\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n @HostListener('mousemove', ['$event'])\r\n onMouseMove(event: MouseEvent) {\r\n this.angleLogo(event);\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
\r\n

About Us

\r\n
\r\n

A community of comrades who enjoy the sport of airsoft.

\r\n
\r\n

View the events and register to start your COF Airsoft experience

\r\n

We also provide rental gear & host private games, parties and team building upon bookings.\r\n

\r\n
\r\n
\r\n
","","import { AfterViewInit, Component, Input, OnDestroy, ViewChild, EventEmitter, ElementRef, ViewChildren, ViewContainerRef, ComponentFactoryResolver } from '@angular/core';\r\nimport { AuthService } from '../services/auth.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ScrollServiceService } from '../services/scroll-service.service';\r\n\r\n@Component({\r\n\tselector: 'app-navbar',\r\n\ttemplateUrl: './navbar.component.html',\r\n\tstyleUrls: ['./navbar.component.scss']\r\n})\r\nexport class NavbarComponent implements AfterViewInit {\r\n\r\n\t@Input('collapse') collapse: EventEmitter;\r\n\t@ViewChild('toggler') toggler: ElementRef;\r\n\t@ViewChild('navbarNavAltMarkup') navbarNavAltMarkup;\r\n\tisOpen = false;\r\n\r\n\tconstructor(\r\n\t\tpublic authService: AuthService,\r\n\t\tprivate router: Router,\r\n\t\tprivate scroll: ScrollServiceService,\r\n\r\n\t\tprivate viewContainerRef: ViewContainerRef,\r\n\t\tprivate cfr: ComponentFactoryResolver\r\n\t) {\r\n\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.collapse.subscribe(() => {\r\n\t\t\tif (this.isOpen)\r\n\t\t\t\tthis.isOpen = false;\r\n\t\t})\r\n\t}\r\n\r\n\tnavigateToToggle(route: string) {\r\n\t\tthis.router.navigate([route]);\r\n\r\n\t\tif (window.innerWidth <= 992)\r\n\t\t\tthis.toggleOpen()\r\n\t}\r\n\r\n\ttoggleOpen() {\r\n\r\n\t\tthis.isOpen = !this.isOpen;\r\n\r\n\t}\r\n\r\n\tlogout() {\r\n\t\tthis.authService.logout().then(() => {\r\n\t\t\tthis.router.navigate(['/']);\r\n\t\t});\r\n\t\t// this.authService.\r\n\t}\r\n\r\n\r\n\tScrollToContactUs() {\r\n\t\tthis.router.navigate(['/']);\r\n\t\tthis.toggleOpen()\r\n\t\tthis.delay(600).then(\r\n\t\t\t() => {\r\n\t\t\t\tthis.scroll.scrollToContactUs.emit(true);\r\n\t\t\t}\r\n\t\t)\r\n\r\n\t}\r\n\r\n\tScrollToAboutUs() {\r\n\t\tthis.router.navigate(['/']);\r\n\t\tthis.toggleOpen()\r\n\t\tthis.delay(600).then(\r\n\t\t\t() => {\r\n\t\t\t\tthis.scroll.scrollToAboutUs.emit(true);\r\n\t\t\t}\r\n\t\t)\r\n\t}\r\n\tdelay(ms: number) {\r\n\t\treturn new Promise(resolve => setTimeout(resolve, ms));\r\n\t}\r\n\r\n\r\n\tasync OpenProfileLazy() {\r\n\t\tthis.viewContainerRef.clear();\r\n\t\tconst { ProfilePageComponent } = await import('../pages/profile-page/profile-page.component');\r\n\t\tthis.viewContainerRef.createComponent(\r\n\t\t\tthis.cfr.resolveComponentFactory(ProfilePageComponent)\r\n\t\t);\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { Router } from \"@angular/router\";\r\nimport firebase from 'firebase/app';\r\nimport { AngularFireAuth } from \"@angular/fire/auth\";\r\nimport { DatabaseService } from './database.service';\r\nimport { BehaviorSubject, forkJoin, Observable, of, Subscription } from 'rxjs';\r\nimport { userData } from 'src/app/services/database.service'\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { SnippetService } from './snippet.service';\r\nimport { map, switchMap } from 'rxjs/operators';\r\n\r\ninterface existingUser { new: boolean, user: userData }\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class AuthService {\r\n\tuser: BehaviorSubject;\r\n\tpublic admin: Observable;\r\n\tpublic marshal: Observable;\r\n\r\n\tconstructor(public afAuth: AngularFireAuth, public router: Router, private db: DatabaseService, private http: HttpClient, private snippet: SnippetService) {\r\n\t\t// console.log(\"AUTH\")\r\n\t\tthis.getUser();\r\n\t}\r\n\r\n\tFetchUserSubs: Subscription;\r\n\tgetUser() {\r\n\t\tlet authState = this.afAuth.authState.subscribe(userAuth => {\r\n\t\t\tif (userAuth) {\r\n\t\t\t\tthis.user = new BehaviorSubject(userAuth);\r\n\r\n\t\t\t\tthis.user.subscribe(user => {\r\n\t\t\t\t\tif (user) {\r\n\t\t\t\t\t\tlocalStorage.setItem('user', JSON.stringify(user));\r\n\t\t\t\t\t\tlet getUserSub = this.db.GetUserDocument(user.uid).get().subscribe(data => {\r\n\t\t\t\t\t\t\t//When using providers if no existing user account data exists we must fetch user data and create their profile\r\n\t\t\t\t\t\t\tif (!data.exists && data.data() == null) {\r\n\r\n\t\t\t\t\t\t\t\tfirebase.analytics().logEvent('sign_up', {\r\n\t\t\t\t\t\t\t\t\tmethod: \"Google\"\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\tlet obj = {\r\n\r\n\t\t\t\t\t\t\t\t\tadmin: false,\r\n\t\t\t\t\t\t\t\t\tmarshal: false,\r\n\t\t\t\t\t\t\t\t\tfullname: user.displayName,\r\n\t\t\t\t\t\t\t\t\tmatchesPlayed: 0,\r\n\t\t\t\t\t\t\t\t\tphoneNumber: user.phoneNumber,\r\n\t\t\t\t\t\t\t\t\tserviceTime: firebase.firestore.Timestamp.fromDate(new Date()),\r\n\t\t\t\t\t\t\t\t\tuserID: user.displayName,\r\n\t\t\t\t\t\t\t\t\txp: 0,\r\n\t\t\t\t\t\t\t\t\tbadges: {},\r\n\t\t\t\t\t\t\t\t\tpatches: {},\r\n\t\t\t\t\t\t\t\t\tsocial: \"\",\r\n\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\t//try fetch their profile image and upload it to storageBucket\r\n\t\t\t\t\t\t\t\tthis.http.get(this.user.value.photoURL, { responseType: 'blob', headers: { 'Access-Control-Request-Method': 'GET', \"Access-Control-Request-Headers\": \"Content-Type\" } }).subscribe(val => {\r\n\t\t\t\t\t\t\t\t\tthis.db.uploadFile(val, user.uid);\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\tthis.db.CreateNewUserDocument(obj, user.uid).then(success => {\r\n\t\t\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\t\t\tthis.db.RedeemXP(user.uid, user.email.toLowerCase())\r\n\t\t\t\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\t\t\t\tif (error == 1)\r\n\t\t\t\t\t\t\t\t\t\t\tthis.db.RedeemXPError(user.email.toLowerCase());\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tthis.admin = of(false);\r\n\t\t\t\t\t\t\t\t\tthis.marshal = of(false);\r\n\t\t\t\t\t\t\t\t}).catch(err => {\r\n\r\n\t\t\t\t\t\t\t\t\tconsole.log(\"Failed to create user account\");\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tthis.admin = of(data.data().admin);\r\n\t\t\t\t\t\t\t\tthis.marshal = of(data.data().marshal);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, (err: any) => {\r\n\r\n\t\t\t\t\t\t\tgetUserSub.unsubscribe();\r\n\t\t\t\t\t\t}, () => {\r\n\t\t\t\t\t\t\tgetUserSub.unsubscribe();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t})\r\n\r\n\r\n\t\t\t}\r\n\t\t}, (err: any) => {\r\n\r\n\t\t\tauthState.unsubscribe()\r\n\t\t}, () => {\r\n\t\t\tauthState.unsubscribe();\r\n\t\t})\r\n\r\n\t}\r\n\r\n\tlogin(email: string, password: string) {\r\n\t\treturn this.afAuth.signInWithEmailAndPassword(email, password);\r\n\t}\r\n\r\n\r\n\r\n\tasync register(email: string, password: string) {\r\n\t\tlet result = await this.afAuth.createUserWithEmailAndPassword(email, password)\r\n\t\tthis.sendEmailVerification();\r\n\r\n\t}\r\n\r\n\tasync sendEmailVerification() {\r\n\t\t(await this.afAuth.currentUser).sendEmailVerification();\r\n\t}\r\n\r\n\tasync sendPasswordResetEmail(passwordResetEmail: string) {\r\n\t\treturn await this.afAuth.sendPasswordResetEmail(passwordResetEmail);\r\n\t}\r\n\r\n\tasync logout() {\r\n\t\tawait this.afAuth.signOut();\r\n\t\tthis.user = null;\r\n\t\tlocalStorage.removeItem('user');\r\n\t}\r\n\r\n\tasync isLoggedIn() {\r\n\t\treturn JSON.parse(localStorage.getItem('user'));\r\n\t}\r\n\r\n\tloginWithGoogle() {\r\n\t\treturn this.afAuth.signInWithPopup(new firebase.auth.GoogleAuthProvider()).then(() => { })\r\n\t}\r\n\r\n\r\n\r\n\tonGoogleClickIOS() {\r\n\r\n\t\tlet provider = new firebase.auth.GoogleAuthProvider();\r\n\t\t// Start a sign in process for an unauthenticated user.\r\n\t\tprovider.addScope('profile');\r\n\t\tprovider.addScope('email');\r\n\r\n\r\n\t\tthis.afAuth.signInWithRedirect(provider).then()\r\n\t\tthis.afAuth.getRedirectResult().then(function (result) {\r\n\r\n\t\t\tfirebase.analytics().logEvent('login', {\r\n\t\t\t\tmethod: \"Google\"\r\n\t\t\t});\r\n\r\n\t\t\tthis.user = new BehaviorSubject(result.user);\r\n\t\t\tthis.snippet.openSuccessSnackBar(\"Welcome back\")\r\n\t\t}).catch(\r\n\t\t\terr => {\r\n\t\t\t\tconsole.error(err);\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t}\r\n\r\n}\r\n","import { NgcCookieConsentConfig } from \"ngx-cookieconsent\";\n\nexport const consentConfig: NgcCookieConsentConfig = {\n cookie: {\n domain: window.location.hostname\n },\n position: \"bottom\",\n theme: \"classic\",\n palette: {\n popup: {\n background: \"#000000\",\n text: \"#ffffff\"\n },\n button: {\n background: \"#ff0100\",\n text: \"#000000\"\n }\n },\n type: \"opt-in\",\n revokable: false,\n\n content: {\n message: \"This website uses cookies to ensure you get the best experience on our website.\",\n dismiss: \"Got it!\",\n deny: \"Refuse cookies\",\n link: \"Our Privacy Policy\",\n href: \"https://www.privacypolicygenerator.info/live.php?token=7x94uJJRiRTIS5lM3wQxD0HqAskiM3xp\",\n policy: \"Privacy Policy\"\n }\n}\n\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'orderBy',\n pure: true\n})\nexport class OrderByPipe implements PipeTransform {\n\n transform(value: any[], propertyName: string): any[] {\n if (propertyName)\n return value.sort((a: any, b: any) => String(b[propertyName]).localeCompare(String(a[propertyName])));\n else\n return value;\n }\n\n}","import { Injectable } from '@angular/core';\n\n\n\nexport class PageState {\n scrollIndices: { [key: string]: Number };\n navbarOpen: boolean;\n}\n\nexport class StateData {\n images: { [key: string]: string };\n firebaseData: Object;\n}\n\nexport class State {\n previousState: State;\n nextState: State;\n\n stateType: any;\n\n //acess methods\n public data: StateData;\n public pageState: PageState;\n\n constructor(stateType, next = null, prev = null) {\n this.stateType = stateType\n this.nextState = next;\n this.previousState = prev;\n }\n\n}\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StateServiceService {\n\n currentState: State;\n\n newState(stateType: any) {\n let nextState = new State(stateType)\n this.currentState.nextState = nextState;\n nextState.previousState = this.currentState;\n this.currentState = nextState;\n }\n\n constructor() {\n // console.log(\"BEEP BOOP States are managed\")\n }\n\n loadState() {\n if (!this.currentState)\n this.currentState = new State(State)\n }\n\n\n}\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { ProfilePageComponent } from './pages/profile-page/profile-page.component';\r\nimport { LandingPageComponent } from './pages/landing-page/landing-page.component';\r\nimport { EventsDetailPageComponent } from './pages/events-detail-page/events-detail-page.component';\r\nimport { RankingsPageComponent } from './pages/rankings-page/rankings-page.component';\r\nimport { LiveEventPageComponent } from './pages/live-event-page/live-event-page.component';\r\nimport { RoleGuardService } from './services/role-guard.service';\r\nimport { RulesComponent } from './pages/rules/rules.component';\r\n\r\n\r\n\r\n\r\n\r\n\r\nconst routes: Routes = [\r\n\t{ path: '', component: LandingPageComponent },\r\n\t{ path: 'aboutUs', component: LandingPageComponent, data: { scrollTo: 'aboutUs' } },\r\n\t{ path: 'contactUs', component: LandingPageComponent, data: { scrollTo: 'contactUs' } },\r\n\t{ path: 'rules', component: RulesComponent },\r\n\t{\r\n\t\tpath: 'profile', component: ProfilePageComponent, canActivate: [RoleGuardService],\r\n\t\tdata: {\r\n\t\t\texpectedRole: 'user'\r\n\t\t},\r\n\t\tloadChildren: './pages/profile-page/profile.module#ProfileModule'\r\n\t},\r\n\t{ path: 'events', component: EventsDetailPageComponent },\r\n\t{ path: 'rankings', component: RankingsPageComponent },\r\n\t{\r\n\t\tpath: 'liveEvent', component: LiveEventPageComponent, canActivate: [RoleGuardService],\r\n\t\tdata: {\r\n\t\t\texpectedRole: 'user'\r\n\t\t},\r\n\t\tloadChildren: './pages/live-event-page/live-event.module#LiveEventModule'\r\n\t},\r\n\t{ path: 'admin', loadChildren: './adminPages/admin/admin.module#AdminModule' }\r\n\r\n\r\n];\r\n\r\n@NgModule({\r\n\timports: [RouterModule.forRoot(routes, { onSameUrlNavigation: 'reload', scrollPositionRestoration: 'enabled', relativeLinkResolution: 'legacy' })],\r\n\texports: [RouterModule]\r\n})\r\n\r\nexport class AppRoutingModule {\r\n\r\n\tconstructor() {\r\n\r\n\t}\r\n}\r\n","// src/app/auth/role-guard.service.ts\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n\tRouter,\r\n\tCanActivate,\r\n\tActivatedRouteSnapshot\r\n} from '@angular/router';\r\nimport { AuthService } from './auth.service';\r\nimport { Observable, of } from 'rxjs';\r\nimport { DatabaseService } from './database.service';\r\nimport { map, switchMap } from 'rxjs/operators';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class RoleGuardService implements CanActivate {\r\n\tconstructor(public auth: AuthService, public router: Router, private db: DatabaseService) { }\r\n\tcanActivate(route: ActivatedRouteSnapshot): Observable {\r\n\r\n\t\treturn new Observable(sub => {\r\n\r\n\t\t\tconst expectedRole = route.data.expectedRole;\r\n\r\n\r\n\t\t\tthis.auth.isLoggedIn()\r\n\t\t\t\t.then(\r\n\t\t\t\t\t(loggedIn) => {\r\n\t\t\t\t\t\tif (loggedIn) {\r\n\r\n\t\t\t\t\t\t\tif (expectedRole == 'user') {\r\n\t\t\t\t\t\t\t\tsub.next(true)\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tlet obs = this.auth.afAuth.user.pipe(\r\n\t\t\t\t\t\t\t\t\tmap(user => {\r\n\t\t\t\t\t\t\t\t\t\tif (!user) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tsub.next(false)\r\n\t\t\t\t\t\t\t\t\t\t\treturn null\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\treturn user.uid;\r\n\t\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\t\t\tswitchMap(userID => {\r\n\t\t\t\t\t\t\t\t\t\tif (userID)\r\n\t\t\t\t\t\t\t\t\t\t\treturn this.db.isAdmin(userID, expectedRole)\r\n\t\t\t\t\t\t\t\t\t\treturn of(false)\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t).subscribe(\r\n\t\t\t\t\t\t\t\t\tisAdmin => {\r\n\t\t\t\t\t\t\t\t\t\tsub.next(isAdmin)\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\terr => {\r\n\r\n\t\t\t\t\t\t\t\t\t\tsub.next(false)\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\t\t\t\tobs.unsubscribe()\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tsub.next(false)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\r\n\t\t})\r\n\t}\r\n}","import { Inject, Injectable } from '@angular/core';\r\nimport { Component } from '@angular/core';\r\nimport { MatSnackBar, MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\r\nimport { SwUpdate } from '@angular/service-worker';\r\nimport { UpdateServiceService } from './update-service.service';\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector: 'error-snack',\r\n template: `
\r\n {{message}} error\r\n
`,\r\n styles: [`\r\n ::ng-deep .mat-snack-bar-container.error{\r\n background: #d9534f !important;\r\n }\r\n .snip{\r\n width:100%;\r\n color:white;\r\n text-align: center;\r\n font-family:'Orbitron'\r\n }\r\n\r\n \r\n `],\r\n})\r\nexport class SnackErrorComponent {\r\n\r\n message: \"\";\r\n\r\n\r\n constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any) {\r\n\r\n this.message = data.message;\r\n\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'success-snack',\r\n template: `
\r\n {{message}} check_circle\r\n
`,\r\n styles: [`\r\n ::ng-deep .mat-snack-bar-container.success{\r\n background: #5cb85c !important;\r\n }\r\n .snip2{\r\n width:100%;\r\n color:white;\r\n text-align: center;\r\n font-family:'Orbitron'\r\n }\r\n\r\n \r\n `],\r\n})\r\nexport class SnackSuccessComponent {\r\n\r\n message: \"\";\r\n\r\n\r\n constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any) {\r\n\r\n this.message = data.message;\r\n\r\n }\r\n}\r\n@Component({\r\n selector: 'update-snack',\r\n template: `
\r\n {{message}} click to reload\r\n
`,\r\n styles: [`\r\n ::ng-deep .mat-snack-bar-container.success{\r\n background: #5cb85c !important;\r\n }\r\n .snip{\r\n cursor:pointer;\r\n width:100%;\r\n color:white;\r\n text-align: center;\r\n font-family:'Orbitron'\r\n }\r\n\r\n \r\n `],\r\n})\r\nexport class UpdateSnackComponent {\r\n\r\n message: \"\";\r\n\r\n reloadPage() {\r\n this.updates.activateUpdate().then(() => document.location.reload());\r\n }\r\n\r\n constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any, public updates: SwUpdate) {\r\n\r\n this.message = data.message;\r\n\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SnippetService {\r\n\r\n constructor(private _snackBar: MatSnackBar) { }\r\n\r\n openSuccessSnackBar(message: string) {\r\n this._snackBar.openFromComponent(SnackSuccessComponent, {\r\n duration: 4000,\r\n data: { message: message },\r\n panelClass: \"success\",\r\n politeness: \"polite\"\r\n });\r\n }\r\n\r\n\r\n openUpdateSnippet() {\r\n this._snackBar.openFromComponent(UpdateSnackComponent, {\r\n duration: 100000,\r\n data: { message: \"A new version of the website is avaliable!\" },\r\n panelClass: \"success\",\r\n politeness: \"assertive\"\r\n });\r\n }\r\n\r\n\r\n\r\n openErrorSnackBar(message: string) {\r\n this._snackBar.openFromComponent(SnackErrorComponent, {\r\n duration: 4000,\r\n data: { message: message },\r\n panelClass: \"error\",\r\n politeness: \"assertive\"\r\n });\r\n }\r\n}\r\n","import { AfterViewInit, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { DatabaseService } from 'src/app/services/database.service';\r\nimport { combineLatest, forkJoin, of, Subscription } from 'rxjs';\r\nimport firebase from 'firebase/app';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport { NodesComponent } from 'src/app/nodes/nodes.component';\r\n\r\n@Component({\r\n\tselector: 'app-rankings-page',\r\n\ttemplateUrl: './rankings-page.component.html',\r\n\tstyleUrls: ['./rankings-page.component.scss'],\r\n\r\n})\r\nexport class RankingsPageComponent implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n\tlastUserID: firebase.firestore.DocumentSnapshot;\r\n\tuserList: any[];\r\n\tuserlistSub: Subscription;\r\n\r\n\t@ViewChild(NodesComponent, { static: true })\r\n\tnodes: NodesComponent;\r\n\r\n\tthrottle = 50;\r\n\tscrollDistance = 1;\r\n\tscrollUpDistance = 2;\r\n\r\n\tconstructor(private db: DatabaseService, private sanitization: DomSanitizer) {\r\n\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.nodes.loadLiveRanksConfig();\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tif (this.userlistSub)\r\n\t\t\tthis.userlistSub.unsubscribe()\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.nodes.particleName = \"particlesRanks\";\r\n\t\tthis.userList = [];\r\n\t\tthis.FetchUsers()\r\n\t\tthis.userlistSub = new Subscription()\r\n\t}\r\n\r\n\tloadingUsers = false;\r\n\tFetchUsers() {\r\n\t\tif (!this.loadingUsers) {\r\n\t\t\tthis.loadingUsers = true;\r\n\t\t\tthis.userlistSub = this.db.GetUsersByRank(this.lastUserID).pipe(\r\n\t\t\t\tmap(data => {\r\n\r\n\t\t\t\t\tif (!data.empty) {\r\n\r\n\t\t\t\t\t\t// this.lastUserID = data.docs[data.docs.length - 1];\r\n\t\t\t\t\t\treturn data.docs.map(doc => {\r\n\t\t\t\t\t\t\tthis.lastUserID = doc;\r\n\t\t\t\t\t\t\treturn combineLatest([\r\n\t\t\t\t\t\t\t\tof(doc),\r\n\t\t\t\t\t\t\t\tthis.db.FetchProfileImage(doc.id)\r\n\t\t\t\t\t\t\t])\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.loadingUsers = false;\r\n\t\t\t\t\treturn []\r\n\r\n\t\t\t\t}),\r\n\t\t\t\tswitchMap(data => {\r\n\t\t\t\t\treturn forkJoin(data)\r\n\t\t\t\t})\r\n\t\t\t).subscribe(\r\n\t\t\t\t(data) => {\r\n\t\t\t\t\tif (data.length) {\r\n\t\t\t\t\t\tdata.forEach(doc => {\r\n\t\t\t\t\t\t\tif (doc[0].data().xp > 0)\r\n\t\t\t\t\t\t\t\tthis.userList.push({ key: doc[0].id, value: { data: doc[0].data(), image: this.sanitize(doc[1]) } })\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.loadingUsers = false;\r\n\t\t\t\t}, (err) => {\r\n\t\t\t\t\tconsole.error(err)\r\n\t\t\t\t}, () => {\r\n\t\t\t\t\tthis.loadingUsers = false;\r\n\t\t\t\t\tthis.userlistSub.unsubscribe();\r\n\t\t\t\t}\r\n\t\t\t)\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tsanitize(url: string) {\r\n\t\treturn this.sanitization.bypassSecurityTrustStyle(`url('${url}')`);\r\n\t}\r\n\r\n\tonScrollDown() {\r\n\r\n\t\tthis.FetchUsers();\r\n\t}\r\n\r\n\r\n\r\n}\r\n\r\n","
\r\n
\r\n \r\n
\r\n
\r\n\r\n
Player Rankings
\r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n
{{ user.value.data.userID }}
\r\n
#{{ rank + 1}}
\r\n
\r\n
\r\n
XP:{{ user.value.data.xp }}
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\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\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n","var map = {\n\t\"./adminPages/admin/admin.module\": [\n\t\t\"kMFI\",\n\t\t\"adminPages-admin-admin-module\"\n\t],\n\t\"./pages/live-event-page/live-event.module\": [\n\t\t\"vlUf\",\n\t\t\"pages-live-event-page-live-event-module\"\n\t],\n\t\"./pages/profile-page/profile.module\": [\n\t\t\"cDuD\",\n\t\t\"pages-profile-page-profile-module\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = \"zn8P\";\nmodule.exports = webpackAsyncContext;"],"sourceRoot":"webpack:///"}