import { Pipe, PipeTransform } from '@angular/core'; import { BudgetDetail, BudgetFundingSource } from '@core/typings/budget.typing'; import { ProcessingTypes } from '@core/typings/payment.typing'; @Pipe({ name: 'gcValidateRemoveFundingSource' }) export class ValidateRemoveFundingSourcePipe implements PipeTransform { transform ( row: BudgetFundingSource, error: 'paymentsAgainst'|'processorType', budget?: BudgetDetail, processor?: ProcessingTypes ) { switch (error) { case 'paymentsAgainst': return row.numberOfPayments > 0; case 'processorType': if ( budget.isUsedByClientProcessingType && ((processor === ProcessingTypes.Client)) ) { const validBFS = budget.budgetFundingSources.filter((bfs) => { return bfs.processingTypeId === ProcessingTypes.Client; }); return (row.processingTypeId === ProcessingTypes.Client) && (validBFS.length < 2); } else if ( budget.isUsedByYCProcessingType && ((processor === ProcessingTypes.YourCause)) ) { const validBFS = budget.budgetFundingSources.filter((bfs) => { return bfs.processingTypeId === ProcessingTypes.YourCause; }); return (row.processingTypeId === ProcessingTypes.YourCause) && (validBFS.length < 2); } else { return false; } default: return false; } } }