import { Component, Input, OnInit } from '@angular/core'; import { AdminUsersService } from '@core/services/admin-users.service'; import { AdaptedAdminUser } from '@core/typings/user.typing'; import { AdminClientService } from '@features/platform-admin/clients/admin-client.service'; import { ArrayHelpersService, AutoTableRepository, AutoTableRepositoryFactory, ValueComparisonService } from '@yourcause/common'; import { NotifierService } from '@yourcause/common/notifier'; interface ClientMapClient { id: number; name: string; } @Component({ selector: 'gc-internal-admins-drilldown', templateUrl: './internal-admins-drilldown.component.html', styleUrls: ['./internal-admins-drilldown.component.scss'] }) export class InternalUsersDrilldownComponent implements OnInit { @Input() user: AdaptedAdminUser; clients = this.adminClientService.clients || []; loading = false; clientAccessRepository: AutoTableRepository; clientsMap = this.adminClientService.clientsMap; roles = this.adminUserService.roles; constructor ( private adminClientService: AdminClientService, private adminUserService: AdminUsersService, private autoTableFactory: AutoTableRepositoryFactory, private notifierService: NotifierService, private arrayHelper: ArrayHelpersService, private valueComparisonService: ValueComparisonService ) { } ngOnInit () { let rows: ClientMapClient[] = []; if (!this.user?.canAccessAllClientZones || !this.user?.isDeactivated) { rows = this.user?.clientZoneIds.filter((clientId) => { return this.clientsMap[clientId]; }).map((clientId) => { return { id: clientId, name: this.clientsMap[clientId].name }; }); rows = this.arrayHelper.sort(rows, 'name'); } this.clientAccessRepository = this.autoTableFactory.create({ key: 'User_Clients_' + this.user.userId, columns: [], notifier: this.notifierService, rowsPerPage: 6, valueComparisonService: this.valueComparisonService, rows: rows as ClientMapClient[] }); } }