import { Component, Input, OnInit } from '@angular/core'; import { ManageWFLUsersModalResponse, UsersAndRoutesLevel, WorkflowLevelPermissions } from '@core/typings/workflow.typing'; import { ManageWorkflowUser } from '@features/audience/audience.typing'; import { UserService } from '@features/users/user.service'; import { TypeaheadSelectOption } from '@yourcause/common'; import { AnalyticsService, EventType } from '@yourcause/common/analytics'; import { I18nService } from '@yourcause/common/i18n'; import { YCModalComponent } from '@yourcause/common/modals'; @Component({ selector: 'gc-manage-workflow-level-users-modal', templateUrl: './manage-workflow-level-users-modal.component.html', styleUrls: ['./manage-workflow-level-users-modal.component.scss'] }) export class ManageWorkflowLevelUsersModalComponent extends YCModalComponent implements OnInit { @Input() level: UsersAndRoutesLevel; selectedUsers: ManageWorkflowUser[]; permissionOptions: TypeaheadSelectOption[] = [{ label: this.i18n.translate( 'WORKFLOW:textWorkflowPassthrough', {}, 'Workflow passthrough' ), value: true }, { label: this.i18n.translate( 'WORKFLOW:textWorkflowLevelOnly', {}, 'Workflow level only' ), value: false }]; constructor ( private i18n: I18nService, private userService: UserService, private analyticsService: AnalyticsService ) { super(); } ngOnInit () { const allUsers = this.userService.allUsers; const deactivatedUsers = allUsers.filter((user) => { return user.isDeactivated; }).map((user) => user.id); this.selectedUsers = this.level.workflowLevelUsers.filter((user) => { return !deactivatedUsers.includes(user.clientUserId); }).map((user) => { return { id: user.clientUserId, name: user.firstName + ' ' + user.lastName, email: user.email, hasPassthrough: user.workflowLevelAccessType === WorkflowLevelPermissions.PASSTHROUGH }; }); } onSave (goToRouteModal = false) { this.closeModal.emit({ goToRouteModal, users: this.selectedUsers.map((user) => { return { clientUserId: user.id, workflowLevelUserAccessType: user.hasPassthrough ? WorkflowLevelPermissions.PASSTHROUGH : WorkflowLevelPermissions.LEVEL_ONLY }; }) }); this.analyticsService.emitEvent({ eventName: 'Manage workflow level users save', eventType: EventType.Click, extras: null }); } }