invitation-code-lib 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invitation-code-lib.mjs","sources":["../../../projects/invitation-code-lib/src/lib/pages/code-management/code-management.component.html","../../../projects/invitation-code-lib/src/lib/pages/code-management/code-management.component.ts","../../../projects/invitation-code-lib/src/lib/models/invitation-grid.model.ts","../../../projects/invitation-code-lib/src/lib/utils/api-url-builder.ts","../../../projects/invitation-code-lib/src/lib/services/invitation-code.service.ts","../../../projects/invitation-code-lib/src/lib/services/invitation-grid.service.ts","../../../projects/invitation-code-lib/src/lib/pages/invitation-codes/invitation-codes.component.html","../../../projects/invitation-code-lib/src/lib/pages/invitation-codes/invitation-codes.component.ts","../../../projects/invitation-code-lib/src/lib/models/waitlist-grid.model.ts","../../../projects/invitation-code-lib/src/lib/components/modal/convert-to-invitation-dialog/convert-to-invitation-dialog.component.html","../../../projects/invitation-code-lib/src/lib/components/modal/convert-to-invitation-dialog/convert-to-invitation-dialog.component.ts","../../../projects/invitation-code-lib/src/lib/services/waitlist-code.service.ts","../../../projects/invitation-code-lib/src/lib/services/waitlist-grid.service.ts","../../../projects/invitation-code-lib/src/lib/pages/waitlist/waitlist.component.html","../../../projects/invitation-code-lib/src/lib/pages/waitlist/waitlist.component.ts","../../../projects/invitation-code-lib/src/lib/components/code-management-header/code-management-header.component.ts","../../../projects/invitation-code-lib/src/lib/components/code-management-header/code-management-header.component.html","../../../projects/invitation-code-lib/src/lib/components/modal/generate-code-dialog/generate-code-dialog.component.ts","../../../projects/invitation-code-lib/src/lib/components/modal/generate-code-dialog/generate-code-dialog.component.html","../../../projects/invitation-code-lib/src/lib/components/shared/stats-card/stats-card.component.html","../../../projects/invitation-code-lib/src/lib/components/shared/stats-card/stats-card.component.ts","../../../projects/invitation-code-lib/src/lib/components/stats-overview/stats-overview.component.ts","../../../projects/invitation-code-lib/src/lib/components/stats-overview/stats-overview.component.html","../../../projects/invitation-code-lib/src/lib/components/shared/waitlist-stats-card/waitlist-stats-card.component.html","../../../projects/invitation-code-lib/src/lib/components/shared/waitlist-stats-card/waitlist-stats-card.component.ts","../../../projects/invitation-code-lib/src/lib/components/wait-list-stats-overview/waitlist-stats-overview.component.html","../../../projects/invitation-code-lib/src/lib/components/wait-list-stats-overview/waitlist-stats-overview.component.ts","../../../projects/invitation-code-lib/src/lib/invitation-code.module.ts","../../../projects/invitation-code-lib/src/public-api.ts","../../../projects/invitation-code-lib/src/invitation-code-lib.ts"],"sourcesContent":["<div class=\"invitation-codes-page min-h-screen p-10\">\r\n\r\n <app-stats-overview></app-stats-overview>\r\n\r\n <!-- Tab Navigation -->\r\n <app-code-management-header\r\n (tabChanged)=\"onTabChanged($event)\">\r\n </app-code-management-header>\r\n\r\n <!-- Tab Content -->\r\n <div *ngIf=\"activeTab === 'codes'\">\r\n <app-invitation-codes></app-invitation-codes>\r\n </div>\r\n\r\n <div *ngIf=\"activeTab === 'waitlist'\">\r\n <app-waitlist></app-waitlist>\r\n </div>\r\n</div>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-code-management',\r\n templateUrl: './code-management.component.html',\r\n styleUrls: ['./code-management.component.scss'],\r\n standalone:false\r\n})\r\nexport class CodeManagementComponent {\r\n activeTab: 'codes' | 'waitlist' = 'codes';\r\n\r\n onTabChanged(tab: 'codes' | 'waitlist'): void {\r\n this.activeTab = tab;\r\n }\r\n}\r\n","import { GridColumn, GridKeyValueDto } from '@naniteninja/ionic-lib';\r\n\r\nexport interface InvitationCodeGrid {\r\n id: string;\r\n code: string;\r\n userType: string;\r\n status: string;\r\n created: Date;\r\n expires: Date;\r\n invitee: string;\r\n progress: string;\r\n name?: string;\r\n createdAt?: Date;\r\n updatedAt?: Date;\r\n email?: string;\r\n usedBy?: string;\r\n usedAt?: Date;\r\n revokedAt?: Date;\r\n maxUses?: number;\r\n currentUses?: number;\r\n accessLevel?: string;\r\n notes?: string;\r\n waitlistMemberId?: string;\r\n}\r\n\r\nexport const invitationStatuses: GridKeyValueDto[] = [\r\n { Key: 'account_created', Value: 'Account Created' },\r\n { Key: 'registration_started', Value: 'Registration Started' },\r\n { Key: 'pending', Value: 'Pending' },\r\n { Key: 'revoked', Value: 'Revoked' },\r\n { Key: 'expired', Value: 'Expired' },\r\n { Key: 'completed', Value: 'Completed' }\r\n];\r\n\r\nexport const userTypes: GridKeyValueDto[] = [\r\n { Key: 'premium', Value: 'Premium Member' },\r\n { Key: 'standard', Value: 'Standard Member' },\r\n { Key: 'vip', Value: 'VIP Member' }\r\n];\r\n\r\nexport const invitationGridColumns: GridColumn[] = [\r\n {\r\n name: 'code',\r\n label: 'Code',\r\n visible: true,\r\n sortable: true,\r\n width: 180,\r\n controlType: 'Text',\r\n editable: false\r\n },\r\n {\r\n name: 'userType',\r\n label: 'User Type',\r\n visible: true,\r\n sortable: true,\r\n width: 150,\r\n controlType: 'Text',\r\n editable: false\r\n },\r\n {\r\n name: 'status',\r\n label: 'Status',\r\n visible: true,\r\n sortable: true,\r\n width: 160,\r\n controlType: 'Text',\r\n editable: false\r\n },\r\n {\r\n name: 'created',\r\n label: 'Created',\r\n visible: true,\r\n sortable: true,\r\n width: 180,\r\n controlType: 'Text',\r\n editable: false\r\n },\r\n {\r\n name: 'expires',\r\n label: 'Expires',\r\n visible: true,\r\n sortable: true,\r\n width: 180,\r\n controlType: 'Text',\r\n editable: false\r\n },\r\n {\r\n name: 'invitee',\r\n label: 'Invitee',\r\n visible: true,\r\n sortable: true,\r\n width: 200,\r\n controlType: 'Text',\r\n editable: false\r\n },\r\n {\r\n name: 'progress',\r\n label: 'Progress',\r\n visible: true,\r\n sortable: false,\r\n width: 150,\r\n controlType: 'Text',\r\n editable: false\r\n }\r\n];","import { Inject, Injectable } from '@angular/core';\r\nimport { INVITATION_CODE_CONFIG, InvitationCodeConfig } from '../invitation-code.module';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiUrlBuilder {\r\n constructor(@Inject(INVITATION_CODE_CONFIG) private config: InvitationCodeConfig) {}\r\n\r\n buildUrl(endpoint: string): string {\r\n const baseUrl = this.config.apiUrl.endsWith('/')\r\n ? this.config.apiUrl.slice(0, -1)\r\n : this.config.apiUrl;\r\n\r\n const apiPrefix = this.config.apiSuffix\r\n ? `/${this.config.apiSuffix}`\r\n : '';\r\n\r\n return `${baseUrl}${apiPrefix}/${endpoint}`;\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Observable, BehaviorSubject } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { BaseInvitationCode as InvitationCode, BaseWaitlistMember as WaitlistMember, StatsCard } from '../models/invitation-code.interface';\r\nimport { ApiUrlBuilder } from '../utils/api-url-builder';\r\nimport { INVITATION_CODE_CONFIG, InvitationCodeConfig } from '../invitation-code.module';\r\n\r\nexport interface BackendInvitationCode {\r\n id: string;\r\n code: string;\r\n name?: string;\r\n status: string;\r\n userType: string;\r\n createdBy: string;\r\n createdAt: Date;\r\n updatedAt: Date;\r\n expires?: Date;\r\n email?: string;\r\n usedBy?: string;\r\n usedAt?: Date;\r\n revokedAt?: Date;\r\n maxUses?: number;\r\n currentUses: number;\r\n accessLevel: string;\r\n notes?: string;\r\n waitlistMemberId?: string;\r\n}\r\n\r\nexport interface BackendWaitlistMember {\r\n id: string;\r\n name: string;\r\n email: string;\r\n userType: 'premium' | 'standard' | 'vip';\r\n priority: 'high' | 'normal';\r\n joined: Date;\r\n waitTime: number;\r\n notes: string;\r\n status: string;\r\n convertedAt?: Date;\r\n convertedToCodeId?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class InvitationCodeService {\r\n private apiUrlBuilder: ApiUrlBuilder;\r\n private refreshGrid$ = new BehaviorSubject<void>(undefined);\r\n\r\n constructor(\r\n private http: HttpClient,\r\n @Inject(INVITATION_CODE_CONFIG) private config: InvitationCodeConfig\r\n ) {\r\n this.apiUrlBuilder = new ApiUrlBuilder(config);\r\n }\r\n\r\n get refreshTrigger$(): Observable<void> {\r\n return this.refreshGrid$.asObservable();\r\n }\r\n\r\n triggerRefresh(): void {\r\n this.refreshGrid$.next();\r\n }\r\n\r\n getInvitationCodes(\r\n page: number = 1,\r\n limit: number = 10,\r\n filters?: any[],\r\n sortField?: string,\r\n sortOrder?: string,\r\n search?: string\r\n ): Observable<{ data: BackendInvitationCode[], count: number }> {\r\n let params = new HttpParams()\r\n .set('page', page.toString())\r\n .set('limit', limit.toString());\r\n\r\n if (filters && filters.length > 0) {\r\n params = params.set('filters', JSON.stringify(filters));\r\n }\r\n\r\n if (sortField) {\r\n params = params.set('sortField', sortField);\r\n }\r\n\r\n if (sortOrder) {\r\n params = params.set('sortOrder', sortOrder);\r\n }\r\n\r\n if (search) {\r\n params = params.set('search', search);\r\n }\r\n\r\n return this.http.get<{\r\n data: BackendInvitationCode[],\r\n count: number,\r\n page: number,\r\n limit: number\r\n }>(this.apiUrlBuilder.buildUrl('invitation-codes'), { params });\r\n }\r\n\r\n getWaitlistMembers(\r\n page: number = 1,\r\n limit: number = 10,\r\n filters?: any[],\r\n sortField?: string,\r\n sortOrder?: string,\r\n search?: string\r\n ): Observable<{ data: BackendWaitlistMember[], count: number }> {\r\n let params = new HttpParams()\r\n .set('page', page.toString())\r\n .set('limit', limit.toString());\r\n\r\n // Add search parameter\r\n if (search) {\r\n params = params.set('search', search);\r\n }\r\n\r\n // Handle user type filter\r\n if (filters && filters.length > 0) {\r\n const userTypeFilter = this.extractUserTypeFilter(filters);\r\n if (userTypeFilter) {\r\n params = params.set('userType', userTypeFilter);\r\n }\r\n }\r\n\r\n // Handle status filter\r\n if (filters && filters.length > 0) {\r\n const statusFilter = this.extractStatusFilter(filters);\r\n if (statusFilter) {\r\n params = params.set('status', statusFilter);\r\n }\r\n }\r\n\r\n return this.http.get<any>(this.apiUrlBuilder.buildUrl('waitlisted-users'), { params }).pipe(\r\n map(response => {\r\n if (!response.success) {\r\n return { data: [], count: 0 };\r\n }\r\n\r\n // Transform response to match expected format\r\n const mappedData = response.data.map((user: any) => ({\r\n id: user.id,\r\n name: user.name,\r\n email: user.email,\r\n userType: this.mapUserType(user.userType),\r\n priority: 'normal',\r\n joined: new Date(user.waitlistJoinedAt || user.createdAt),\r\n waitTime: this.calculateWaitTime(user.waitlistJoinedAt),\r\n notes: '',\r\n status: user.status === 'waitlist_invited' ? 'invited' : user.status,\r\n convertedAt: user.convertedAt,\r\n convertedToCodeId: user.convertedToCodeId\r\n }));\r\n\r\n return {\r\n data: mappedData,\r\n count: response.meta?.total || response.data.length\r\n };\r\n })\r\n );\r\n }\r\n\r\n private extractUserTypeFilter(filters: any[]): string | null {\r\n for (const filter of filters) {\r\n if (filter.publicFieldName === 'userType') {\r\n if (filter.operatorType === 'Equals' || filter.operatorType === 'AnyOf') {\r\n const value = filter.values[0];\r\n const typeMap: {[key: string]: string} = {\r\n 'premium': 'matcher',\r\n 'standard': 'unmatched',\r\n 'vip': 'vip'\r\n };\r\n return typeMap[value] || value;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private extractStatusFilter(filters: any[]): string | null {\r\n for (const filter of filters) {\r\n if (filter.publicFieldName === 'status') {\r\n if (filter.operatorType === 'Equals' || filter.operatorType === 'AnyOf') {\r\n const value = filter.values[0];\r\n if (value === 'invited') {\r\n return 'waitlist_invited';\r\n }\r\n return value;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private mapUserType(userType: string): 'premium' | 'standard' | 'vip' {\r\n const typeLower = userType.toLowerCase();\r\n\r\n if (typeLower.includes('matcher') || typeLower.includes('premium')) {\r\n return 'premium';\r\n } else if (typeLower.includes('vip')) {\r\n return 'vip';\r\n } else {\r\n return 'standard';\r\n }\r\n }\r\n\r\n private calculateWaitTime(joinedDate: Date | string): number {\r\n if (!joinedDate) return 0;\r\n const joined = new Date(joinedDate);\r\n const now = new Date();\r\n const diffTime = Math.abs(now.getTime() - joined.getTime());\r\n return Math.ceil(diffTime / (1000 * 60 * 60 * 24));\r\n }\r\n\r\n getStats(): Observable<StatsCard[]> {\r\n return this.http.get<any>(this.apiUrlBuilder.buildUrl('invitation-codes/stats')).pipe(\r\n map(stats => [\r\n {\r\n title: 'Total Codes',\r\n value: stats.total || 0,\r\n icon: 'qr_code',\r\n color: 'bg-blue-500'\r\n },\r\n {\r\n title: 'Pending',\r\n value: stats.pending || 0,\r\n icon: 'schedule',\r\n color: 'bg-yellow-500'\r\n },\r\n {\r\n title: 'Completed',\r\n value: stats.completed || 0,\r\n icon: 'check_circle',\r\n color: 'bg-green-500'\r\n },\r\n {\r\n title: 'Revoked',\r\n value: stats.revoked || 0,\r\n icon: 'cancel',\r\n color: 'bg-red-500'\r\n },\r\n {\r\n title: 'Active',\r\n value: stats.active || 0,\r\n icon: 'play_arrow',\r\n color: 'bg-purple-500'\r\n }\r\n ])\r\n );\r\n }\r\n\r\n createInvitationCode(data: any): Observable<BackendInvitationCode> {\r\n return this.http.post<BackendInvitationCode>(this.apiUrlBuilder.buildUrl('invitation-codes'), data).pipe(\r\n tap(() => this.triggerRefresh())\r\n );\r\n }\r\n\r\n generateCode(data: any): Observable<BackendInvitationCode> {\r\n const requestData = {\r\n name: data.name,\r\n maxUses: data.maxUses,\r\n expiryDate: data.expiryDate || data.expires,\r\n accessLevel: data.accessLevel,\r\n userType: data.userType,\r\n email: data.email\r\n };\r\n\r\n return this.http.post<BackendInvitationCode>(this.apiUrlBuilder.buildUrl('invitation-codes/generate'), requestData).pipe(\r\n tap(() => this.triggerRefresh())\r\n );\r\n }\r\n\r\n revokeInvitationCode(codeId: string): Observable<BackendInvitationCode> {\r\n return this.http.put<BackendInvitationCode>(this.apiUrlBuilder.buildUrl(`invitation-codes/${codeId}/revoke`), {}).pipe(\r\n tap(() => this.triggerRefresh())\r\n );\r\n }\r\n\r\n deleteInvitationCode(codeId: string): Observable<BackendInvitationCode> {\r\n return this.http.delete<BackendInvitationCode>(this.apiUrlBuilder.buildUrl(`invitation-codes/${codeId}`)).pipe(\r\n tap(() => this.triggerRefresh())\r\n );\r\n }\r\n\r\n bulkGenerateFromWaitlist(data: { waitlistMemberIds: string[], expiryDays: number, accessLevel: string }): Observable<any> {\r\n return this.http.post<any>(this.apiUrlBuilder.buildUrl('waitlisted-users/bulk-invite'), {\r\n userIds: data.waitlistMemberIds,\r\n expiryDays: data.expiryDays,\r\n accessLevel: data.accessLevel\r\n }).pipe(\r\n map(response => {\r\n if (!response.success) {\r\n throw new Error(response.error || 'Failed to create invitations');\r\n }\r\n\r\n const successfulResults = response.data?.results?.filter((r: any) => r.success) || [];\r\n return successfulResults.map((r: any) => r.data?.invitation || {});\r\n }),\r\n tap(() => this.triggerRefresh())\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { GridDataRequest, GridRow } from '@naniteninja/ionic-lib';\r\nimport { InvitationCodeGrid } from '../models/invitation-grid.model';\r\nimport { BackendInvitationCode, InvitationCodeService } from './invitation-code.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class InvitationGridService {\r\n private destroy$ = new Subject<void>();\r\n\r\n constructor(private invitationCodeService: InvitationCodeService) {}\r\n\r\n getInvitationCodes(event: GridDataRequest): Observable<{ data: GridRow<InvitationCodeGrid>[], count: number }> {\r\n const page = Math.floor(event.from / event.size) + 1;\r\n const limit = event.size;\r\n\r\n return this.invitationCodeService.getInvitationCodes(\r\n page,\r\n limit,\r\n event.userFilters,\r\n event.sortField,\r\n event.sortDirection === 'Ascending' ? 'asc' : 'desc',\r\n event.searchString\r\n ).pipe(\r\n map(response => {\r\n const gridRows: GridRow<InvitationCodeGrid>[] = response.data.map(item => {\r\n const gridItem: InvitationCodeGrid = {\r\n id: item.id,\r\n code: item.code,\r\n userType: item.userType,\r\n status: item.status,\r\n created: item.createdAt,\r\n expires: item.expires || new Date(Date.now() + 30 * 24 * 60 * 60 * 1000),\r\n invitee: item.email || 'Anyone',\r\n progress: this.getProgressText(item),\r\n name: item.name,\r\n createdAt: item.createdAt,\r\n updatedAt: item.updatedAt,\r\n email: item.email,\r\n usedBy: item.usedBy,\r\n usedAt: item.usedAt,\r\n revokedAt: item.revokedAt,\r\n maxUses: item.maxUses,\r\n currentUses: item.currentUses,\r\n accessLevel: item.accessLevel,\r\n notes: item.notes,\r\n waitlistMemberId: item.waitlistMemberId\r\n };\r\n\r\n return {\r\n id: item.id,\r\n data: gridItem,\r\n rowMenuItems: this.createActionMenu(gridItem),\r\n hasEditPermissions: true,\r\n hasDeletePermissions: true,\r\n displayValues: this.createDisplayValues(gridItem)\r\n };\r\n });\r\n\r\n return { data: gridRows, count: response.count };\r\n })\r\n );\r\n }\r\n\r\n private createDisplayValues(item: InvitationCodeGrid): any {\r\n return {\r\n code: item.code,\r\n userType: this.getUserTypeDisplay(item.userType),\r\n status: this.getStatusDisplay(item.status),\r\n created: this.formatDate(item.created),\r\n expires: item.expires ? this.formatDate(item.expires) : 'Never',\r\n invitee: item.email || 'Anyone',\r\n progress: item.progress\r\n };\r\n }\r\n\r\n private formatDate(date: Date | string): string {\r\n if (!date) return 'N/A';\r\n const d = new Date(date);\r\n return isNaN(d.getTime()) ? 'Invalid Date' : d.toLocaleDateString('en-US', {\r\n year: 'numeric',\r\n month: 'short',\r\n day: 'numeric',\r\n hour: '2-digit',\r\n minute: '2-digit'\r\n });\r\n }\r\n\r\n private getUserTypeDisplay(userType: string): string {\r\n const userTypeMap: { [key: string]: string } = {\r\n 'premium': 'Premium Member',\r\n 'standard': 'Standard Member',\r\n 'vip': 'VIP Member'\r\n };\r\n return userTypeMap[userType] || userType;\r\n }\r\n\r\n private getStatusDisplay(status: string): string {\r\n const statusMap: { [key: string]: string } = {\r\n 'account_created': 'Account Created',\r\n 'registration_started': 'Registration Started',\r\n 'pending': 'Pending',\r\n 'revoked': 'Revoked',\r\n 'expired': 'Expired',\r\n 'completed': 'Completed',\r\n 'deleted': 'Deleted'\r\n };\r\n return statusMap[status] || status;\r\n }\r\n\r\n private getProgressText(item: BackendInvitationCode | InvitationCodeGrid): string {\r\n if (item.status === 'account_created' || item.status === 'completed') {\r\n return 'Account created\\nSuccessfully onboarded';\r\n } else if (item.status === 'registration_started') {\r\n return 'In progress...';\r\n } else if ('usedAt' in item && item.usedAt) {\r\n return `Used on ${this.formatDate(item.usedAt)}`;\r\n }\r\n return '';\r\n }\r\n\r\n private createActionMenu(item: InvitationCodeGrid): MenuItem[] {\r\n const menuItems: MenuItem[] = [\r\n {\r\n label: 'Copy Code',\r\n icon: 'pi pi-copy',\r\n command: () => this.copyCode(item)\r\n }\r\n ];\r\n\r\n if (item.status !== 'revoked' && item.status !== 'expired' && item.status !== 'completed') {\r\n menuItems.push({\r\n label: 'Revoke Code',\r\n icon: 'pi pi-times',\r\n command: () => this.revokeCode(item)\r\n });\r\n }\r\n\r\n if (item.status !== 'deleted') {\r\n menuItems.push({\r\n label: 'Delete',\r\n icon: 'pi pi-trash',\r\n command: () => this.deleteCode(item)\r\n });\r\n } else {\r\n menuItems.push({\r\n label: 'Restore',\r\n icon: 'pi pi-refresh',\r\n command: () => this.restoreCode(item)\r\n });\r\n }\r\n\r\n return menuItems;\r\n }\r\n\r\n private copyCode(item: InvitationCodeGrid): void {\r\n navigator.clipboard.writeText(item.code).then(() => {\r\n alert(`Code \"${item.code}\" copied to clipboard!`);\r\n }).catch(err => {\r\n const textArea = document.createElement('textarea');\r\n textArea.value = item.code;\r\n document.body.appendChild(textArea);\r\n textArea.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(textArea);\r\n alert(`Code \"${item.code}\" copied to clipboard!`);\r\n });\r\n }\r\n\r\n private revokeCode(item: InvitationCodeGrid): void {\r\n if (confirm(`Are you sure you want to revoke code \"${item.code}\"?`)) {\r\n this.invitationCodeService.revokeInvitationCode(item.id).subscribe({\r\n next: () => {\r\n alert(`Code \"${item.code}\" has been revoked!`);\r\n },\r\n error: (error) => {\r\n alert(`Failed to revoke code: ${error.message}`);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private deleteCode(item: InvitationCodeGrid): void {\r\n if (confirm(`Are you sure you want to delete code \"${item.code}\"? This will soft delete it (mark as deleted).`)) {\r\n this.invitationCodeService.deleteInvitationCode(item.id).subscribe({\r\n next: () => {\r\n alert(`Code \"${item.code}\" has been deleted!`);\r\n },\r\n error: (error) => {\r\n alert(`Failed to delete code: ${error.message}`);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private restoreCode(item: InvitationCodeGrid): void {\r\n if (confirm(`Are you sure you want to restore code \"${item.code}\"?`)) {\r\n alert('Restore functionality to be implemented');\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","\r\n <div class=\"main-grid-section p-6\">\r\n <!-- Header Section -->\r\n <div class=\"code-management-header mb-6 p-3\">\r\n <div class=\"flex flex-col lg:flex-row lg:items-center lg:justify-between\">\r\n <div class=\"mb-4 lg:mb-0\">\r\n <h3 class=\"text-xl font-semibold text-white mb-2\">Invitation Codes</h3>\r\n <p class=\"text-gray-400 text-sm\">\r\n View and manage all invitation codes. Codes are one-time use and bypass user type limits.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Filter Tabs -->\r\n <!-- Filter Tabs -->\r\n<div class=\"filter-tabs mb-6\">\r\n <div class=\"filter-container p-1.5 bg-gray-800 border border-gray-700 rounded-xl w-fit\">\r\n <div class=\"flex space-x-0.5\">\r\n <button\r\n *ngFor=\"let filter of filters\"\r\n (click)=\"setFilter(filter)\"\r\n [class]=\"activeFilter === filter\r\n ? 'selected-filter px-4 py-2 text-sm font-medium transition-colors'\r\n : 'unselected-filter px-4 py-2 text-sm font-medium transition-colors'\">\r\n {{ getFilterDisplayName(filter) }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n <!-- Grid Section -->\r\n <div class=\"grid-placeholder bg-gray-800 rounded-lg border border-gray-700\">\r\n <lib-grid\r\n [data]=\"gridData\"\r\n [columns]=\"columns\"\r\n [isLoading]=\"isLoading\"\r\n [totalRecords]=\"totalRecords\"\r\n [rowsPerPage]=\"rowsPerPage\"\r\n [rowsPerPageOptions]=\"rowsPerPageOptions\"\r\n [sortField]=\"sortField\"\r\n [sortOrder]=\"sortOrder\"\r\n [enableSelection]=\"false\"\r\n [enableCreate]=\"false\"\r\n [enableRefresh]=\"false\"\r\n [enableTrash]=\"false\"\r\n [enableGridFilters]=\"false\"\r\n [hideToolbar]=\"true\"\r\n [hideSettings]=\"true\"\r\n [hideRowMenu]=\"false\"\r\n (lazyLoad)=\"onLazyLoad($event)\"\r\n (cellClicked)=\"onCellClicked($event)\"\r\n class=\"dark-theme-grid w-full\">\r\n </lib-grid>\r\n </div>\r\n </div>\r\n\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { GridColumn, GridDataRequest, GridRow, GridSortDirection } from '@naniteninja/ionic-lib';\r\nimport { InvitationCodeGrid, invitationGridColumns } from '../../models/invitation-grid.model';\r\nimport { InvitationGridService } from '../../services/invitation-grid.service';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { InvitationCodeService } from '../../services/invitation-code.service';\r\n\r\ntype FilterType = 'all' | 'pending' | 'active' | 'inactive' | 'deleted';\r\n\r\n@Component({\r\n selector: 'app-invitation-codes',\r\n templateUrl: './invitation-codes.component.html',\r\n styleUrls: ['./invitation-codes.component.scss'],\r\n standalone: false\r\n})\r\nexport class InvitationCodesComponent implements OnInit, OnDestroy {\r\n gridData: GridRow<InvitationCodeGrid>[] = [];\r\n isLoading: boolean = false;\r\n totalRecords: number = 0;\r\n rowsPerPage: number = 10;\r\n rowsPerPageOptions: number[] = [5,10, 25, 50];\r\n sortField: string = 'created';\r\n sortOrder: GridSortDirection = 'Descending';\r\n columns: GridColumn[] = invitationGridColumns;\r\n activeFilter: FilterType = 'all';\r\n filters: FilterType[] = ['all', 'pending', 'active', 'inactive', 'deleted'];\r\n private destroy$ = new Subject<void>();\r\n\r\n constructor(\r\n private invitationGridService: InvitationGridService,\r\n private invitationCodeService: InvitationCodeService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.loadGridData();\r\n this.subscribeToAutoRefresh();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n private subscribeToAutoRefresh(): void {\r\n this.invitationCodeService.refreshTrigger$\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.loadGridData();\r\n });\r\n }\r\n\r\n loadGridData(): void {\r\n const request: GridDataRequest = {\r\n from: 0,\r\n size: this.rowsPerPage,\r\n sortField: this.sortField,\r\n sortDirection: this.sortOrder,\r\n searchString: '',\r\n userFilters: this.getUserFiltersForActiveFilter()\r\n };\r\n\r\n this.isLoading = true;\r\n this.invitationGridService.getInvitationCodes(request).subscribe({\r\n next: (response) => {\r\n this.gridData = response.data;\r\n this.totalRecords = response.count;\r\n this.isLoading = false;\r\n },\r\n error: (error) => {\r\n this.isLoading = false;\r\n }\r\n });\r\n }\r\n\r\n onLazyLoad(event: GridDataRequest): void {\r\n this.isLoading = true;\r\n this.invitationGridService.getInvitationCodes(event).subscribe({\r\n next: (response) => {\r\n this.gridData = response.data;\r\n this.totalRecords = response.count;\r\n this.isLoading = false;\r\n },\r\n error: (error) => {\r\n this.isLoading = false;\r\n }\r\n });\r\n }\r\n\r\n setFilter(filter: FilterType): void {\r\n this.activeFilter = filter;\r\n this.applyFilter();\r\n }\r\n\r\n applyFilter(): void {\r\n const request: GridDataRequest = {\r\n from: 0,\r\n size: this.rowsPerPage,\r\n sortField: this.sortField,\r\n sortDirection: this.sortOrder,\r\n searchString: '',\r\n userFilters: this.getUserFiltersForActiveFilter()\r\n };\r\n\r\n this.isLoading = true;\r\n this.invitationGridService.getInvitationCodes(request).subscribe({\r\n next: (response) => {\r\n this.gridData = response.data;\r\n this.totalRecords = response.count;\r\n this.isLoading = false;\r\n },\r\n error: (error) => {\r\n this.isLoading = false;\r\n }\r\n });\r\n }\r\n\r\n private getUserFiltersForActiveFilter(): any[] {\r\n switch (this.activeFilter) {\r\n case 'pending':\r\n return [{\r\n publicFieldName: 'status',\r\n operatorType: 'Equals',\r\n values: ['pending']\r\n }];\r\n case 'active':\r\n return [{\r\n publicFieldName: 'status',\r\n operatorType: 'AnyOf',\r\n values: ['account_created', 'registration_started']\r\n }];\r\n case 'inactive':\r\n return [{\r\n publicFieldName: 'status',\r\n operatorType: 'AnyOf',\r\n values: ['revoked', 'expired']\r\n }];\r\n case 'deleted':\r\n return [{\r\n publicFieldName: 'status',\r\n operatorType: 'Equals',\r\n values: ['deleted']\r\n }];\r\n default:\r\n return [];\r\n }\r\n }\r\n\r\n getFilterDisplayName(filter: FilterType): string {\r\n const displayNames = {\r\n 'all': 'All Codes',\r\n 'pending': 'Pending',\r\n 'active': 'Active',\r\n 'inactive': 'Inactive',\r\n 'deleted': 'Deleted'\r\n };\r\n return displayNames[filter];\r\n }\r\n\r\n onActionButtonClicked(event: any): void {\r\n }\r\n\r\n onCellClicked(event: any): void {\r\n }\r\n}\r\n","import { GridColumn } from '@naniteninja/ionic-lib';\r\n\r\nexport interface WaitlistMember {\r\n id: string;\r\n name: string;\r\n email: string;\r\n userType: 'premium' | 'standard' | 'vip';\r\n priority: 'high' | 'normal';\r\n joined: Date;\r\n waitTime: number;\r\n notes: string;\r\n status?: string;\r\n convertedAt?: Date;\r\n convertedToCodeId?: string;\r\n}\r\n\r\nexport const waitlistGridColumns: GridColumn[] = [\r\n {\r\n name: 'name',\r\n label: 'Name',\r\n visible: true,\r\n sortable: true,\r\n width: 200,\r\n controlType: 'Text',\r\n editable: false\r\n },\r\n {\r\n name: 'email',\r\n label: 'Email',\r\n visible: true,\r\n sortable: true,\r\n width: 250,\r\n controlType: 'Text',\r\n editable: false\r\n },\r\n {\r\n name: 'userType',\r\n label: 'User Type',\r\n visible: true,\r\n sortable: true,\r\n width: 150,\r\n controlType: 'Text',\r\n editable: false\r\n },\r\n {\r\n name: 'priority',\r\n label: 'Priority',\r\n visible: true,\r\n sortable: true,\r\n width: 120,\r\n controlType: 'Text',\r\n editable: false\r\n },\r\n {\r\n name: 'joined',\r\n label: 'Joined',\r\n visible: true,\r\n sortable: true,\r\n width: 120,\r\n controlType: 'Text',\r\n editable: false\r\n },\r\n {\r\n name: 'waitTime',\r\n label: 'Wait Time',\r\n visible: true,\r\n sortable: true,\r\n width: 100,\r\n controlType: 'Text',\r\n editable: false\r\n },\r\n {\r\n name: 'notes',\r\n label: 'Notes',\r\n visible: true,\r\n sortable: false,\r\n width: 200,\r\n controlType: 'Text',\r\n editable: false\r\n }\r\n];\r\n","<h2 mat-dialog-title class=\"text-white !pb-2 !text-xl font-semibold\">Convert to Invitation Code</h2>\r\n\r\n<mat-dialog-content class=\" !pb-0 !min-w-[500px]\">\r\n <div class=\" space-y-6\">\r\n <div class=\"text-md text-gray-300\">\r\n Generate invitation codes for <span class=\"font-semibold text-white\">{{data.selectedCount}}</span> selected waitlist member{{data.selectedCount > 1 ? 's' : ''}}\r\n </div>\r\n <div class=\"border-t border-gray-700\"></div>\r\n <div class=\"mat-dialog-instructions\">\r\n <h3 class=\"text-md font-medium text-white mb-6\">What happens next?</h3>\r\n <div class=\"bg-gray-800/30 border border-gray-700 rounded-lg p-4 space-y-3\">\r\n <div class=\"dialog-instruction flex items-start\">\r\n <div class=\"bullet-point mr-3 mt-2\"></div>\r\n <span class=\"text-gray-300\">Invitation codes will be generated for each selected member</span>\r\n </div>\r\n <div class=\"dialog-instruction flex items-start\">\r\n <div class=\"bullet-point mr-3 mt-2\"></div>\r\n <span class=\"text-gray-300\">Codes will be tied to their email addresses</span>\r\n </div>\r\n <div class=\"dialog-instruction flex items-start\">\r\n <div class=\"bullet-point mr-3 mt-2\"></div>\r\n <span class=\"text-gray-300\">Members will be removed from the waitlist</span>\r\n </div>\r\n <div class=\"dialog-instruction flex items-start\">\r\n <div class=\"bullet-point mr-3 mt-2\"></div>\r\n <span class=\"text-gray-300\">Codes bypass user type limits</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"border-t border-gray-700\"></div>\r\n <div>\r\n <h3 class=\"text-md font-medium text-white mb-2\">Invitation Expiry Period</h3>\r\n <div class=\"space-y-4\">\r\n <div>\r\n <select\r\n [(ngModel)]=\"expiryDays\"\r\n class=\"w-full px-4 py-3 bg-gray-800 border border-gray-700 rounded-lg text-white focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 cursor-pointer\">\r\n <option *ngFor=\"let days of expiryOptions\" [value]=\"days\" [selected]=\"days === 30\">\r\n {{days}} day{{days > 1 ? 's' : ''}}\r\n </option>\r\n </select>\r\n </div>\r\n <div class=\"flex items-start\">\r\n <span class=\"mat-dialog-message text-gray-300\">Code will expire if account is not created within this period</span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n<div class=\"mb-6\">\r\n <h3 class=\"text-md font-medium text-white mb-2\">Access Level</h3>\r\n <div class=\"space-y-2\">\r\n <label class=\"flex items-center space-x-2 cursor-pointer\">\r\n <input type=\"radio\" [(ngModel)]=\"accessLevel\" value=\"basic\" class=\"text-blue-500\">\r\n <span class=\"text-gray-300\">Basic Access</span>\r\n </label>\r\n <label class=\"flex items-center space-x-2 cursor-pointer\">\r\n <input type=\"radio\" [(ngModel)]=\"accessLevel\" value=\"premium\" class=\"text-blue-500\">\r\n <span class=\"text-gray-300\">Premium Access</span>\r\n </label>\r\n <label class=\"flex items-center space-x-2 cursor-pointer\">\r\n <input type=\"radio\" [(ngModel)]=\"accessLevel\" value=\"admin\" class=\"text-blue-500\">\r\n <span class=\"text-gray-300\">Admin Access</span>\r\n </label>\r\n <label class=\"flex items-center space-x-2 cursor-pointer\">\r\n <input type=\"radio\" [(ngModel)]=\"accessLevel\" value=\"vip\" class=\"text-blue-500\">\r\n <span class=\"text-gray-300\">VIP Access</span>\r\n </label>\r\n </div>\r\n</div>\r\n </div>\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions align=\"end\" class=\"!p-6 !pt-4 !border-t !border-gray-700\">\r\n <button\r\n mat-stroked-button\r\n (click)=\"onCancel()\"\r\n class=\"!border-gray-600 !text-gray-300 hover:!bg-gray-700 hover:!border-gray-500\">\r\n Cancel\r\n </button>\r\n <button\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"onConvert()\"\r\n [disabled]=\"isConverting\"\r\n class=\"!bg-blue-600 hover:!bg-blue-700 disabled:!opacity-50 disabled:!cursor-not-allowed\">\r\n <span *ngIf=\"isConverting\" class=\"flex items-center space-x-2\">\r\n <mat-icon class=\"animate-spin !text-lg\">refresh</mat-icon>\r\n <span>Generating...</span>\r\n </span>\r\n <span *ngIf=\"!isConverting\" class=\"flex items-center space-x-2\">\r\n <mat-icon>send</mat-icon>\r\n <span>Generate {{data.selectedCount}} Invitation{{data.selectedCount > 1 ? 's' : ''}}</span>\r\n </span>\r\n </button>\r\n</mat-dialog-actions>\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { WaitlistMember } from '../../../models/waitlist-grid.model';\r\n\r\nexport interface ConvertToInvitationDialogData {\r\n selectedMembers: WaitlistMember[];\r\n selectedCount: number;\r\n}\r\n\r\n@Component({\r\n selector: 'app-convert-to-invitation-dialog',\r\n templateUrl: './convert-to-invitation-dialog.component.html',\r\n styleUrls: ['./convert-to-invitation-dialog.component.scss'],\r\n standalone:false\r\n})\r\nexport class ConvertToInvitationDialogComponent {\r\n expiryDays = 30;\r\n isConverting = false;\r\n expiryOptions = [7, 14, 30, 60, 90];\r\n accessLevel: 'basic' | 'premium' | 'admin' | 'vip' = 'basic';\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<ConvertToInvitationDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: ConvertToInvitationDialogData\r\n ) {}\r\n\r\n onCancel(): void {\r\n this.dialogRef.close(false);\r\n }\r\n\r\n onConvert(): void {\r\n this.isConverting = true;\r\n\r\n const result = {\r\n expiryDays: this.expiryDays,\r\n accessLevel: this.accessLevel,\r\n selectedMemberIds: this.data.selectedMembers.map(m => m.id),\r\n selectedMembers: this.data.selectedMembers,\r\n totalInvitations: this.data.selectedCount\r\n };\r\n\r\n this.dialogRef.close(result);\r\n this.isConverting = false;\r\n }\r\n}","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { WaitlistStatsCard } from '../models/waitlist.interface';\r\nimport { ApiUrlBuilder } from '../utils/api-url-builder';\r\nimport { INVITATION_CODE_CONFIG, InvitationCodeConfig } from '../invitation-code.module';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WaitlistCodeService {\r\n private apiUrlBuilder: ApiUrlBuilder;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n @Inject(INVITATION_CODE_CONFIG) private config: InvitationCodeConfig\r\n ) {\r\n this.apiUrlBuilder = new ApiUrlBuilder(config);\r\n }\r\n\r\n getWaitlistStats(): Observable<WaitlistStatsCard[]> {\r\n return this.http.get<any>(this.apiUrlBuilder.buildUrl('waitlisted-users/stats')).pipe(\r\n map(stats => {\r\n if (!stats.success) {\r\n return this.getDefaultStats();\r\n }\r\n\r\n const totalStats = stats.total || stats;\r\n\r\n return [\r\n {\r\n title: 'Waitlisted',\r\n value: totalStats.waitlisted || 0,\r\n description: 'Members waiting for access',\r\n icon: 'schedule',\r\n color: 'bg-yellow-500'\r\n },\r\n {\r\n title: 'Invited',\r\n value: totalStats.invited || 0,\r\n description: 'Invitations sent',\r\n icon: 'send',\r\n color: 'bg-blue-500'\r\n },\r\n {\r\n title: 'Active Users',\r\n value: totalStats.currentUsers || 0,\r\n description: 'Currently active users',\r\n icon: 'people',\r\n color: 'bg-green-500'\r\n },\r\n {\r\n title: 'User Limit',\r\n value: totalStats.userLimit || 0,\r\n description: 'Maximum allowed users',\r\n icon: 'security',\r\n color: 'bg-purple-500'\r\n }\r\n ];\r\n })\r\n );\r\n }\r\n\r\n private getDefaultStats(): WaitlistStatsCard[] {\r\n return [\r\n {\r\n title: 'Waitlisted',\r\n value: 0,\r\n description: 'Members waiting for access',\r\n icon: 'schedule',\r\n color: 'bg-yellow-500'\r\n },\r\n {\r\n title: 'Invited',\r\n value: 0,\r\n description: 'Invitations sent',\r\n icon: 'send',\r\n color: 'bg-blue-500'\r\n },\r\n {\r\n title: 'Active Users',\r\n value: 0,\r\n description: 'Currently active users',\r\n icon: 'people',\r\n color: 'bg-green-500'\r\n }\r\n ];\r\n }\r\n\r\n updatePriority(memberId: string, priority: 'high' | 'normal'): Observable<any> {\r\n return this.http.put(this.apiUrlBuilder.buildUrl(`waitlisted-users/${memberId}/invite`), {});\r\n }\r\n\r\n removeFromWaitlist(memberId: string): Observable<void> {\r\n return this.http.delete<void>(this.apiUrlBuilder.buildUrl(`waitlisted-users/${memberId}`));\r\n }\r\n\r\n restoreToWaitlist(memberId: string): Observable<void> {\r\n return new Observable();\r\n }\r\n\r\n updateStatus(memberId: string, status: string): Observable<void> {\r\n return this.http.post<void>(this.apiUrlBuilder.buildUrl(`waitlisted-users/${memberId}/invite`), {\r\n accessLevel: 'basic'\r\n });\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, BehaviorSubject, Subject } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { GridDataRequest, GridRow } from '@naniteninja/ionic-lib';\r\nimport { WaitlistMember } from '../models/waitlist-grid.model';\r\nimport { InvitationCodeService } from './invitation-code.service';\r\nimport { WaitlistCodeService } from './waitlist-code.service';\r\nimport { ApiUrlBuilder } from '../utils/api-url-builder';\r\nimport { INVITATION_CODE_CONFIG, InvitationCodeConfig } from '../invitation-code.module';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WaitlistGridService {\r\n private refreshGrid$ = new BehaviorSubject<void>(undefined);\r\n private destroy$ = new Subject<void>();\r\n private apiUrlBuilder: ApiUrlBuilder;\r\n\r\n constructor(\r\n private invitationCodeService: InvitationCodeService,\r\n private waitlistCodeService: WaitlistCodeService,\r\n private http: HttpClient,\r\n @Inject(INVITATION_CODE_CONFIG) private config: InvitationCodeConfig\r\n ) {\r\n this.apiUrlBuilder = new ApiUrlBuilder(config);\r\n }\r\n\r\n get refreshTrigger$(): Observable<void> {\r\n return this.refreshGrid$.asObservable();\r\n }\r\n\r\n triggerRefresh(): void {\r\n this.refreshGrid$.next();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n getWaitlistMembers(event: GridDataRequest): Observable<{ data: GridRow<WaitlistMember>[], count: number }> {\r\n const page = Math.floor(event.from / event.size) + 1;\r\n const limit = event.size;\r\n\r\n return this.invitationCodeService.getWaitlistMembers(\r\n page,\r\n limit,\r\n event.userFilters,\r\n event.sortField,\r\n event.sortDirection === 'Ascending' ? 'asc' : 'desc',\r\n event.searchString\r\n ).pipe(\r\n map(response => {\r\n const gridRows: GridRow<WaitlistMember>[] = response.data.map(item => {\r\n const gridItem: WaitlistMember = {\r\n id: item.id,\r\n name: item.name,\r\n email: item.email,\r\n userType: item.userType,\r\n priority: item.priority,\r\n joined: item.joined,\r\n waitTime: item.waitTime,\r\n notes: item.notes,\r\n status: item.status,\r\n convertedAt: item.convertedAt,\r\n convertedToCodeId: item.convertedToCodeId\r\n };\r\n\r\n return {\r\n id: item.id,\r\n data: gridItem,\r\n rowMenuItems: this.createActionMenu(gridItem),\r\n hasEditPermissions: true,\r\n hasDeletePermissions: true,\r\n displayValues: this.createDisplayValues(gridItem)\r\n };\r\n });\r\n\r\n return { data: gridRows, count: response.count };\r\n })\r\n );\r\n }\r\n\r\n private createDisplayValues(item: WaitlistMember): any {\r\n return {\r\n name: item.name,\r\n email: item.email,\r\n userType: this.getUserTypeDisplay(item.userType),\r\n priority: this.getPriorityDisplay(item.priority),\r\n joined: this.formatDate(item.joined),\r\n waitTime: `${item.waitTime} days`,\r\n notes: item.notes,\r\n status: this.getStatusDisplay(item.status || 'pending'),\r\n id: item.id\r\n };\r\n }\r\n\r\n private formatDate(date: Date | string): string {\r\n if (!date) return 'N/A';\r\n const d = new Date(date);\r\n return isNaN(d.getTime()) ? 'Invalid Date' : d.toLocaleDateString('en-US', {\r\n year: 'numeric',\r\n month: 'short',\r\n day: 'numeric'\r\n });\r\n }\r\n\r\n private getUserTypeDisplay(userType: string): string {\r\n const userTypeMap: { [key: string]: string } = {\r\n 'premium': 'Premium Member',\r\n 'standard': 'Standard Member',\r\n 'vip': 'VIP Member'\r\n };\r\n return userTypeMap[userType] || userType;\r\n }\r\n\r\n private getPriorityDisplay(priority: string): string {\r\n const priorityMap: { [key: string]: string } = {\r\n 'high': 'High Priority',\r\n 'normal': 'Normal'\r\n };\r\n return priorityMap[priority] || priority;\r\n }\r\n\r\n private getStatusDisplay(status: string): string {\r\n const statusMap: { [key: string]: string } = {\r\n 'pending': 'Pending',\r\n 'converted': 'Converted',\r\n 'removed': 'Removed',\r\n 'invited': 'Invited'\r\n };\r\n return statusMap[status] || status || 'Pending';\r\n }\r\n\r\n private createActionMenu(item: WaitlistMember): MenuItem[] {\r\n const menuItems: MenuItem[] = [\r\n {\r\n label: 'Action',\r\n disabled: true,\r\n styleClass: 'menu-header'\r\n },\r\n {\r\n separator: true\r\n }\r\n ];\r\n\r\n if (item.status === 'pending' || item.status === 'waitlisted') {\r\n menuItems.push({\r\n label: 'Send Invitation',\r\n icon: 'pi pi-send',\r\n command: () => this.sendInvitation(item)\r\n });\r\n\r\n menuItems.push({\r\n label: 'Remove from Waitlist',\r\n icon: 'pi pi-trash',\r\n command: () => this.removeFromWaitlist(item)\r\n });\r\n } else if (item.status === 'invited' || item.status === 'waitlist_invited') {\r\n menuItems.push({\r\n label: 'View Invitation',\r\n icon: 'pi pi-eye',\r\n command: () => this.viewInvitation(item)\r\n });\r\n\r\n menuItems.push({\r\n label: 'Remove Invitation',\r\n icon: 'pi pi-times',\r\n command: () => this.removeFromWaitlist(item)\r\n });\r\n } else if (item.status === 'converted') {\r\n menuItems.push({\r\n label: 'View Invitation Code',\r\n icon: 'pi pi-eye',\r\n command: () => this.viewInvitation(item)\r\n });\r\n }\r\n\r\n return menuItems;\r\n }\r\n\r\n private sendInvitation(item: WaitlistMember): void {\r\n if (confirm(`Send invitation to \"${item.name}\"?`)) {\r\n this.http.post(this.apiUrlBuilder.buildUrl(`waitlisted-users/${item.id}/invite`), {\r\n accessLevel: 'basic',\r\n expiryDays: 30\r\n }).subscribe({\r\n next: (response: any) => {\r\n if (response.success) {\r\n alert(`Invitation sent to \"${item.name}\"!`);\r\n this.triggerRefresh();\r\n } else {\r\n alert(`Failed to send invitation: ${response.error || 'Unknown error'}`);\r\n }\r\n },\r\n error: (error) => {\r\n alert(`Failed to send invitation: ${error.message}`);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private updatePriority(item: WaitlistMember): void {\r\n const newPriority = item.priority === 'high' ? 'normal' : 'high';\r\n\r\n if (confirm(`Are you sure you want to change priority of \"${item.name}\" to ${newPriority}?`)) {\r\n this.waitlistCodeService.updatePriority(item.id, newPriority).subscribe({\r\n next: () => {\r\n alert(`Priority for \"${item.name}\" has been updated to ${newPriority}!`);\r\n this.triggerRefresh();\r\n },\r\n error: (error: any) => {\r\n alert(`Failed to update priority: ${error.message}`);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private removeFromWaitlist(item: WaitlistMember): void {\r\n if (confirm(`Are you sure you want to remove \"${item.name}\" from the waitlist?`)) {\r\n this.waitlistCodeService.removeFromWaitlist(item.id).subscribe({\r\n next: () => {\r\n alert(`\"${item.name}\" has been removed from the waitlist!`);\r\n this.triggerRefresh();\r\n },\r\n error: (error: any) => {\r\n alert(`Failed to remove from waitlist: ${error.message}`);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private restoreToWaitlist(item: WaitlistMember): void {\r\n if (confirm(`Are you sure you want to restore \"${item.name}\" to the waitlist?`)) {\r\n this.waitlistCodeService.restoreToWaitlist(item.id).subscribe({\r\n next: () => {\r\n alert(`\"${item.name}\" has been restored to the waitlist!`);\r\n this.triggerRefresh();\r\n },\r\n error: (error: any) => {\r\n alert(`Failed to restore: ${error.message}`);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private viewInvitation(item: WaitlistMember): void {\r\n if (item.convertedToCodeId) {\r\n this.http.get(this.apiUrlBuilder.buildUrl(`invitation-codes/${item.convertedToCodeId}`)).subscribe({\r\n next: (invitation: any) => {\r\n alert(`Invitation Details:\\n\\n` +\r\n `Code: ${invitation.code}\\n` +\r\n `Status: ${invitation.status}\\n` +\r\n `User Type: ${invitation.userType}\\n` +\r\n `Access Level: ${invitation.accessLevel}\\n` +\r\n `Expires: ${new Date(invitation.expires).toLocaleDateString()}\\n` +\r\n `Created: ${new Date(invitation.createdAt).toLocaleDateString()}`);\r\n },\r\n error: () => {\r\n alert(`This member was converted to invitation code: ${item.convertedToCodeId}\\nYou can view it in the invitation codes grid.`);\r\n }\r\n });\r\n } else if (item.status === 'invited' || item.status === 'waitlist_invited') {\r\n this.http.get(this.apiUrlBuilder.buildUrl(`waitlisted-users/${item.id}`)).subscribe({\r\n next: (userDetails: any) => {\r\n if (userDetails.data?.invitationCode) {\r\n alert(`Invitation Code: ${userDetails.data.invitationCode}\\n` +\r\n `Status: Invited\\n` +\r\n `Invited On: ${new Date(userDetails.data.waitlistInvitedAt).toLocaleDateString()}\\n` +\r\n `Expires: ${new Date(userDetails.data.waitlistInvitationExpiry).toLocaleDateString()}`);\r\n } else {\r\n alert('No invitation code found for this member.');\r\n }\r\n },\r\n error: () => {\r\n alert('No invitation code found for this member.');\r\n }\r\n });\r\n } else {\r\n alert('No invitation code found for this member.');\r\n }\r\n }\r\n\r\n bulkConvertToInvitations(data: { waitlistMemberIds: string[], expiryDays: number, accessLevel: string }): Observable<any> {\r\n return this.invitationCodeService.bulkGenerateFromWaitlist(data).pipe(\r\n map(response => {\r\n this.triggerRefresh();\r\n return response;\r\n })\r\n );\r\n }\r\n}\r\n","<div class=\"waitlist-page min-h-screen\">\r\n <div class=\"waitlist-container\">\r\n <app-waitlist-stats-overview></app-waitlist-stats-overview>\r\n </div>\r\n\r\n <div class=\"main-grid-section p-6\">\r\n <!-- Header Section -->\r\n <div class=\"code-management-header mb-6 p-3\">\r\n <div class=\"flex flex-col lg:flex-row lg:items-center lg:justify-between\">\r\n <div class=\"mb-4 lg:mb-0\">\r\n <h3 class=\"text-xl font-semibold text-white mb-2\">Waitlist Members</h3>\r\n <p class=\"text-gray-400 text-sm\">\r\n Manage waitlist and convert members to invitation codes\r\n </p>\r\n </div>\r\n <div class=\"flex space-x-2\" *ngIf=\"checkedRows.size > 0\">\r\n <button\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"openConvertModal()\"\r\n class=\"!bg-blue-600 hover:!bg-blue-700 flex items-center gap-2\">\r\n <mat-icon class=\"!text-lg\">send</mat-icon>\r\n Convert {{checkedRows.size}} to Invite\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Filter Tabs -->\r\n <div class=\"filter-tabs mb-6\">\r\n <div class=\"filter-container p-1.5 bg-gray-800 border border-gray-700 rounded-xl w-fit\">\r\n <div class=\"flex space-x-0.5\">\r\n <button\r\n *ngFor=\"let filter of filters\"\r\n (click)=\"setFilter(filter)\"\r\n [class]=\"activeFilter === filter\r\n ? 'selected-filter px-4 py-2 text-sm font-medium transition-colors'\r\n : 'unselected-filter px-4 py-2 text-sm font-medium transition-colors'\">\r\n {{ getFilterDisplayName(filter) }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Grid Section with click handler -->\r\n <div class=\"grid-placeholder bg-gray-800 rounded-lg border border-gray-700\">\r\n <lib-grid\r\n [data]=\"gridData\"\r\n [columns]=\"columns\"\r\n [isLoading]=\"isLoading\"\r\n [totalRecords]=\"totalRecords\"\r\n [rowsPerPage]=\"rowsPerPage\"\r\n [rowsPerPageOptions]=\"rowsPerPageOptions\"\r\n [sortField]=\"sortField\"\r\n [sortOrder]=\"sortOrder\"\r\n [enableSelection]=\"false\"\r\n [enableCreate]=\"false\"\r\n [enableRefresh]=\"false\"\r\n [enableTrash]=\"false\"\r\n [enableGridFilters]=\"false\"\r\n [hideToolbar]=\"true\"\r\n [hideSettings]=\"true\"\r\n [hideRowMenu]=\"false\"\r\n (lazyLoad)=\"onLazyLoad($event)\"\r\n (cellClicked)=\"onCellClicked($event)\"\r\n class=\"dark-theme-grid w-full\">\r\n </lib-grid>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, OnInit, ChangeDetectorRef, OnDestroy } from '@angular/core';\r\nimport { GridColumn, GridDataRequest, GridRow, GridSortDirection } from '@naniteninja/ionic-lib';\r\nimport { WaitlistMember, waitlistGridColumns } from '../../models/waitlist-grid.model';\r\nimport { WaitlistGridService } from '../../services/waitlist-grid.service';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ConvertToInvitationDialogComponent, ConvertToInvitationDialogData } from '../../components/modal/convert-to-invitation-dialog/convert-to-invitation-dialog.component';\r\n\r\ntype FilterType = 'all' | 'high' | 'standard' | 'premium' | 'vip';\r\n\r\n@Component({\r\n selector: 'app-waitlist',\r\n templateUrl: './waitlist.component.html',\r\n styleUrls: ['./waitlist.component.scss'],\r\n standalone: false\r\n})\r\nexport class WaitlistComponent implements OnInit, OnDestroy {\r\n gridData: GridRow<any>[] = [];\r\n columns: GridColumn[] = [];\r\n isConverting = false;\r\n\r\n isLoading = false;\r\n totalRecords = 0;\r\n rowsPerPage = 10;\r\n rowsPerPageOptions = [5,10, 25, 50];\r\n sortField = 'joined';\r\n sortOrder: GridSortDirection = 'Descending';\r\n\r\n checkedRows = new Set<string>();\r\n activeFilter: FilterType = 'all';\r\n filters: FilterType[] = ['all', 'high', 'standard', 'premium', 'vip'];\r\n\r\n private checkboxHtmlCache = new Map<string, string>();\r\n private destroy$ = new Subject<void>();\r\n\r\n constructor(\r\n private waitlistGridService: WaitlistGridService,\r\n private cdr: ChangeDetectorRef,\r\n private dialog: MatDialog,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.initializeColumns();\r\n this.loadGridData();\r\n this.subscribeToAutoRefresh();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n private subscribeToAutoRefresh(): void {\r\n this.waitlistGridService.refreshTrigger$\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.loadGridData();\r\n });\r\n }\r\n\r\n initializeColumns(): void {\r\n const checkboxColumn: any = {\r\n name: 'checkbox',\r\n label: '',\r\n visible: true,\r\n sortable: false,\r\n width: 60,\r\n controlType: 'Text',\r\n editable: false\r\n };\r\n\r\n this.columns = [...waitlistGridColumns, checkboxColumn];\r\n }\r\n\r\n createCheckboxHtml(memberId: string): string {\r\n const cacheKey = `${memberId}-${this.checkedRows.has(memberId)}`;\r\n\r\n if (this.checkboxHtmlCache.has(cacheKey)) {\r\n return this.checkboxHtmlCache.get(cacheKey)!;\r\n }\r\n\r\n const isChecked = this.checkedRows.has(memberId);\r\n const checkboxHtml = isChecked ? this.createCheckedHtml(memberId) : this.createUncheckedHtml(memberId);\r\n\r\n this.checkboxHtmlCache.set(cacheKey, checkboxHtml);\r\n return checkboxHtml;\r\n }\r\n\r\n private createCheckedHtml(memberId: string): string {\r\n return `\r\n <div class=\"custom-grid-checkbox checked\"\r\n data-member-id=\"${memberId}\"\r\n style=\"\r\n width: 20px;\r\n height: 20px;\r\n border: 2px solid #3b82f6;\r\n border-radius: 4px;\r\n background: #3b82f6;\r\n cursor: pointer;\r\n position: relative;\r\n display: inline-block;\r\n margin: 0 auto;\r\n \">\r\n <span style=\"position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; font-size: 12px; font-weight: bold;\">✓</span>\r\n </div>\r\n `;\r\n }\r\n\r\n private createUncheckedHtml(memberId: string): string {\r\n return `\r\n <div class=\"custom-grid-checkbox\"\r\n data-member-id=\"${memberId}\"\r\n style=\"\r\n width: 20px;\r\n height: 20px;\r\n border: 2px solid #9ca3af;\r\n border-radius: 4px;\r\n background: transparent;\r\n cursor: pointer;\r\n position: relative;\r\n display: inline-block;\r\n margin: 0 auto;\r\n \"></div>\r\n `;\r\n }\r\n\r\n clearCheckboxCache(): void {\r\n this.checkboxHtmlCache.clear();\r\n }\r\n\r\n enhanceGridData(data: GridRow<WaitlistMember>[]): any[] {\r\n return data.map((row) => {\r\n const enhancedData: any = {\r\n ...row.data,\r\n checkbox: this.createCheckboxHtml(row.data.id)\r\n };\r\n\r\n return {\r\n ...row,\r\n data: enhancedData\r\n };\r\n });\r\n }\r\n\r\n onCellClicked(event: any): void {\r\n if (event.colName === 'checkbox' && event.data?.id) {\r\n const memberId = event.data.id;\r\n this.toggleCheckbox(memberId);\r\n }\r\n }\r\n\r\n toggleCheckbox(memberId: string): void {\r\n const wasChecked = this.checkedRows.has(memberId);\r\n\r\n if (wasChecked) {\r\n this.checkedRows.delete(memberId);\r\n } else {\r\n this.checkedRows.add(memberId);\r\n }\r\n\r\n this.checkboxHtmlCache.delete(`${memberId}-${wasChecked}`);\r\n this.checkboxHtmlCache.delete(`${memberId}-${!wasChecked}`);\r\n\r\n this.updateSingleRow(memberId);\r\n }\r\n\r\n updateSingleRow(memberId: string): void {\r\n const rowIndex = this.gridData.findIndex(row => row.data.id === memberId);\r\n if (rowIndex !== -1) {\r\n const newCheckboxHtml = this.createCheckboxHtml(memberId);\r\n\r\n const updatedGridData = [...this.gridData];\r\n updatedGridData[rowIndex] = {\r\n ...updatedGridData[rowIndex],\r\n data: {\r\n ...updatedGridData[rowIndex].data,\r\n checkbox: newCheckboxHtml\r\n }\r\n };\r\n\r\n this.gridData = updatedGridData;\r\n this.cdr.markForCheck();\r\n }\r\n }\r\n\r\n updateGridData(): void {\r\n this.clearCheckboxCache();\r\n\r\n const newGridData = this.gridData.map((row) => {\r\n const enhancedData: any = {\r\n ...row.data,\r\n checkbox: this.createCheckboxHtml(row.data.id)\r\n };\r\n\r\n return {\r\n ...row,\r\n data: enhancedData\r\n };\r\n });\r\n\r\n this.gridData = [...newGridData];\r\n this.cdr.markForCheck();\r\n }\r\n\r\n loadGridData(): void {\r\n const request: GridDataRequest = {\r\n from: 0,\r\n size: this.rowsPerPage,\r\n sortField: this.sortField,\r\n sortDirection: this.sortOrder,\r\n searchString: ''\r\n };\r\n\r\n this.isLoading = true;\r\n this.waitlistGridService.getWaitlistMembers(request)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response) => {\r\n this.clearCheckboxCache();\r\n this.gridData = this.enhanceGridData(response.data);\r\n this.totalRecords = response.count;\r\n this.isLoading = false;\r\n this.cdr.markForCheck();\r\n },\r\n error: (error) => {\r\n this.isLoading = false;\r\n this.cdr.markForCheck();\r\n }\r\n });\r\n }\r\n\r\n onLazyLoad(event: GridDataRequest): void {\r\n this.isLoading = true;\r\n this.waitlistGridService.getWaitlistMembers(event)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response) => {\r\n this.clearCheckboxCache();\r\n this.gridData = this.enhanceGridData(response.data);\r\n this.totalRecords = response.count;\r\n this.isLoading = false;\r\n this.cdr.markForCheck();\r\n },\r\n error: (error) => {\r\n this.isLoading = false;\r\n this.cdr.markForCheck();\r\n }\r\n });\r\n }\r\n\r\n setFilter(filter: FilterType): void {\r\n this.activeFilter = filter;\r\n this.applyFilter();\r\n }\r\n\r\n applyFilter(): void {\r\n const request: GridDataRequest = {\r\n from: 0,\r\n size: this.rowsPerPage,\r\n sortField: this.sortField,\r\n sortDirection: this.sortOrder,\r\n searchString: '',\r\n userFilters: this.getUserFilters()\r\n };\r\n\r\n this.isLoading = true;\r\n this.waitlistGridService.getWaitlistMembers(request)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response) => {\r\n this.clearCheckboxCache();\r\n this.gridData = this.enhanceGridData(response.data);\r\n this.totalRecords = response.count;\r\n this.isLoading = false;\r\n this.cdr.markForCheck();\r\n },\r\n error: (error) => {\r\n this.isLoading = false;\r\n this.cdr.markForCheck();\r\n }\r\n });\r\n }\r\n\r\n private getUserFilters(): any[] {\r\n switch (this.activeFilter) {\r\n case 'high': return [{ publicFieldName: 'priority', operatorType: 'Equals', values: ['high'] }];\r\n case 'standard': return [{ publicFieldName: 'userType', operatorType: 'Equals', values: ['standard'] }];\r\n case 'premium': return [{ publicFieldName: 'userType', operatorType: 'Equals', values: ['premium'] }];\r\n case 'vip': return [{ publicFieldName: 'userType', operatorType: 'Equals', values: ['vip'] }];\r\n default: return [];\r\n }\r\n }\r\n\r\n getFilterDisplayName(filter: FilterType): string {\r\n const names = { 'all': 'All Members', 'high': 'High Priority', 'standard': 'Standard', 'premium': 'Premium', 'vip': 'VIP' };\r\n return names[filter];\r\n }\r\n\r\n selectAll(): void {\r\n this.clearCheckboxCache();\r\n this.gridData.forEach(row => this.checkedRows.add(row.data.id));\r\n this.updateGridData();\r\n }\r\n\r\n clearAll(): void {\r\n this.clearCheckboxCache();\r\n this.checkedRows.clear();\r\n this.updateGridData();\r\n }\r\n\r\n openConvertModal(): void {\r\n if (this.checkedRows.size === 0) {\r\n return;\r\n }\r\n\r\n const selectedMembers = this.getSelectedMembers();\r\n\r\n const dialogRef = this.dialog.open(ConvertToInvitationDialogComponent, {\r\n width: 'auto',\r\n maxWidth: '500px',\r\n maxHeight: '85vh',\r\n panelClass: 'convert-to-invitation-dialog',\r\n autoFocus: false,\r\n disableClose: true,\r\n data: {\r\n selectedMembers: selectedMembers,\r\n selectedCount: this.checkedRows.size\r\n } as ConvertToInvitationDialogData\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: any) => {\r\n if (result) {\r\n this.convertToInvitations(result);\r\n }\r\n });\r\n }\r\n\r\n convertToInvitations(data: any): void {\r\n const conversionData = {\r\n waitlistMemberIds: data.selectedMemberIds,\r\n expiryDays: data.expiryDays,\r\n accessLevel: data.accessLevel || 'basic'\r\n };\r\n\r\n this.isConverting = true;\r\n\r\n this.waitlistGridService.bulkConvertToInvitations(conversionData).subscribe({\r\n next: (response) => {\r\n this.checkedRows.clear();\r\n this.clearCheckboxCache();\r\n this.isConverting = false;\r\n },\r\n error: (error) => {\r\n this.isConverting = false;\r\n }\r\n });\r\n }\r\n\r\n getSelectedMembers(): WaitlistMember[] {\r\n return this.gridData\r\n .filter(row => this.checkedRows.has(row.data.id))\r\n .map(row => {\r\n const { checkbox, ...memberData } = row.data;\r\n return memberData as WaitlistMember;\r\n });\r\n }\r\n}\r\n","import { Component, Output, EventEmitter } from '@angular/core';\r\n\r\ntype MainTabType = 'codes' | 'waitlist';\r\ntype FilterType = 'all' | 'pending' | 'active' | 'inactive';\r\n\r\n@Component({\r\n selector: 'app-code-management-header',\r\n templateUrl: './code-management-header.component.html',\r\n styleUrls: ['./code-management-header.component.scss'],\r\n standalone:false\r\n})\r\nexport class CodeManagementHeaderComponent {\r\n activeTab: MainTabType = 'codes';\r\n activeFilter: FilterType = 'all';\r\n\r\n @Output() tabChanged = new EventEmitter<MainTabType>();\r\n @Output() filterChanged = new EventEmitter<FilterType>();\r\n\r\n setActiveTab(tab: MainTabType): void {\r\n this.activeTab = tab;\r\n this.tabChanged.emit(tab);\r\n }\r\n\r\n setActiveFilter(filter: FilterType): void {\r\n this.activeFilter = filter;\r\n this.filterChanged.emit(filter);\r\n }\r\n\r\n}\r\n","<div class=\"mb-6\">\r\n <!-- Tab Navigation -->\r\n <div class=\"tab-container p-1.5 bg-gray-800 border border-gray-700 rounded-xl w-fit\">\r\n <div class=\"flex space-x-0.5\">\r\n <button\r\n (click)=\"setActiveTab('codes')\"\r\n [class]=\"activeTab === 'codes'\r\n ? 'selected-tab px-4 py-2 text-sm font-medium transition-colors'\r\n : 'unselected-tab px-4 py-2 text-sm font-medium transition-colors'\">\r\n Invitation Codes\r\n </button>\r\n <button\r\n (click)=\"setActiveTab('waitlist')\"\r\n [class]=\"activeTab === 'waitlist'\r\n ? 'selected-tab px-4 py-2 text-sm font-medium transition-colors'\r\n : 'unselected-tab px-4 py-2 text-sm font-medium transition-colors'\">\r\n Waitlist\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n","// generate-code-dialog.component.ts\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { InvitationCodeService } from '../../../services/invitation-code.service';\r\n\r\n\r\n\r\nexport interface GenerateCodeData {\r\n name?: string;\r\n maxUses?: number | null;\r\n expiryDate?: Date | null;\r\n accessLevel: string;\r\n email?: string;\r\n}\r\n\r\ninterface AccessLevel {\r\n value: string;\r\n label: string;\r\n description: string;\r\n icon: string;\r\n userType: string;\r\n}\r\n\r\n@Component({\r\n selector: 'app-generate-code-dialog',\r\n templateUrl: './generate-code-dialog.component.html',\r\n styleUrls: ['./generate-code-dialog.component.scss'],\r\n standalone: false\r\n})\r\nexport class GenerateCodeDialogComponent implements OnInit {\r\n codeForm: FormGroup;\r\n isGenerating = false;\r\n generatedCode: string | null = null;\r\n generatedData: any = null;\r\n showSuccessMessage = false;\r\n\r\n accessLevels: AccessLevel[] = [\r\n {\r\n value: 'basic',\r\n label: 'Basic Access',\r\n description: 'Standard features',\r\n icon: 'person',\r\n userType: 'standard'\r\n },\r\n {\r\n value: 'premium',\r\n label: 'Premium Access',\r\n description: 'Advanced features',\r\n icon: 'star',\r\n userType: 'premium'\r\n },\r\n\r\n {\r\n value: 'vip',\r\n label: 'VIP Access',\r\n description: 'Exclusive features',\r\n icon: 'workspace_premium',\r\n userType: 'vip'\r\n }\r\n ];\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private invitationCodeService: InvitationCodeService,\r\n public dialogRef: MatDialogRef<GenerateCodeDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: GenerateCodeData\r\n ) {\r\n this.codeForm = this.fb.group({\r\n name: ['', [Validators.maxLength(50)]],\r\n maxUses: [null, [Validators.min(1)]],\r\n expiryDate: [null],\r\n accessLevel: ['basic', Validators.required],\r\n email: ['', [Validators.email]]\r\n });\r\n\r\n if (data) {\r\n this.codeForm.patchValue(data);\r\n }\r\n\r\n this.codeForm.valueChanges.subscribe(() => {\r\n this.codeForm.markAsTouched();\r\n });\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n onCancel(): void {\r\n this.dialogRef.close();\r\n }\r\n\r\n onSubmit(): void {\r\n if (this.codeForm.valid) {\r\n this.isGenerating = true;\r\n this.generatedCode = null;\r\n this.generatedData = null;\r\n this.showSuccessMessage = false;\r\n\r\n const formData = this.codeForm.value;\r\n\r\n // Map access level to userType\r\n const selectedAccessLevel = this.accessLevels.find(\r\n level => level.value === formData.accessLevel\r\n );\r\n\r\n const userType = selectedAccessLevel?.userType || 'standard';\r\n\r\n const codeData = {\r\n name: formData.name,\r\n maxUses: formData.maxUses,\r\n expiryDate: formData.expiryDate ? new Date(formData.expiryDate).toISOString() : null,\r\n accessLevel: formData.accessLevel,\r\n userType: userType,\r\n email: formData.email || null\r\n };\r\n\r\n // Call the actual API\r\n this.invitationCodeService.generateCode(codeData).subscribe({\r\n next: (response) => {\r\n this.generatedCode = response.code;\r\n this.generatedData = response;\r\n this.isGenerating = false;\r\n this.showSuccessMessage = true;\r\n\r\n // Show success alert\r\n setTimeout(() => {\r\n alert('Invitation code generated successfully!');\r\n // Close the dialog and pass success result\r\n this.dialogRef.close({\r\n success: true,\r\n data: response,\r\n message: 'Code generated successfully!'\r\n });\r\n }, 500); // Small delay for better UX\r\n },\r\n error: (error) => {\r\n console.error('Error generating code:', error);\r\n this.isGenerating = false;\r\n // Show error message\r\n alert('Failed to generate code. Please try again.');\r\n }\r\n });\r\n } else {\r\n this.markFormGroupTouched(this.codeForm);\r\n }\r\n }\r\n\r\n selectAccessLevel(level: string): void {\r\n this.codeForm.patchValue({ accessLevel: level });\r\n }\r\n\r\n clearExpiryDate(): void {\r\n this.codeForm.patchValue({ expiryDate: null });\r\n }\r\n\r\n copyToClipboard(): void {\r\n if (this.generatedCode) {\r\n navigator.clipboard.writeText(this.generatedCode).then(() => {\r\n // Show copied message\r\n const originalText = event?.target as HTMLElement;\r\n if (originalText) {\r\n const originalContent = originalText.innerHTML;\r\n originalText.innerHTML = '<mat-icon class=\"!text-base\">check</mat-icon><span>Copied!</span>';\r\n\r\n setTimeout(() => {\r\n originalText.innerHTML = originalContent;\r\n }, 2000);\r\n }\r\n }).catch(err => {\r\n console.error('Failed to copy: ', err);\r\n });\r\n }\r\n }\r\n\r\n getLevelIcon(level: string): string {\r\n const found = this.accessLevels.find(l => l.value === level);\r\n return found?.icon || 'person';\r\n }\r\n\r\n getLevelIconClass(level: string): string {\r\n const baseClasses = 'w-8 h-8 rounded-full flex items-center justify-center';\r\n switch(level) {\r\n case 'basic': return `${baseClasses} bg-blue-500/20 text-blue-400`;\r\n case 'premium': return `${baseClasses} bg-yellow-500/20 text-yellow-400`;\r\n case 'vip': return `${baseClasses} bg-purple-500/20 text-purple-400`;\r\n default: return `${baseClasses} bg-gray-600`;\r\n }\r\n }\r\n\r\n private markFormGroupTouched(formGroup: FormGroup): void {\r\n Object.values(formGroup.controls).forEach(control => {\r\n control.markAsTouched();\r\n if (control instanceof FormGroup) {\r\n this.markFormGroupTouched(control);\r\n }\r\n });\r\n }\r\n}\r\n","<div class=\"generate-code-dialog\">\r\n <h2 mat-dialog-title class=\"text-white !pb-2 !text-xl font-semibold\">Generate Invitation Code</h2>\r\n\r\n <mat-dialog-content class=\"!pb-0 !min-w-[500px]\">\r\n <div class=\"space-y-6\">\r\n <div class=\"text-md text-gray-300\">\r\n Create a new invitation code with custom settings\r\n </div>\r\n <div class=\"border-t border-gray-700\"></div>\r\n\r\n <form [formGroup]=\"codeForm\" class=\"space-y-6\">\r\n <div class=\"form-group\">\r\n <label class=\"block text-sm font-medium text-gray-300 mb-2\">\r\n Email Address <span class=\"text-gray-500 text-xs font-normal\">(Optional)</span>\r\n </label>\r\n <input\r\n type=\"email\"\r\n formControlName=\"email\"\r\n class=\"w-full px-4 py-3 bg-gray-800 border border-gray-700 rounded-lg text-white placeholder-gray-500 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors\"\r\n placeholder=\"Enter email address (optional)\"\r\n email>\r\n <p class=\"mt-1 text-xs text-gray-500\">If provided, only this email can use the code</p>\r\n </div>\r\n\r\n <!-- Code Name -->\r\n <div class=\"form-group\">\r\n <label class=\"block text-sm font-medium text-gray-300 mb-2\">\r\n Code Name <span class=\"text-gray-500 text-xs font-normal\">(Optional)</span>\r\n </label>\r\n <input\r\n type=\"text\"\r\n formControlName=\"name\"\r\n class=\"w-full px-4 py-3 bg-gray-800 border border-gray-700 rounded-lg text-white placeholder-gray-500 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors\"\r\n placeholder=\"e.g., VIP Users, Team Beta\"\r\n maxlength=\"50\">\r\n <div class=\"mt-1 text-xs text-gray-500 flex justify-between\">\r\n <span>A descriptive name for this code</span>\r\n <span>{{ codeForm.get('name')?.value?.length || 0 }}/50</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Max Uses -->\r\n <div class=\"form-group\">\r\n <label class=\"block text-sm font-medium text-gray-300 mb-2\">\r\n Maximum Uses <span class=\"text-gray-500 text-xs font-normal\">(Optional)</span>\r\n </label>\r\n <input\r\n type=\"number\"\r\n formControlName=\"maxUses\"\r\n min=\"1\"\r\n class=\"w-full px-4 py-3 bg-gray-800 border border-gray-700 rounded-lg text-white placeholder-gray-500 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors\"\r\n placeholder=\"e.g., 50\">\r\n <p class=\"mt-1 text-xs text-gray-500\">Leave empty for unlimited uses</p>\r\n </div>\r\n\r\n <!-- Expiration Date -->\r\n <div class=\"form-group\">\r\n <label class=\"block text-sm font-medium text-gray-300 mb-2\">\r\n Expiration Date <span class=\"text-gray-500 text-xs font-normal\">(Optional)</span>\r\n </label>\r\n <div class=\"flex items-center space-x-2\">\r\n <input\r\n type=\"date\"\r\n formControlName=\"expiryDate\"\r\n class=\"flex-1 px-4 py-3 bg-gray-800 border border-gray-700 rounded-lg text-white placeholder-gray-500 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors\">\r\n <button\r\n type=\"button\"\r\n (click)=\"clearExpiryDate()\"\r\n class=\"px-4 py-3 text-sm text-gray-400 hover:text-white hover:bg-gray-700 rounded-lg transition-colors border border-gray-600\">\r\n Clear\r\n </button>\r\n </div>\r\n <p class=\"mt-1 text-xs text-gray-500\">Leave empty for no expiration (30 days default)</p>\r\n </div>\r\n\r\n <!-- Access Level -->\r\n <div class=\"mb-6\">\r\n <h3 class=\"text-md font-medium text-white mb-2\">Access Level <span class=\"text-red-400\">*</span></h3>\r\n <div class=\"grid grid-cols-2 gap-2\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let level of accessLevels\"\r\n (click)=\"selectAccessLevel(level.value)\"\r\n [class]=\"codeForm.get('accessLevel')?.value === level.value\r\n ? 'access-level-selected bg-blue-900/30 border-blue-500 text-blue-300'\r\n : 'access-level-unselected bg-gray-800/50 border-gray-700 text-gray-300'\"\r\n class=\"access-level-button px-3 py-2.5 rounded-lg border hover:bg-gray-700/50 transition-all duration-200 flex items-start space-x-3\">\r\n\r\n <!-- Icon Container -->\r\n <div [class]=\"getLevelIconClass(level.value)\"\r\n class=\"w-8 h-8 rounded-lg flex items-center justify-center flex-shrink-0 mt-0.5\">\r\n <mat-icon class=\"!text-sm\">{{ getLevelIcon(level.value) }}</mat-icon>\r\n </div>\r\n\r\n <!-- Text Content -->\r\n <div class=\"flex-1 min-w-0\">\r\n <!-- First line: Label with checkmark -->\r\n <div class=\"flex items-center justify-between mb-1\">\r\n <span class=\"font-medium text-sm truncate\">{{ level.label }}</span>\r\n\r\n </div>\r\n\r\n <!-- Second line: Description -->\r\n <div class=\"text-xs opacity-75 truncate\">\r\n {{ level.description }}\r\n </div>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Generated Code Preview -->\r\n <div *ngIf=\"generatedCode\" class=\"mt-4 p-4 bg-gray-800/50 border border-gray-700 rounded-lg\">\r\n <div class=\"flex items-center justify-between mb-2\">\r\n <span class=\"text-sm font-medium text-gray-300\">Generated Code:</span>\r\n <button\r\n type=\"button\"\r\n (click)=\"copyToClipboard()\"\r\n class=\"text-sm text-blue-400 hover:text-blue-300 flex items-center space-x-1 transition-colors\">\r\n <mat-icon class=\"!text-base\">content_copy</mat-icon>\r\n <span>Copy</span>\r\n </button>\r\n </div>\r\n <div class=\"bg-gray-900 p-3 rounded border border-gray-700\">\r\n <code class=\"font-mono text-lg font-bold text-green-400 select-all\">{{ generatedCode }}</code>\r\n </div>\r\n <p class=\"mt-2 text-xs text-gray-500\">Share this code with users to grant them access</p>\r\n </div>\r\n\r\n <!-- Form Validation Summary -->\r\n <div *ngIf=\"codeForm.invalid && (codeForm.touched || codeForm.dirty)\" class=\"mt-4 p-3 bg-red-900/20 border border-red-800/30 rounded-lg\">\r\n <div class=\"flex items-start space-x-2\">\r\n <mat-icon class=\"!text-red-400 !text-lg flex-shrink-0\">error</mat-icon>\r\n <div class=\"text-sm text-red-300\">\r\n Please fix the following errors:\r\n <ul class=\"mt-1 ml-4 list-disc text-red-400\">\r\n <li *ngIf=\"codeForm.get('email')?.hasError('email')\">Please enter a valid email address</li>\r\n <li *ngIf=\"codeForm.get('maxUses')?.hasError('min')\">Maximum uses must be at least 1</li>\r\n <li *ngIf=\"codeForm.get('accessLevel')?.hasError('required')\">Access level is required</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions align=\"end\" class=\"!border-t !border-gray-700\">\r\n <button\r\n mat-stroked-button\r\n (click)=\"onCancel()\"\r\n class=\"!border-gray-600 !text-gray-300 hover:!bg-gray-700 hover:!border-gray-500\">\r\n Cancel\r\n </button>\r\n <button\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"onSubmit()\"\r\n [disabled]=\"!codeForm.valid || isGenerating\"\r\n class=\"!bg-blue-600 hover:!bg-blue-700 disabled:!opacity-50 disabled:!cursor-not-allowed\">\r\n <span *ngIf=\"isGenerating\" class=\"flex items-center space-x-2\">\r\n <mat-icon class=\"animate-spin !text-lg\">refresh</mat-icon>\r\n <span>Generating...</span>\r\n </span>\r\n <span *ngIf=\"!isGenerating\" class=\"flex items-center space-x-2\">\r\n <mat-icon>add</mat-icon>\r\n <span>Generate Code</span>\r\n </span>\r\n </button>\r\n </mat-dialog-actions>\r\n</div>\r\n\r\n","<div class=\"stats-card bg-gray-800 rounded-lg p-6 border border-gray-700 hover:border-gray-600 transition-colors duration-200\">\r\n <!-- Title and icon on the same line -->\r\n <div class=\"flex items-center justify-between mb-6\">\r\n <h3 class=\"text-gray-400 text-sm font-medium\">{{ stats.title }}</h3>\r\n <!-- Material Icons on the same line as title -->\r\n <div *ngIf=\"stats.icon\" class=\"p-2 rounded-full bg-gray-400\">\r\n <span class=\"material-icons text-gray-300 text-lg\">{{ stats.icon }}</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Number and description below with more space above -->\r\n <div class=\"mt-4\">\r\n <p class=\"text-3xl font-bold text-white\">{{ stats.value }}</p>\r\n <p *ngIf=\"stats.description\" class=\"text-gray-500 text-sm mt-2\">{{ stats.description }}</p>\r\n </div>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { StatsCard } from '../../../models/invitation-code.interface';\r\n\r\n\r\n@Component({\r\n selector: 'app-stats-card',\r\n templateUrl: './stats-card.component.html',\r\n styleUrls: ['./stats-card.component.scss'],\r\n standalone:false\r\n})\r\nexport class StatsCardComponent {\r\n @Input() stats!: StatsCard;\r\n}\r\n","// stats-overview.component.ts\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { GenerateCodeData, GenerateCodeDialogComponent } from '../modal/generate-code-dialog/generate-code-dialog.component';\r\nimport { InvitationCodeService } from '../../services/invitation-code.service';\r\nimport { StatsCard } from '../../models/invitation-code.interface';\r\n\r\n@Component({\r\n selector: 'app-stats-overview',\r\n templateUrl: './stats-overview.component.html',\r\n styleUrls: ['./stats-overview.component.scss'],\r\n standalone: false\r\n})\r\nexport class StatsOverviewComponent implements OnInit {\r\n stats$!: Observable<StatsCard[]>;\r\n\r\n constructor(\r\n private invitationCodeService: InvitationCodeService,\r\n private dialog: MatDialog\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.stats$ = this.invitationCodeService.getStats();\r\n }\r\n\r\n\r\nopenGenerateCodeDialog(): void {\r\n const dialogRef = this.dialog.open(GenerateCodeDialogComponent, {\r\n width: 'auto', // Let content determine width\r\n maxWidth: '600px', // Maximum width\r\n maxHeight: '85vh', // Maximum height\r\n panelClass: 'generate-code-dialog',\r\n autoFocus: false,\r\n disableClose: false,\r\n data: {\r\n name: '',\r\n maxUses: null,\r\n expiryDate: null,\r\n accessLevel: 'basic'\r\n } as GenerateCodeData\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: any) => {\r\n if (result && result.code) {\r\n console.log('Generated code:', result);\r\n // Handle the generated code\r\n this.handleGeneratedCode(result);\r\n }\r\n });\r\n}\r\n\r\nprivate handleGeneratedCode(data: any): void {\r\n this.invitationCodeService.generateCode(data).subscribe({\r\n next: (response) => {\r\n console.log('Code generated successfully:', response);\r\n alert(`Code \"${response.code}\" generated successfully!`);\r\n },\r\n error: (error) => {\r\n console.error('Failed to generate code:', error);\r\n alert(`Failed to generate code: ${error.message}`);\r\n }\r\n });\r\n}\r\n\r\n\r\n}\r\n","<!-- stats-overview.component.html -->\r\n<div class=\"stats-overview mb-8\">\r\n <!-- Header section with flex layout -->\r\n <div class=\"header-section flex flex-col lg:flex-row lg:items-center lg:justify-between mb-10\">\r\n <div class=\"header-content\">\r\n <h2 class=\"text-2xl font-bold text-white\">Access Management</h2>\r\n <p class=\"text-gray-400 text-md\">Manage invitation codes and waitlist members</p>\r\n </div>\r\n\r\n <!-- Generate Code Button -->\r\n <button\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"openGenerateCodeDialog()\"\r\n class=\"mt-4 lg:mt-0 flex items-center justify-center gap-2 !bg-blue-600 hover:!bg-blue-700\">\r\n <mat-icon class=\"!text-lg\">add</mat-icon>\r\n Generate Code\r\n </button>\r\n </div>\r\n\r\n <!-- Stats cards grid -->\r\n <div class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-4\">\r\n <app-stats-card\r\n *ngFor=\"let stat of stats$ | async\"\r\n [stats]=\"stat\">\r\n </app-stats-card>\r\n </div>\r\n</div>\r\n","<div class=\"stats-card bg-gray-800 rounded-lg p-6 border border-gray-700 hover:border-gray-600 transition-colors duration-200\">\r\n <div class=\"flex items-center justify-between mb-6\">\r\n <h3 class=\"text-gray-400 text-sm font-medium\">{{ stats.title }}</h3>\r\n\r\n <div *ngIf=\"stats.icon\" class=\"p-2 rounded-full bg-gray-400\">\r\n <span class=\"material-icons text-gray-300 text-lg\">{{ stats.icon }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-4\">\r\n <p class=\"text-3xl font-bold text-white\">{{ stats.value }}</p>\r\n <p *ngIf=\"stats.description\" class=\"text-gray-500 text-sm mt-2\">{{ stats.description }}</p>\r\n </div>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { WaitlistStatsCard } from '../../../models/waitlist.interface';\r\n\r\n\r\n@Component({\r\n selector: 'app-waitlist-stats-card',\r\n templateUrl: './waitlist-stats-card.component.html',\r\n styleUrls: ['./waitlist-stats-card.component.scss'],\r\n standalone:false\r\n})\r\nexport class WaitlistStatsCardComponent {\r\n @Input() stats!: WaitlistStatsCard;\r\n}\r\n","<ng-container *ngIf=\"waitlistStats$ | async as stats\">\r\n <div class=\"grid gap-4 w-full\"\r\n [style.grid-template-columns]=\"getCols(stats.length)\">\r\n <app-waitlist-stats-card\r\n *ngFor=\"let stat of stats\"\r\n class=\"w-full\"\r\n [stats]=\"stat\">\r\n </app-waitlist-stats-card>\r\n </div>\r\n</ng-container>\r\n<!-- DEMAND BY USER TYPE -->\r\n<div class=\"user-demand bg-gray-800 rounded-lg p-6 border border-gray-700 hover:border-gray-600 transition-colors duration-200\">\r\n <h2 class=\"text-lg font-semibold text-white mb-4\">Demand by User Type</h2>\r\n <p class=\"text-gray-400 text-sm mb-6\">\r\n See which user types have the most waitlist members\r\n </p>\r\n\r\n <div *ngFor=\"let item of userDemand\" class=\"mb-5 last:mb-0\">\r\n <div class=\"flex items-center justify-between text-sm text-white mb-2\">\r\n <span>{{ item.label }}</span>\r\n <span>{{ item.value }}</span>\r\n </div>\r\n\r\n <!-- Progress bar container -->\r\n <div class=\"w-full h-4 bg-gray-700 rounded-full overflow-hidden\">\r\n <div class=\"h-full bg-gradient-to-r from-blue-500 to-purple-500 rounded-full transition-all duration-700\"\r\n [style.width]=\"getPercentage(item.value) + '%'\">\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n</div>\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { WaitlistCodeService } from '../../services/waitlist-code.service';\r\nimport { WaitlistStatsCard } from '../../models/waitlist.interface';\r\n\r\n@Component({\r\n selector: 'app-waitlist-stats-overview',\r\n templateUrl: './waitlist-stats-overview.component.html',\r\n styleUrls: ['./waitlist-stats-overview.component.scss'],\r\n standalone:false\r\n})\r\nexport class WaitlistStatsOverviewComponent implements OnInit {\r\n waitlistStats$!: Observable<WaitlistStatsCard[]>;\r\n userDemand = [\r\n { label: 'Premium Member', value: 2 },\r\n { label: 'Standard Member', value: 2 },\r\n { label: 'VIP Member', value: 1 }\r\n ];\r\n\r\n constructor(private WaitlistCodeService: WaitlistCodeService) {}\r\n\r\n ngOnInit(): void {\r\n this.waitlistStats$ = this.WaitlistCodeService.getWaitlistStats();\r\n }\r\n getPercentage(value: number): number {\r\n const max = Math.max(...this.userDemand.map(x => x.value));\r\n return (value / max) * 100;\r\n }\r\n getCols(count: number): string {\r\n return `repeat(${count}, minmax(0, 1fr))`;\r\n }\r\n\r\n}\r\n","import { NgModule, ModuleWithProviders, InjectionToken, forwardRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n// Material Imports\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\n\r\n// Third-party\r\nimport { GridModule } from '@naniteninja/ionic-lib';\r\n\r\n// Your Components\r\nimport { CodeManagementComponent } from './pages/code-management/code-management.component';\r\nimport { InvitationCodesComponent } from './pages/invitation-codes/invitation-codes.component';\r\nimport { WaitlistComponent } from './pages/waitlist/waitlist.component';\r\nimport { CodeManagementHeaderComponent } from './components/code-management-header/code-management-header.component';\r\nimport { GenerateCodeDialogComponent } from './components/modal/generate-code-dialog/generate-code-dialog.component';\r\nimport { ConvertToInvitationDialogComponent } from './components/modal/convert-to-invitation-dialog/convert-to-invitation-dialog.component';\r\nimport { StatsOverviewComponent } from './components/stats-overview/stats-overview.component';\r\n\r\nimport { StatsCardComponent } from './components/shared/stats-card/stats-card.component';\r\nimport { WaitlistStatsCardComponent } from './components/shared/waitlist-stats-card/waitlist-stats-card.component';\r\n\r\n// Services\r\nimport { InvitationCodeService } from './services/invitation-code.service';\r\nimport { WaitlistCodeService } from './services/waitlist-code.service';\r\nimport { InvitationGridService } from './services/invitation-grid.service';\r\nimport { WaitlistGridService } from './services/waitlist-grid.service';\r\nimport { WaitlistStatsOverviewComponent } from './components/wait-list-stats-overview/waitlist-stats-overview.component';\r\n\r\nexport interface InvitationCodeConfig {\r\n apiUrl: string;\r\n apiSuffix?: string;\r\n}\r\n\r\nexport const INVITATION_CODE_CONFIG = new InjectionToken<InvitationCodeConfig>('InvitationCodeConfig');\r\n\r\n// Separate page components that have circular dependencies\r\nconst PAGE_COMPONENTS = [\r\n CodeManagementComponent,\r\n InvitationCodesComponent,\r\n WaitlistComponent\r\n];\r\n\r\n// UI components (no circular issues)\r\nconst UI_COMPONENTS = [\r\n CodeManagementHeaderComponent,\r\n GenerateCodeDialogComponent,\r\n ConvertToInvitationDialogComponent,\r\n StatsOverviewComponent,\r\n WaitlistStatsOverviewComponent,\r\n StatsCardComponent,\r\n WaitlistStatsCardComponent\r\n];\r\n\r\n// Apply forwardRef only to page components with circular dependencies\r\nconst ALL_COMPONENTS = [\r\n // Page components with forwardRef\r\n forwardRef(() => CodeManagementComponent),\r\n forwardRef(() => InvitationCodesComponent),\r\n forwardRef(() => WaitlistComponent),\r\n // UI components without forwardRef\r\n ...UI_COMPONENTS\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n HttpClientModule,\r\n RouterModule,\r\n\r\n // Material\r\n MatDialogModule,\r\n MatButtonModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatSelectModule,\r\n MatTableModule,\r\n MatPaginatorModule,\r\n MatSortModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n MatCardModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n MatProgressSpinnerModule,\r\n MatSnackBarModule,\r\n MatRadioModule,\r\n\r\n // Third-party\r\n GridModule,\r\n ],\r\n declarations: ALL_COMPONENTS,\r\n exports: [...PAGE_COMPONENTS, ...UI_COMPONENTS]\r\n})\r\nexport class InvitationCodeModule {\r\n static forRoot(config: InvitationCodeConfig): ModuleWithProviders<InvitationCodeModule> {\r\n return {\r\n ngModule: InvitationCodeModule,\r\n providers: [\r\n {\r\n provide: INVITATION_CODE_CONFIG,\r\n useValue: config\r\n },\r\n InvitationCodeService,\r\n WaitlistCodeService,\r\n InvitationGridService,\r\n WaitlistGridService\r\n ]\r\n };\r\n }\r\n}\r\n","// Core exports\r\nexport * from './lib/invitation-code.module';\r\nexport type { InvitationCodeConfig } from './lib/invitation-code.module';\r\n\r\n// Services\r\nexport { InvitationCodeService } from './lib/services/invitation-code.service';\r\nexport { WaitlistCodeService } from './lib/services/waitlist-code.service';\r\nexport { InvitationGridService } from './lib/services/invitation-grid.service';\r\nexport { WaitlistGridService } from './lib/services/waitlist-grid.service';\r\n\r\n// Export ALL Components (Fix: Unsupported private class)\r\nexport { CodeManagementComponent } from './lib/pages/code-management/code-management.component';\r\nexport { InvitationCodesComponent } from './lib/pages/invitation-codes/invitation-codes.component';\r\nexport { WaitlistComponent } from './lib/pages/waitlist/waitlist.component';\r\nexport { CodeManagementHeaderComponent } from './lib/components/code-management-header/code-management-header.component';\r\nexport { GenerateCodeDialogComponent } from './lib/components/modal/generate-code-dialog/generate-code-dialog.component';\r\nexport { ConvertToInvitationDialogComponent } from './lib/components/modal/convert-to-invitation-dialog/convert-to-invitation-dialog.component';\r\nexport { StatsOverviewComponent } from './lib/components/stats-overview/stats-overview.component';\r\nexport { WaitlistStatsOverviewComponent } from './lib/components/wait-list-stats-overview/waitlist-stats-overview.component';\r\nexport { StatsCardComponent } from './lib/components/shared/stats-card/stats-card.component';\r\nexport { WaitlistStatsCardComponent } from './lib/components/shared/waitlist-stats-card/waitlist-stats-card.component';\r\n\r\n// Models/Interfaces\r\nexport type { BaseInvitationCode as InvitationCode } from './lib/models/invitation-code.interface';\r\nexport type { BaseWaitlistMember as WaitlistEntry } from './lib/models/invitation-code.interface';\r\nexport type { StatsCard } from './lib/models/invitation-code.interface';\r\nexport type { WaitlistStatsCard } from './lib/models/waitlist.interface';\r\nexport type { InvitationCodeGrid } from './lib/models/invitation-grid.model';\r\nexport type { WaitlistMember } from './lib/models/waitlist-grid.model';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.InvitationCodeService","i1.InvitationGridService","i2.InvitationCodeService","i1.WaitlistGridService","i2","i1.WaitlistCodeService","i1"],"mappings":"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"}