import { Pipe, PipeTransform } from '@angular/core'; import { Sublevel, WorkflowLevel } from '@core/typings/workflow.typing'; @Pipe({ name: 'gcCanDeleteOrDisableLevel' }) export class CanDeleteOrDisableLevelPipe implements PipeTransform { transform ( level: WorkflowLevel, sub: Sublevel, allLevels: WorkflowLevel[] = [], workflowHasApps = true, type: 'delete'|'disable'|'enable' ): boolean { const isSub = !!sub; const levelToEvaluate = sub || level; if (type === 'delete') { const passes = !workflowHasApps && !levelToEvaluate.hasAutomationRules && !levelToEvaluate.isDefaultLevelOnProgram; if (isSub) { return passes; } else { const notLastLevel = allLevels.length !== 1; const notLastNonDisabledLevel = allLevels.some((lvl) => { return !lvl.disabled && lvl.id !== level.id; }); return passes && notLastLevel && notLastNonDisabledLevel; } } else if (type === 'disable') { if (isSub) { return true; } else { const notLastLevel = allLevels.some((lvl) => { return !lvl.disabled && lvl.id !== level.id; }); return notLastLevel; } } else { if (isSub) { return !level.disabled; } return true; } } }