import { Pipe, PipeTransform } from '@angular/core'; import { ApplicationStatuses } from '@core/typings/status.typing'; @Pipe({ name: 'gcApplicationSlatActions' }) export class ApplicationSlatActionsPipe implements PipeTransform { ApplicationStatuses = ApplicationStatuses; transform ( status: ApplicationStatuses, hasOpenCycle: boolean, isDraft: boolean, hasAwards: boolean, allowCollaboration: boolean, programIsInvitationOnly: boolean, item: 'cancel'|'manageApplicants'|'copy'|'delete'|'dropdown' ) { const manageApplicants = allowCollaboration && status !== ApplicationStatuses.Canceled; const copyApplication = hasOpenCycle && !isDraft && !programIsInvitationOnly; const deleteApplication = isDraft; const cancelApplication = !hasAwards && ![ ApplicationStatuses.Canceled, ApplicationStatuses.Declined, ApplicationStatuses.Draft ].includes(status); switch (item) { case 'cancel': return cancelApplication; case 'manageApplicants': return manageApplicants; case 'delete': return deleteApplication; case 'copy': return copyApplication; default: case 'dropdown': return cancelApplication || manageApplicants || deleteApplication || copyApplication; } } }