{ "version": 3, "sources": ["apps/partner-center-client/src/app/sales/salespeople/manage-salespeople/manage-salespeople.service.ts", "apps/partner-center-client/src/app/manage-team/team-member.service.ts"], "sourcesContent": ["import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Salesperson, SalesTeamInterface, SalesTeamService } from '@vendasta/sales';\nimport { SalespeopleService } from '@vendasta/sales-v2';\nimport { combineLatest, from, Observable, of } from 'rxjs';\nimport { catchError, map, mapTo, mergeMap, shareReplay, switchMap, toArray } from 'rxjs/operators';\nimport { AccessService, Feature, StubAccessService } from '../../../core/access';\n\ninterface SalesTeamWithMembers extends SalesTeamInterface {\n members: Salesperson[];\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ManageSalespeopleService {\n /**\n * Calls the list Sales Teams endpoint then for each sales team it calls the list members endpoint\n * from there we combine the team and members together and return it\n */\n salesTeams$ = combineLatest([this.partnerId$, this.accessService.hasAccessToFeature(Feature.salesTeam)]).pipe(\n switchMap(([partnerId, hasAccess]) => {\n if (!hasAccess) {\n return of({ results: [] });\n }\n return this.salesTeamService\n .list(partnerId, undefined, undefined, undefined)\n .pipe(catchError(() => of({ results: [] })));\n }),\n mergeMap((resp) =>\n from(resp?.results || []).pipe(\n mergeMap(\n (team: SalesTeamInterface): Observable =>\n this.getMembersForTeam(team.groupId).pipe(map((m) => ({ ...team, members: m || [] }))),\n ),\n toArray(),\n catchError(() => of([])),\n ),\n ),\n shareReplay(),\n );\n\n /**\n * Maps the users to point at the teams they are part of. For example\n * { 'a@b.com': [{name: \"awsem team\", groupId: 'G-12345'}] }\n */\n readonly emailToSalesTeamInfoMap$ = this.salesTeams$.pipe(map(this.emailToSalesTeamInfoMap), shareReplay());\n\n constructor(\n private readonly api: HttpClient,\n private readonly salesTeamService: SalesTeamService,\n private readonly salespeople: SalespeopleService,\n @Inject('PARTNER_ID') readonly partnerId$: Observable,\n @Inject(StubAccessService) private accessService: AccessService,\n ) {}\n\n getSalespersonLoginUrl(): Observable {\n return this.api\n .get<{ data: { loginUrl: string } }>('/_ajax/v1/st/login-url', { withCredentials: true })\n .pipe(map((resp) => resp.data.loginUrl));\n }\n\n resendWelcomeEmail(partnerId: string, salespersonId: string, usePlatformDefaultDomain: boolean): Observable {\n return this.salespeople\n .sendPasswordResetEmail(partnerId, salespersonId, usePlatformDefaultDomain)\n .pipe(mapTo(null));\n }\n\n deleteSalesperson(salespersonId: string): Observable {\n const body = new HttpParams().set('salesId', salespersonId);\n\n return this.api\n .post<{ success: string }>('/_ajax/st/delete-account/', body.toString(), {\n headers: new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }),\n withCredentials: true,\n })\n .pipe(map((resp) => resp.success));\n }\n\n private getMembersForTeam(groupId: string): Observable {\n try {\n return this.salesTeamService.getMembers(groupId);\n } catch (e) {\n return of([]);\n }\n }\n\n private emailToSalesTeamInfoMap(teams: SalesTeamWithMembers[]): Record {\n const spData = {};\n teams.forEach((team) => {\n const teamInfo = {\n name: team.teamName,\n groupId: team.groupId,\n };\n team.members.forEach((member) => {\n if (spData[member.email]) {\n spData[member.email].push(teamInfo);\n } else {\n spData[member.email] = [teamInfo];\n }\n });\n });\n\n return spData;\n }\n}\n", "import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n BasePersona,\n DigitalAgentPersona,\n fromPersona,\n IAMApiService,\n IAMListPersonasRequestInterface,\n MultiValueAttribute,\n PartnerPersona,\n Persona,\n PersonaType,\n SalespersonPersona,\n User,\n UserInterface,\n} from '@vendasta/iam';\nimport { IAMService, UserIdentifier } from '@vendasta/iamv2';\nimport { FeatureFlagsApiService } from '@vendasta/partner';\nimport {\n GetPermissionsResponseInterface,\n PermissionsApiService,\n ResourceScope,\n UpdatePermissionsRequestInterface,\n} from '@vendasta/platform-users';\nimport { NamespaceInterface } from '@vendasta/platform-users/lib/_internal/interfaces/permissions.interface';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { FormResult, VFormTranslationService } from '@vendasta/vform';\nimport { BehaviorSubject, combineLatest, Observable, of, ReplaySubject, throwError } from 'rxjs';\nimport { catchError, map, shareReplay, switchMap, take, tap } from 'rxjs/operators';\nimport { ConfirmationDialogComponent } from '../common/confirmation-dialog.component';\nimport { ConciergeUserService } from '../concierge/users/concierge-users.service';\nimport { DigitalAgent, DigitalAgentInterface } from '../concierge/users/DigitalAgent';\nimport { ManageSalespeopleService } from '../sales/salespeople/manage-salespeople/manage-salespeople.service';\n\nexport interface PartnerAdminConfiguration {\n marketIds?: string[];\n sendEmail?: boolean;\n canAccessDashboard?: boolean;\n canAccessBilling?: boolean;\n canCustomizeWhitelabel?: boolean;\n canAccessCompanyProfile?: boolean;\n canAccessAutomations?: boolean;\n canAccessMarketplace?: boolean;\n canEnableApps?: boolean;\n canAccessAccounts?: boolean;\n canAccessMarketing?: boolean;\n canAccessSales?: boolean;\n canAccessConcierge?: boolean;\n canAccessBrands?: boolean;\n createManageAdminsFlag?: boolean;\n canAccessOrders?: boolean;\n canAccessRetailBilling?: boolean;\n defaultReportAccessScope?: string;\n}\n\nexport interface PlatformPermissions {\n canWriteCrmContacts?: boolean;\n canWriteCrmActivities?: boolean;\n canWriteCrmCompanies?: boolean;\n}\n\nexport interface SalespersonConfiguration {\n marketId?: string;\n sendEmail?: boolean;\n isSalesManager?: boolean;\n}\n\nexport interface TaskManagerConfiguration {\n isManager?: boolean;\n sendEmail?: boolean;\n}\n\nexport interface TeamMemberConfiguration {\n userId?: string;\n firstName?: string;\n lastName?: string;\n email?: string;\n hasPartnerAdmin?: boolean;\n partnerAdminConfiguration?: PartnerAdminConfiguration;\n platformPermissions?: PlatformPermissions;\n hasSalesperson?: boolean;\n salespersonConfiguration?: SalespersonConfiguration;\n hasTaskManager?: boolean;\n taskManagerConfiguration?: TaskManagerConfiguration;\n}\n\nexport interface CreateTeamMemberResponse {\n success: Observable;\n failedRoles: CreateTeamFailedRoles[];\n}\n\nexport interface CreateTeamFailedRoles {\n persona: PersonaType;\n error: any;\n}\n\nexport const DEFAULT_INVITE_MEMBER: TeamMemberConfiguration = {\n salespersonConfiguration: {\n sendEmail: true,\n isSalesManager: true,\n },\n partnerAdminConfiguration: {\n sendEmail: true,\n canAccessDashboard: true,\n canAccessBilling: true,\n canCustomizeWhitelabel: true,\n canAccessCompanyProfile: true,\n canAccessMarketplace: true,\n canEnableApps: true,\n canAccessAccounts: true,\n canAccessMarketing: true,\n canAccessSales: true,\n canAccessConcierge: true,\n canAccessBrands: true,\n createManageAdminsFlag: true,\n canAccessOrders: true,\n canAccessAutomations: true,\n canAccessRetailBilling: true,\n defaultReportAccessScope: 'view',\n },\n platformPermissions: {\n canWriteCrmContacts: true,\n canWriteCrmActivities: true,\n canWriteCrmCompanies: true,\n },\n taskManagerConfiguration: { sendEmail: true },\n};\n\nconst CREATE_PARTNER_ADMIN_URL = '/form/v1/admin-management/user/create';\nconst CREATE_SALES_PERSON_URL = '/form/v1/salesPerson/create/';\nconst EDIT_PARTNER_ADMIN_URL = '/form/v1/admin-management/user/edit';\nconst EDIT_SALES_PERSON_URL = '/form/v1/salesPerson/edit/';\n\n@Injectable()\nexport class TeamMemberService {\n private deleteAdminUrl = '/manage-admins/user/delete/';\n\n private selectedUser$$ = new BehaviorSubject({});\n selectedUser$ = this.selectedUser$$.asObservable();\n private createAdminError: HttpErrorResponse;\n private createSalespersonError: HttpErrorResponse;\n private createDigitalAgentError: HttpErrorResponse;\n private crmFeatureEnabled$: Observable;\n\n constructor(\n private readonly manageSalespeopleService: ManageSalespeopleService,\n private readonly conciergeUserService: ConciergeUserService,\n private readonly iamApiService: IAMApiService,\n private readonly vFormTranslationService: VFormTranslationService,\n private readonly featureFlagService: FeatureFlagsApiService,\n public matDialog: MatDialog,\n public translateService: TranslateService,\n private http: HttpClient,\n @Inject('PARTNER_ID') public readonly partnerId$: Observable,\n public iamService: IAMService,\n private analyticsService: ProductAnalyticsService,\n private readonly platformPermissionsService: PermissionsApiService,\n ) {\n this.crmFeatureEnabled$ = combineLatest([partnerId$]).pipe(\n map(([partnerId]) => partnerId),\n switchMap((partnerId) => {\n return this.featureFlagService.batchGetStatus({\n featureIds: ['crm_market_restriction'],\n partnerId: partnerId || '',\n });\n }),\n map((response) => {\n return response?.hasAccess.length > 0 && response?.hasAccess[0];\n }),\n shareReplay(1),\n );\n }\n\n setSelectedUser(user: UserInterface): void {\n this.selectedUser$$.next(user);\n }\n\n createTeamMember(config: TeamMemberConfiguration): CreateTeamMemberResponse {\n const calls: Observable[] = [];\n const failedRoles: CreateTeamFailedRoles[] = [];\n const userCreated$: ReplaySubject = new ReplaySubject();\n config.email = config.email?.toLowerCase();\n\n if (config.hasPartnerAdmin) {\n const partnerAdmin$ = this.createPartnerAdmin(config).pipe(\n map((isSuccess) => {\n if (!isSuccess) {\n failedRoles.push({ persona: PersonaType.partner, error: this.createAdminError });\n }\n return isSuccess;\n }),\n tap((s) => {\n userCreated$.next(s);\n }),\n );\n\n calls.push(partnerAdmin$);\n }\n if (config.hasSalesperson) {\n const salesPerson$ = this.createSalesperson(config).pipe(\n map((isSuccess) => {\n if (!isSuccess) {\n failedRoles.push({ persona: PersonaType.sales_person, error: this.createSalespersonError });\n }\n return isSuccess;\n }),\n tap((s) => {\n userCreated$.next(s);\n }),\n );\n calls.push(salesPerson$);\n }\n if (config.hasTaskManager) {\n this.analyticsService.trackEvent('invite-team-member-digital-agent', 'tm', 'invite-team-member');\n const taskManagerUser$ = this.createTaskManager(config).pipe(\n map((isSuccess) => {\n if (!isSuccess) {\n failedRoles.push({ persona: PersonaType.digital_agent, error: this.createDigitalAgentError });\n }\n return isSuccess;\n }),\n );\n calls.push(taskManagerUser$);\n }\n if (config.hasPartnerAdmin || config.hasSalesperson) {\n const createPermissions$ = combineLatest([this.partnerId$, userCreated$]).pipe(\n map(([p, u]) => {\n if (!u) throw 'User not created';\n else return p;\n }),\n switchMap((partnerId) => {\n // list just created user to get userId to create platform permissions, listUsers will be up-to-date because IAM lists using spanner\n return this.iamApiService.listUsers({ namespace: partnerId, email: config.email, cursor: '', pageSize: 1 });\n }),\n map((res) => res.users[0].userId),\n switchMap((userId: string) => {\n config.userId = userId;\n return this.updatePlatformPermissions(config);\n }),\n catchError(() => of(false)),\n );\n calls.push(createPermissions$);\n }\n\n const success = combineLatest(calls).pipe(map((resp) => resp.every((x) => x)));\n return { success: success, failedRoles: failedRoles };\n }\n\n deleteMember(userNamespace: string, userId: string, roles: string[]): Observable {\n const teamMemberRoles = roles.filter(\n (role) =>\n role === PersonaType.partner.valueOf() ||\n role === PersonaType.sales_person.valueOf() ||\n role === PersonaType.digital_agent.valueOf(),\n );\n\n if (teamMemberRoles.length === roles.length) {\n return this.deleteRoles(userNamespace, userId, roles, true);\n } else {\n return this.deleteRoles(userNamespace, userId, roles, false);\n }\n }\n\n deleteRoles(userNamespace: string, userId: string, roles: string[], deleteUser: boolean): Observable {\n const personas = this.getUserSubjectsInNamespace(userId);\n\n let partnerDelete: Observable = of(true);\n if (roles.includes(PersonaType.partner.valueOf())) {\n partnerDelete = this.deletePartnerAdmin(personas);\n }\n\n let salesDelete: Observable = of(true);\n if (roles.includes(PersonaType.sales_person.valueOf())) {\n salesDelete = this.deleteSalesperson(personas);\n }\n\n let taskManagerDelete: Observable = of(true);\n if (roles.includes(PersonaType.digital_agent.valueOf())) {\n taskManagerDelete = this.deleteTaskManager(personas);\n }\n\n return combineLatest([partnerDelete, salesDelete, taskManagerDelete]).pipe(\n map(([pd, sd, td]) => {\n return pd && sd && td;\n }),\n switchMap((success) => {\n if (success && deleteUser) {\n return this.deleteInternalUser(userId, userNamespace);\n }\n return of(success);\n }),\n );\n }\n\n deleteInternalUser(userId: string, userNamespace: string): Observable {\n const effectiveUserNamespace = userNamespace || 'VA';\n return this.partnerId$.pipe(\n switchMap((partnerId) => {\n if (partnerId !== effectiveUserNamespace) {\n return of(true);\n }\n return this.iamService.deleteUser(new UserIdentifier({ userId: userId }));\n }),\n map(() => {\n return true;\n }),\n catchError(() => of(false)),\n );\n }\n\n editMember(current: TeamMemberConfiguration, update: TeamMemberConfiguration): Observable {\n const personas$ = this.getUserSubjectsInNamespace(update.userId);\n const calls: Observable[] = [];\n this.createAdminError = undefined;\n this.createSalespersonError = undefined;\n this.createDigitalAgentError = undefined;\n\n if (this.partnerAdminUpdated(update, current)) {\n calls.push(this.editPartnerAdmin(update, personas$));\n } else if (update.hasPartnerAdmin && !current.hasPartnerAdmin) {\n calls.push(this.createPartnerAdmin(update));\n } else if (!update.hasPartnerAdmin && current.hasPartnerAdmin) {\n calls.push(this.deletePartnerAdmin(personas$));\n }\n\n if (this.salesPersonUpdated(update, current)) {\n calls.push(this.editSalesperson(update, personas$));\n } else if (update.hasSalesperson && !current.hasSalesperson) {\n calls.push(this.createSalesperson(update));\n } else if (!update.hasSalesperson && current.hasSalesperson) {\n calls.push(this.deleteSalesperson(personas$));\n }\n\n if (this.taskManagerUserUpdated(current, update)) {\n calls.push(this.editTaskManager(update, personas$));\n } else if (update.hasTaskManager && !current.hasTaskManager) {\n calls.push(this.createTaskManager(update));\n } else if (!update.hasTaskManager && current.hasTaskManager) {\n calls.push(this.deleteTaskManager(personas$));\n }\n\n if (this.platformPermissionsUpdated(current, update)) {\n calls.push(this.updatePlatformPermissions(update));\n }\n\n return combineLatest(calls).pipe(map((resp) => resp.every((x) => x)));\n }\n\n getCreateTeamFailedRoles(): CreateTeamFailedRoles[] {\n const personas: CreateTeamFailedRoles[] = [];\n if (this.createAdminError) {\n personas.push({\n persona: PersonaType.partner,\n error: this.createAdminError,\n });\n }\n if (this.createSalespersonError) {\n personas.push({\n persona: PersonaType.sales_person,\n error: this.createSalespersonError,\n });\n }\n if (this.createDigitalAgentError) {\n personas.push({\n persona: PersonaType.digital_agent,\n error: this.createDigitalAgentError,\n });\n }\n return personas;\n }\n\n private partnerAdminUpdated(updatedMember: TeamMemberConfiguration, currentMember: TeamMemberConfiguration): boolean {\n return (\n updatedMember.hasPartnerAdmin &&\n currentMember.hasPartnerAdmin &&\n (this.partnerAdminPermissionsUpdated(updatedMember, currentMember) ||\n !this.commonConfigIsEqual(currentMember, updatedMember) ||\n !this.partnerAdminConfigIsEqual(currentMember, updatedMember))\n );\n }\n\n private salesPersonUpdated(updatedMember: TeamMemberConfiguration, currentMember: TeamMemberConfiguration): boolean {\n return (\n updatedMember.hasSalesperson &&\n currentMember.hasSalesperson &&\n (!this.commonConfigIsEqual(currentMember, updatedMember) ||\n !this.salespersonConfgIsEqual(currentMember, updatedMember))\n );\n }\n\n private taskManagerUserUpdated(\n updatedMember: TeamMemberConfiguration,\n currentMember: TeamMemberConfiguration,\n ): boolean {\n return (\n updatedMember.hasTaskManager &&\n currentMember.hasTaskManager &&\n (!this.commonConfigIsEqual(currentMember, updatedMember) ||\n !this.taskManagerConfigIsEqual(currentMember, updatedMember))\n );\n }\n\n private partnerAdminPermissionsUpdated(\n updatedMember: TeamMemberConfiguration,\n currentMember: TeamMemberConfiguration,\n ): boolean {\n return updatedMember.partnerAdminConfiguration !== currentMember.partnerAdminConfiguration;\n }\n\n private platformPermissionsUpdated(\n updatedMember: TeamMemberConfiguration,\n currentMember: TeamMemberConfiguration,\n ): boolean {\n return (\n currentMember.platformPermissions !== updatedMember.platformPermissions ||\n currentMember.hasPartnerAdmin !== updatedMember.hasPartnerAdmin ||\n currentMember.hasSalesperson !== updatedMember.hasSalesperson ||\n currentMember.partnerAdminConfiguration?.marketIds?.length !==\n updatedMember.partnerAdminConfiguration?.marketIds?.length ||\n (currentMember.partnerAdminConfiguration?.marketIds?.length == 1 &&\n updatedMember.partnerAdminConfiguration?.marketIds?.length == 1 &&\n currentMember.partnerAdminConfiguration?.marketIds[0] !==\n updatedMember.partnerAdminConfiguration?.marketIds[0]) ||\n currentMember.salespersonConfiguration?.marketId !== updatedMember.salespersonConfiguration?.marketId\n );\n }\n\n private taskManagerConfigIsEqual(current: TeamMemberConfiguration, update: TeamMemberConfiguration): boolean {\n return (\n (current?.taskManagerConfiguration?.isManager || false) ===\n (update?.taskManagerConfiguration?.isManager || false) &&\n (current?.taskManagerConfiguration?.sendEmail || false) === (update?.taskManagerConfiguration?.sendEmail || false)\n );\n }\n\n private salespersonConfgIsEqual(current: TeamMemberConfiguration, update: TeamMemberConfiguration): boolean {\n return (\n (current?.salespersonConfiguration?.marketId || '') === (update?.salespersonConfiguration?.marketId || '') &&\n (current?.salespersonConfiguration?.isSalesManager || false) ===\n (update?.salespersonConfiguration?.isSalesManager || false)\n );\n }\n\n private commonConfigIsEqual(current: TeamMemberConfiguration, update: TeamMemberConfiguration): boolean {\n return (\n current.firstName === update.firstName && current.lastName === update.lastName && current.email === update.email\n );\n }\n\n private partnerAdminConfigIsEqual(current: TeamMemberConfiguration, update: TeamMemberConfiguration): boolean {\n const currentMarkets = current?.partnerAdminConfiguration?.marketIds || [];\n const updatedMarkets = update?.partnerAdminConfiguration?.marketIds || [];\n return currentMarkets.length === updatedMarkets.length && currentMarkets.every((id) => updatedMarkets.includes(id));\n }\n\n getName(user: TeamMemberConfiguration | User): string {\n let name = `${user.firstName || ''} ${user.lastName || ''}`.trim();\n if (!name) {\n name = user.email;\n }\n return name;\n }\n\n getPlatformPermissions(partnerId: string, userId: string): Observable {\n return this.platformPermissionsService\n .getPermissions({\n partnerId: partnerId,\n userId: userId,\n })\n .pipe(\n map((resp) => {\n const partnerInNamespace = !!resp?.permissions?.namespace?.find((ns) => ns.namespaceId === partnerId);\n const canWriteContacts = resp?.permissions?.contacts?.writeScope === ResourceScope.RESOURCE_SCOPE_ALL;\n const canWriteActivities = resp?.permissions?.activities?.writeScope === ResourceScope.RESOURCE_SCOPE_ALL;\n const canWriteCompanies = resp?.permissions?.companies?.writeScope === ResourceScope.RESOURCE_SCOPE_ALL;\n return {\n canWriteCrmContacts: partnerInNamespace && canWriteContacts,\n canWriteCrmActivities: partnerInNamespace && canWriteActivities,\n canWriteCrmCompanies: partnerInNamespace && canWriteCompanies,\n };\n }),\n catchError((err: HttpErrorResponse) => {\n if (err.status === 404) {\n return of({\n canWriteCrmContacts: false,\n canWriteCrmActivities: false,\n canWriteCrmCompanies: false,\n });\n }\n throw err;\n }),\n );\n }\n\n getTaskManagerConfig(userPersonas$: Observable): Observable {\n return userPersonas$.pipe(\n switchMap((personas) => {\n const taskManager = this.getDigitalAgentPersona(personas);\n if (taskManager) {\n return this.partnerId$.pipe(\n take(1),\n switchMap((partnerId: string) => {\n return this.conciergeUserService.getUser(partnerId, taskManager.subjectId);\n }),\n );\n }\n return of(null);\n }),\n map((taskManager: DigitalAgentInterface | undefined) => {\n if (!taskManager) {\n return {};\n }\n const partners = Object.keys(taskManager?.partnerPermissions || []);\n const isManager = Boolean(\n partners.find((partnerId) => taskManager.partnerPermissions?.[partnerId].can_delete_tasks),\n );\n return { isManager };\n }),\n );\n }\n\n getMemberConfiguration(\n partnerId: string,\n userId: string,\n fallbackFirstName?: string,\n fallbackLastName?: string,\n fallbackUserEmail?: string,\n ): Observable {\n if (!userId) {\n return of({});\n }\n\n const userPersonas$ = this.getUserSubjectsInNamespace(userId);\n const taskManagerConfig$ = this.getTaskManagerConfig(userPersonas$);\n const platformPermissions$ = this.getPlatformPermissions(partnerId, userId);\n\n return combineLatest([userPersonas$, taskManagerConfig$, platformPermissions$]).pipe(\n map(([personas, taskManagerConfig, platformPermissions]) => {\n const tmc: TeamMemberConfiguration = {\n userId: userId,\n partnerAdminConfiguration: {},\n platformPermissions: {},\n salespersonConfiguration: {},\n taskManagerConfiguration: {},\n };\n const partnerAdmin = this.getPartnerPersona(personas);\n if (partnerAdmin) {\n tmc.hasPartnerAdmin = true;\n tmc.partnerAdminConfiguration = {\n marketIds: partnerAdmin.accessibleMarkets,\n canAccessDashboard: partnerAdmin.canAccessDashboard,\n canAccessBilling: partnerAdmin.canAccessBilling,\n canCustomizeWhitelabel: partnerAdmin.canCustomizeWhitelabel,\n canAccessCompanyProfile: partnerAdmin.canAccessCompanyProfile,\n canAccessMarketplace: partnerAdmin.canAccessMarketplace,\n canEnableApps: partnerAdmin.canEnableApps,\n canAccessAccounts: partnerAdmin.canAccessAccounts,\n canAccessMarketing: partnerAdmin.canAccessMarketing,\n canAccessSales: partnerAdmin.canAccessSales,\n canAccessConcierge: partnerAdmin.canAccessConcierge,\n canAccessBrands: partnerAdmin.canAccessBrands,\n createManageAdminsFlag: partnerAdmin.isAdmin,\n canAccessOrders: partnerAdmin.canAccessOrders,\n canAccessAutomations: partnerAdmin.canAccessAutomations,\n canAccessRetailBilling: partnerAdmin.canAccessRetailBilling,\n defaultReportAccessScope: partnerAdmin.defaultReportAccessScope,\n };\n this.applyUserValuesIfNotSet(tmc, partnerAdmin);\n } else {\n tmc.partnerAdminConfiguration = DEFAULT_INVITE_MEMBER.partnerAdminConfiguration;\n }\n const salesperson = this.getSalespersonPersona(personas);\n if (salesperson) {\n tmc.hasSalesperson = true;\n tmc.salespersonConfiguration = {\n marketId: salesperson.marketId,\n isSalesManager: salesperson.isSalesManager,\n };\n this.applyUserValuesIfNotSet(tmc, salesperson);\n } else {\n tmc.salespersonConfiguration = DEFAULT_INVITE_MEMBER.salespersonConfiguration;\n }\n const taskManager = this.getDigitalAgentPersona(personas);\n if (taskManager) {\n tmc.hasTaskManager = true;\n tmc.taskManagerConfiguration = taskManagerConfig;\n } else {\n tmc.taskManagerConfiguration = DEFAULT_INVITE_MEMBER.taskManagerConfiguration;\n this.applyUserValuesIfNotSet(tmc, taskManager);\n }\n this.applyUserValuesIfNotSet(tmc, {\n firstName: fallbackFirstName,\n lastName: fallbackLastName,\n email: fallbackUserEmail,\n });\n if (!partnerAdmin && !salesperson && !taskManager) {\n return null;\n }\n tmc.platformPermissions = platformPermissions;\n return tmc;\n }),\n );\n }\n\n private applyUserValuesIfNotSet(\n tmc: TeamMemberConfiguration,\n vals: { firstName: string; lastName: string; email: string },\n ): void {\n tmc.firstName = tmc.firstName || vals?.firstName;\n tmc.lastName = tmc.lastName || vals?.lastName;\n tmc.email = tmc.email || vals?.email;\n }\n\n private createTaskManager(config: TeamMemberConfiguration): Observable {\n return this.partnerId$.pipe(\n switchMap((partnerId) => {\n return this.conciergeUserService.createUserWithoutAlert(\n partnerId,\n config.email,\n config.firstName,\n config.lastName,\n config.taskManagerConfiguration.sendEmail || false,\n config.taskManagerConfiguration.isManager || false,\n );\n }),\n catchError((response) => {\n this.createDigitalAgentError = response.error;\n return of(false);\n }),\n );\n }\n\n private createSalesperson(config: TeamMemberConfiguration): Observable {\n return this.vFormTranslationService\n .submitForm(CREATE_SALES_PERSON_URL, this.setDataForSalesPerson(config, undefined).toString(), '', true)\n .pipe(\n map((resp: FormResult) => resp.statusCode === 200),\n catchError((response: HttpErrorResponse) => {\n this.createSalespersonError = response.error;\n return of(false);\n }),\n );\n }\n\n private createPartnerAdmin(config: TeamMemberConfiguration): Observable {\n return this.vFormTranslationService\n .submitForm(CREATE_PARTNER_ADMIN_URL, this.setDataForPartnerAdmin(config).toString(), '', true)\n .pipe(\n map((resp: FormResult) => resp.statusCode === 200),\n catchError((response: HttpErrorResponse) => {\n this.createAdminError = response.error;\n return of(false);\n }),\n );\n }\n\n private deleteTaskManager(personas: Observable): Observable {\n return combineLatest([this.partnerId$, personas]).pipe(\n switchMap(([partnerId, personasInput]) => {\n const iamAgent = this.getDigitalAgentPersona(personasInput);\n if (iamAgent) {\n return this.conciergeUserService\n .getUser(partnerId, iamAgent.subjectId)\n .pipe(switchMap((agent) => this.conciergeUserService.revokeUserWithoutAlert(partnerId, agent)));\n }\n return of(true);\n }),\n );\n }\n\n private deleteSalesperson(personas: Observable): Observable {\n return personas.pipe(\n switchMap((personasInput) => {\n const salesperson = this.getSalespersonPersona(personasInput);\n if (salesperson) {\n return this.manageSalespeopleService.deleteSalesperson(salesperson.subjectId);\n }\n return of('success');\n }),\n map((successStr) => successStr.length > 0),\n );\n }\n\n private deletePartnerAdmin(personas: Observable): Observable {\n return personas.pipe(\n switchMap((personasInput) => {\n const partner = this.getPartnerPersona(personasInput);\n if (partner) {\n return this.deleteAdminUser(partner.email);\n }\n return of('');\n }),\n map((successStr) => successStr.length === 0),\n );\n }\n\n private deleteAdminUser(email: string): Observable {\n // Need to do it like this to make a python decorator happy 🤢\n const body = new HttpParams().set('email', encodeURIComponent(email));\n return this.http\n .post(this.deleteAdminUrl, body.toString(), {\n headers: new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }),\n })\n .pipe(\n map(() => ''),\n catchError((err) => {\n if (err.status === 404) {\n return of(this.translateService.instant('ADMIN.ADMIN_MANAGEMENT.USER_NOT_FOUND'));\n }\n if (err.status === 401) {\n return of(this.translateService.instant('ADMIN.ADMIN_MANAGEMENT.CANT_DELETE_OWN_ACCOUNT'));\n }\n if (err.status === 400) {\n return of(this.translateService.instant('ADMIN.ADMIN_MANAGEMENT.FAILED_TO_DELETE_ACCOUNT'));\n }\n return of(this.translateService.instant('ADMIN.ADMIN_MANAGEMENT.UNKNOWN_ERROR'));\n }),\n );\n }\n\n private editPartnerAdmin(update: TeamMemberConfiguration, personas$: Observable): Observable {\n return personas$.pipe(\n switchMap((personas) => {\n const persona = this.getPartnerPersona(personas);\n if (!persona) {\n return of(false);\n }\n\n return this.vFormTranslationService\n .submitForm(\n EDIT_PARTNER_ADMIN_URL,\n this.setDataForPartnerAdmin(update, true).toString(),\n encodeURIComponent(`{\"user_email\":\"${update.email}\"}`),\n true,\n )\n .pipe(\n map((resp: FormResult) => resp.statusCode === 200),\n catchError((_) => of(false)),\n );\n }),\n );\n }\n\n private editSalesperson(config: TeamMemberConfiguration, personas$: Observable): Observable {\n return personas$.pipe(\n switchMap((personas) => {\n const persona = this.getSalespersonPersona(personas);\n if (!persona) {\n return of(false);\n }\n\n return this.vFormTranslationService\n .submitForm(\n EDIT_SALES_PERSON_URL,\n this.setDataForSalesPerson(config, persona).toString(),\n escape(`${window.location.origin}/st/edit?sales_person_id=${persona.subjectId}`.toString()),\n true,\n )\n .pipe(\n map((resp: FormResult) => resp.statusCode === 200),\n catchError((_) => of(false)),\n );\n }),\n );\n }\n\n private editTaskManager(update: TeamMemberConfiguration, personas$: Observable): Observable {\n const digitalAgent$: Observable = personas$.pipe(\n switchMap((personas) => {\n const taskManager = this.getDigitalAgentPersona(personas);\n if (taskManager) {\n return this.partnerId$.pipe(\n take(1),\n switchMap((partnerId: string) => {\n return this.conciergeUserService.getUser(partnerId, taskManager.subjectId);\n }),\n );\n }\n return of(null);\n }),\n );\n\n return combineLatest([this.partnerId$, digitalAgent$]).pipe(\n switchMap(([partnerId, digitalAgent]) => {\n if (!digitalAgent) {\n throwError('Digital Agent not found');\n }\n\n const user: DigitalAgentInterface = digitalAgent;\n user.firstName = update.firstName;\n user.lastName = update.lastName;\n return this.conciergeUserService.editUser(\n partnerId,\n user,\n update.taskManagerConfiguration.sendEmail,\n update.taskManagerConfiguration.isManager,\n );\n }),\n map(() => true),\n catchError((err) => {\n console.error('Could not edit Task Manager', err);\n return of(false);\n }),\n );\n }\n\n private getExistingPlatformPermissionsNamespaces(config: TeamMemberConfiguration): Observable {\n return this.partnerId$.pipe(\n switchMap((partnerId) => {\n return this.platformPermissionsService.getPermissions({\n partnerId: partnerId,\n userId: config.userId,\n });\n }),\n catchError(() => {\n return of({ permissions: {} } as GetPermissionsResponseInterface);\n }),\n map((existingPermissions: GetPermissionsResponseInterface) => existingPermissions?.permissions?.namespace || []),\n );\n }\n\n private buildNamespaces(partnerId: string, existingNamespaces: NamespaceInterface[]): NamespaceInterface[] {\n if (existingNamespaces.find((e) => e.namespaceType === 'partner' && e.namespaceId === partnerId)) {\n return existingNamespaces;\n }\n existingNamespaces.push({ namespaceType: 'partner', namespaceId: partnerId });\n return existingNamespaces;\n }\n\n private updatePlatformPermissions(config: TeamMemberConfiguration): Observable {\n return combineLatest([\n this.partnerId$,\n this.getExistingPlatformPermissionsNamespaces(config),\n this.crmFeatureEnabled$,\n ]).pipe(\n switchMap(([partnerId, existingNamespaces, featureEnabled]) => {\n const request: UpdatePermissionsRequestInterface = {\n permissions: {\n partnerId: partnerId,\n userId: config.userId,\n namespace: this.buildNamespaces(partnerId, existingNamespaces),\n },\n };\n if (config.platformPermissions.canWriteCrmContacts) {\n request.permissions.contacts = {\n readScope: ResourceScope.RESOURCE_SCOPE_ALL,\n writeScope: ResourceScope.RESOURCE_SCOPE_ALL,\n };\n }\n if (config.platformPermissions.canWriteCrmActivities) {\n request.permissions.activities = {\n readScope: ResourceScope.RESOURCE_SCOPE_ALL,\n writeScope: ResourceScope.RESOURCE_SCOPE_ALL,\n };\n }\n if (config.platformPermissions.canWriteCrmCompanies) {\n request.permissions.companies = {\n readScope: ResourceScope.RESOURCE_SCOPE_ALL,\n writeScope: ResourceScope.RESOURCE_SCOPE_ALL,\n };\n }\n\n request.permissions.restrictedToMarketId = '';\n if (featureEnabled) {\n if (config.hasPartnerAdmin) {\n if (\n config.partnerAdminConfiguration?.marketIds &&\n config.partnerAdminConfiguration?.marketIds?.length == 1 &&\n config.partnerAdminConfiguration.marketIds[0] != '_DEFAULT'\n ) {\n request.permissions.restrictedToMarketId = config.partnerAdminConfiguration.marketIds[0];\n }\n } else if (config.hasSalesperson) {\n request.permissions.restrictedToMarketId = config.salespersonConfiguration?.marketId;\n }\n }\n\n return this.platformPermissionsService.updatePermissions(request);\n }),\n map(() => true),\n catchError((err) => {\n console.error('Could not update Platform Permissions', err);\n return of(false);\n }),\n );\n }\n\n public getDigitalAgentPersona(personas: BasePersona[]): DigitalAgentPersona {\n return personas.find((persona) => persona instanceof DigitalAgentPersona) as DigitalAgentPersona;\n }\n\n public getSalespersonPersona(personas: BasePersona[]): SalespersonPersona {\n return personas.find((persona) => persona instanceof SalespersonPersona) as SalespersonPersona;\n }\n\n public getPartnerPersona(personas: BasePersona[]): PartnerPersona {\n return personas.find((persona) => persona instanceof PartnerPersona) as PartnerPersona;\n }\n\n public getUserSubjectsInNamespace(userId: string): Observable {\n return this.partnerId$.pipe(\n map(\n (partnerId): IAMListPersonasRequestInterface => ({\n userIdentifier: {\n userId: userId,\n },\n namespace: partnerId,\n }),\n ),\n switchMap((req) => this.iamApiService.listPersonas(req)),\n map((resp) => {\n return (resp.personas || []).map((p) => {\n const persona = this.getPersonaWithRetailBillingAttribute(p);\n return fromPersona(persona);\n });\n }),\n shareReplay(1),\n );\n }\n\n openDeleteConfirmationDialog(\n deleteUser: boolean,\n deletePartnerAdmin: boolean,\n deleteSalesperson: boolean,\n deleteTaskManager: boolean,\n name: string,\n ): MatDialogRef {\n let titlePre = 'MANAGE_TEAM.MY_TEAM.ACTIONS.DELETE.DELETE_DIALOG.TITLE.START';\n let title = name;\n let titlePost = 'MANAGE_TEAM.MY_TEAM.ACTIONS.DELETE.DELETE_DIALOG.TITLE.END';\n let message = 'MANAGE_TEAM.MY_TEAM.ACTIONS.DELETE.DELETE_DIALOG.ADMIN_ONLY_MESSAGE_V2';\n let confirm = 'MANAGE_TEAM.MY_TEAM.ACTIONS.DELETE.DELETE_DIALOG.CONFIRM';\n let decline = 'MANAGE_TEAM.MY_TEAM.ACTIONS.DELETE.DELETE_DIALOG.DECLINE';\n\n if (!deleteUser) {\n titlePre = '';\n titlePost = '';\n const roles: string[] = [];\n if (deletePartnerAdmin) {\n roles.push(this.translateService.instant('MANAGE_TEAM.ROLES.partner.NAME'));\n }\n if (deleteSalesperson) {\n roles.push(this.translateService.instant('MANAGE_TEAM.ROLES.sales_person.NAME'));\n }\n if (deleteTaskManager) {\n roles.push(this.translateService.instant('MANAGE_TEAM.ROLES.digital_agent.NAME'));\n }\n if (roles.length === 1) {\n title = this.translateService.instant('MANAGE_TEAM.MY_TEAM.ACTIONS.REMOVE_ROLE.TITLE_1_ROLE', {\n role1: roles[0],\n });\n confirm = 'MANAGE_TEAM.MY_TEAM.ACTIONS.REMOVE_ROLE.CONFIRM_SINGULAR';\n decline = 'MANAGE_TEAM.MY_TEAM.ACTIONS.REMOVE_ROLE.DECLINE_SINGULAR';\n } else {\n title = this.translateService.instant('MANAGE_TEAM.MY_TEAM.ACTIONS.REMOVE_ROLE.TITLE_2_ROLES', {\n role1: roles[0],\n role2: roles[1],\n });\n confirm = 'MANAGE_TEAM.MY_TEAM.ACTIONS.REMOVE_ROLE.CONFIRM_PLURAL';\n decline = 'MANAGE_TEAM.MY_TEAM.ACTIONS.REMOVE_ROLE.DECLINE_PLURAL';\n }\n const messageKey = 'MANAGE_TEAM.MY_TEAM.ACTIONS.REMOVE_ROLE.ADMIN_ONLY_MESSAGE_V2';\n message = this.translateService.instant(messageKey, { name: name });\n }\n\n if (deleteSalesperson && !deleteTaskManager) {\n if (deleteUser) {\n message = 'MANAGE_TEAM.MY_TEAM.ACTIONS.DELETE.DELETE_DIALOG.SALES_MESSAGE';\n } else {\n message = this.translateService.instant('MANAGE_TEAM.MY_TEAM.ACTIONS.REMOVE_ROLE.SALES_MESSAGE', {\n name: name,\n });\n }\n }\n if (!deleteSalesperson && deleteTaskManager) {\n if (deleteUser) {\n message = 'MANAGE_TEAM.MY_TEAM.ACTIONS.DELETE.DELETE_DIALOG.TASK_MANAGER_MESSAGE';\n } else {\n message = this.translateService.instant('MANAGE_TEAM.MY_TEAM.ACTIONS.REMOVE_ROLE.TASK_MANAGER_MESSAGE', {\n name: name,\n });\n }\n }\n if (deleteSalesperson && deleteTaskManager) {\n if (deleteUser) {\n message = 'MANAGE_TEAM.MY_TEAM.ACTIONS.DELETE.DELETE_DIALOG.ALL_MESSAGE';\n } else {\n message = this.translateService.instant('MANAGE_TEAM.MY_TEAM.ACTIONS.REMOVE_ROLE.ALL_MESSAGE', {\n name: name,\n });\n }\n }\n\n return this.matDialog.open(ConfirmationDialogComponent, {\n data: {\n titlePre: titlePre,\n title: title,\n titlePost: titlePost,\n message: message,\n warn: true,\n buttonText: {\n confirm: confirm,\n decline: decline,\n },\n },\n });\n }\n\n private setDataForPartnerAdmin(config: TeamMemberConfiguration, edit = false): URLSearchParams {\n const formdata = new URLSearchParams();\n if (!config.partnerAdminConfiguration?.marketIds || config.partnerAdminConfiguration.marketIds.length === 0) {\n formdata.append('markets', '_DEFAULT');\n } else {\n config.partnerAdminConfiguration.marketIds.forEach((m) => {\n formdata.append('markets', m);\n });\n }\n formdata.append('firstName', config.firstName);\n formdata.append('lastName', config.lastName);\n formdata.append('user_email', config.email);\n if (!edit) {\n formdata.append('sendWelcomeEmailFlag', JSON.stringify(config.partnerAdminConfiguration?.sendEmail || false));\n }\n formdata.append(\n 'accessDashboardFlag',\n JSON.stringify(config.partnerAdminConfiguration?.canAccessDashboard || false),\n );\n formdata.append(\n 'accessBillingReportsFlag',\n JSON.stringify(config.partnerAdminConfiguration?.canAccessBilling || false),\n );\n formdata.append(\n 'customizeWhitelabelFlag',\n JSON.stringify(config.partnerAdminConfiguration?.canCustomizeWhitelabel || false),\n );\n formdata.append(\n 'accessCompanyProfileFlag',\n JSON.stringify(config.partnerAdminConfiguration?.canAccessCompanyProfile || false),\n );\n formdata.append(\n 'accessMarketplaceFlag',\n JSON.stringify(config.partnerAdminConfiguration?.canAccessMarketplace || false),\n );\n formdata.append('enableAppFlag', JSON.stringify(config.partnerAdminConfiguration?.canEnableApps || false));\n formdata.append('accessAccountsFlag', JSON.stringify(config.partnerAdminConfiguration?.canAccessAccounts || false));\n formdata.append(\n 'accessMarketingFlag',\n JSON.stringify(config.partnerAdminConfiguration?.canAccessMarketing || false),\n );\n formdata.append('accessSalesFlag', JSON.stringify(config.partnerAdminConfiguration?.canAccessSales || false));\n formdata.append(\n 'accessConciergeFlag',\n JSON.stringify(config.partnerAdminConfiguration?.canAccessConcierge || false),\n );\n formdata.append('accessBrandsFlag', JSON.stringify(config.partnerAdminConfiguration?.canAccessBrands || false));\n formdata.append(\n 'createManageAdminsFlag',\n JSON.stringify(config.partnerAdminConfiguration?.createManageAdminsFlag || false),\n );\n formdata.append('accessOrdersFlag', JSON.stringify(config.partnerAdminConfiguration?.canAccessOrders || false));\n formdata.append(\n 'accessAutomationsFlag',\n JSON.stringify(config.partnerAdminConfiguration?.canAccessAutomations || false),\n );\n formdata.append(\n 'accessRetailBillingFlag',\n JSON.stringify(config.partnerAdminConfiguration?.canAccessRetailBilling || false),\n );\n formdata.append(\n 'defaultReportAccessScope',\n config.partnerAdminConfiguration.defaultReportAccessScope || 'noAccess',\n );\n return formdata;\n }\n\n private setDataForSalesPerson(config: TeamMemberConfiguration, persona: SalespersonPersona): URLSearchParams {\n const formdata = new URLSearchParams();\n formdata.append(\n 'marketId',\n config.salespersonConfiguration.marketId ? config.salespersonConfiguration.marketId : '_DEFAULT',\n );\n formdata.append('firstName', config.firstName);\n formdata.append('lastName', config.lastName);\n formdata.append('email', config.email);\n if (!persona) {\n formdata.append('sendWelcomeEmailFlag', JSON.stringify(config.salespersonConfiguration?.sendEmail || false));\n }\n formdata.append('isSalesManagerFlag', JSON.stringify(config.salespersonConfiguration?.isSalesManager || false));\n formdata.append('coverPageTitle', persona ? persona.titleChoice.valueOf() : 'partnerForSmb');\n return formdata;\n }\n\n getPersonaWithRetailBillingAttribute(persona: Persona): Persona {\n if (\n !persona.subject?.structAttributes?.attributes?.can_access_retail_billing &&\n !!persona.subject?.structAttributes?.attributes?.can_access_billing\n ) {\n persona.subject.structAttributes.attributes.can_access_retail_billing =\n persona.subject.structAttributes.attributes.can_access_billing;\n let dupe = false;\n let retailBillingAttribute: MultiValueAttribute;\n for (const attribute of persona.subject.attributes) {\n if (attribute.key === 'can_access_retail_billing') {\n dupe = true;\n }\n if (attribute.key === 'can_access_billing') {\n retailBillingAttribute = new MultiValueAttribute();\n retailBillingAttribute.key = 'can_access_retail_billing';\n retailBillingAttribute.values = attribute.values;\n }\n }\n if (!dupe && !!retailBillingAttribute) {\n persona.subject.attributes.push(retailBillingAttribute);\n }\n }\n return persona;\n }\n}\n"], "mappings": "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", "names": ["ManageSalespeopleService", "constructor", "api", "salesTeamService", "salespeople", "partnerId$", "accessService", "salesTeams$", "combineLatest", "hasAccessToFeature", "pipe", "switchMap", "partnerId", "hasAccess", "list", "undefined", "catchError", "of", "results", "mergeMap", "resp", "from", "team", "getMembersForTeam", "groupId", "map", "m", "__spreadProps", "__spreadValues", "members", "toArray", "shareReplay", "emailToSalesTeamInfoMap$", "emailToSalesTeamInfoMap", "getSalespersonLoginUrl", "get", "withCredentials", "data", "loginUrl", "resendWelcomeEmail", "salespersonId", "usePlatformDefaultDomain", "sendPasswordResetEmail", "mapTo", "deleteSalesperson", "body", "HttpParams", "set", "post", "toString", "headers", "HttpHeaders", "success", "getMembers", "teams", "spData", "forEach", "teamInfo", "name", "teamName", "member", "email", "push", "\u0275\u0275inject", "HttpClient", "SalesTeamService", "SalespeopleService", "StubAccessService", "factory", "\u0275fac", "providedIn", "_ManageSalespeopleService", "DEFAULT_INVITE_MEMBER", "salespersonConfiguration", "sendEmail", "isSalesManager", "partnerAdminConfiguration", "canAccessDashboard", "canAccessBilling", "canCustomizeWhitelabel", "canAccessCompanyProfile", "canAccessMarketplace", "canEnableApps", "canAccessAccounts", "canAccessMarketing", "canAccessSales", "canAccessConcierge", "canAccessBrands", "createManageAdminsFlag", "canAccessOrders", "canAccessAutomations", "canAccessRetailBilling", "defaultReportAccessScope", "platformPermissions", "canWriteCrmContacts", "canWriteCrmActivities", "canWriteCrmCompanies", "taskManagerConfiguration", "CREATE_PARTNER_ADMIN_URL", "CREATE_SALES_PERSON_URL", "EDIT_PARTNER_ADMIN_URL", "EDIT_SALES_PERSON_URL", "TeamMemberService", "constructor", "manageSalespeopleService", "conciergeUserService", "iamApiService", "vFormTranslationService", "featureFlagService", "matDialog", "translateService", "http", "partnerId$", "iamService", "analyticsService", "platformPermissionsService", "deleteAdminUrl", "selectedUser$$", "BehaviorSubject", "selectedUser$", "asObservable", "crmFeatureEnabled$", "combineLatest", "pipe", "map", "partnerId", "switchMap", "batchGetStatus", "featureIds", "response", "hasAccess", "length", "shareReplay", "setSelectedUser", "user", "next", "createTeamMember", "config", "calls", "failedRoles", "userCreated$", "ReplaySubject", "email", "toLowerCase", "hasPartnerAdmin", "partnerAdmin$", "createPartnerAdmin", "isSuccess", "push", "persona", "PersonaType", "partner", "error", "createAdminError", "tap", "s", "hasSalesperson", "salesPerson$", "createSalesperson", "sales_person", "createSalespersonError", "hasTaskManager", "trackEvent", "taskManagerUser$", "createTaskManager", "digital_agent", "createDigitalAgentError", "createPermissions$", "p", "u", "listUsers", "namespace", "cursor", "pageSize", "res", "users", "userId", "updatePlatformPermissions", "catchError", "of", "success", "resp", "every", "x", "deleteMember", "userNamespace", "roles", "filter", "role", "valueOf", "deleteRoles", "deleteUser", "personas", "getUserSubjectsInNamespace", "partnerDelete", "includes", "deletePartnerAdmin", "salesDelete", "deleteSalesperson", "taskManagerDelete", "deleteTaskManager", "pd", "sd", "td", "deleteInternalUser", "effectiveUserNamespace", "UserIdentifier", "editMember", "current", "update", "personas$", "undefined", "partnerAdminUpdated", "editPartnerAdmin", "salesPersonUpdated", "editSalesperson", "taskManagerUserUpdated", "editTaskManager", "platformPermissionsUpdated", "getCreateTeamFailedRoles", "updatedMember", "currentMember", "partnerAdminPermissionsUpdated", "commonConfigIsEqual", "partnerAdminConfigIsEqual", "salespersonConfgIsEqual", "taskManagerConfigIsEqual", "marketIds", "marketId", "isManager", "firstName", "lastName", "currentMarkets", "updatedMarkets", "id", "getName", "name", "trim", "getPlatformPermissions", "getPermissions", "partnerInNamespace", "permissions", "find", "ns", "namespaceId", "canWriteContacts", "contacts", "writeScope", "ResourceScope", "RESOURCE_SCOPE_ALL", "canWriteActivities", "activities", "canWriteCompanies", "companies", "err", "status", "getTaskManagerConfig", "userPersonas$", "taskManager", "getDigitalAgentPersona", "take", "getUser", "subjectId", "Boolean", "Object", "keys", "partnerPermissions", "can_delete_tasks", "getMemberConfiguration", "fallbackFirstName", "fallbackLastName", "fallbackUserEmail", "taskManagerConfig$", "platformPermissions$", "taskManagerConfig", "tmc", "partnerAdmin", "getPartnerPersona", "accessibleMarkets", "isAdmin", "applyUserValuesIfNotSet", "salesperson", "getSalespersonPersona", "vals", "createUserWithoutAlert", "submitForm", "setDataForSalesPerson", "toString", "statusCode", "setDataForPartnerAdmin", "personasInput", "iamAgent", "agent", "revokeUserWithoutAlert", "successStr", "deleteAdminUser", "body", "HttpParams", "set", "encodeURIComponent", "post", "headers", "HttpHeaders", "instant", "_", "escape", "window", "location", "origin", "digitalAgent$", "digitalAgent", "throwError", "editUser", "console", "getExistingPlatformPermissionsNamespaces", "existingPermissions", "buildNamespaces", "existingNamespaces", "e", "namespaceType", "featureEnabled", "request", "readScope", "restrictedToMarketId", "updatePermissions", "DigitalAgentPersona", "SalespersonPersona", "PartnerPersona", "userIdentifier", "req", "listPersonas", "getPersonaWithRetailBillingAttribute", "fromPersona", "openDeleteConfirmationDialog", "titlePre", "title", "titlePost", "message", "confirm", "decline", "role1", "role2", "open", "ConfirmationDialogComponent", "data", "warn", "buttonText", "edit", "formdata", "URLSearchParams", "append", "forEach", "m", "JSON", "stringify", "titleChoice", "subject", "structAttributes", "attributes", "can_access_retail_billing", "can_access_billing", "dupe", "retailBillingAttribute", "attribute", "key", "MultiValueAttribute", "values", "\u0275\u0275inject", "ManageSalespeopleService", "ConciergeUserService", "IAMApiService", "VFormTranslationService", "FeatureFlagsApiService", "MatDialog", "TranslateService", "HttpClient", "IAMService", "ProductAnalyticsService", "PermissionsApiService", "factory", "\u0275fac", "_TeamMemberService"] }