import { Component } from '@angular/core'; import { UsersImport } from '@core/typings/user.typing'; import { UsersImportValidationModel } from '@features/users/user.service'; import { FileService, OrganizedError } from '@yourcause/common'; import { AnalyticsService, EventType } from '@yourcause/common/analytics'; import { YCModalComponent } from '@yourcause/common/modals'; @Component({ selector: 'gc-import-users-modal', templateUrl: './import-users-modal.component.html', styleUrls: ['./import-users-modal.component.scss'] }) export class ImportUsersModalComponent extends YCModalComponent { ValidationModel = UsersImportValidationModel; users: UsersImport[]; errors: OrganizedError[]; importValid: boolean; constructor ( private fileService: FileService, private analyticsService: AnalyticsService ) { super(); } handleUsersSet (users: UsersImportValidationModel[]) { this.users = users.map((user) => { return { firstName: user['First Name'], lastName: user['Last Name'], jobTitle: user['Job Title'], email: user['Email'], roleIds: user['Roles'], workFlowLevelIds: user['Workflow Levels'], isSSO: user['Is SSO'] }; }); } handlePrimaryClick () { this.closeModal.emit(this.users); this.analyticsService.emitEvent({ eventName: 'Import users save', eventType: EventType.Click, extras: null }); } handleCancel () { this.closeModal.emit(); } downloadErrors () { const csv = this.fileService.convertObjectArrayToCSVString(this.errors); this.fileService.downloadString(csv, 'text/csv', 'ImportUsers_errors.csv'); this.analyticsService.emitEvent({ eventName: 'Download user import errors', eventType: EventType.Click, extras: null }); } }