import { Pipe, PipeTransform } from '@angular/core'; import { ICaInput } from '../config'; @Pipe({ name: 'inputPattern', standalone: true, }) export class InputPatternPipe implements PipeTransform { transform(inputName: string, inputConfig: ICaInput) { if (inputConfig.priceSeparator) { return { regex: /^[0-9.]*$/, restrictMultipeDots: true, isDecimalAndDotOnly: true, }; } else if (inputConfig.thousandSeparator) { return { regex: /^[0-9]*$/, isDecimalAndDotOnly: true, }; } else if ( ['business name', 'shop name', 'fuel stop'].includes(inputName) ) { return { regex: /^[A-Za-z0-9!#'$&%()*+,./[:;=<>?çéâêîôûàèìòùëïü\s-]*$/g, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; } else if (['phone', 'fax'].includes(inputName)) { return { regex: /^[0-9() -]*$/g, }; } else if ( [ 'mc/ff', 'phone-extension', 'account-bank', 'routing-bank', 'fuel-card', 'empty-weight', 'credit limit', 'po box', 'price', 'trailer-volume', 'repair-odometer', 'usdot', 'irp', 'starting', 'customer pay term', 'customer credit', 'default base', 'each occurrence', 'damage', 'personal-adver-inj', 'medical expenses', 'bodily injury', 'general aggregate', 'products-comp-op-agg', 'combined-single-limit', 'single-conveyance', 'deductable', 'compreh-collision', 'trailer-value-insurance-policy', 'rent', 'salary', 'mileage', 'months', 'empty weight', 'qty', 'purchase price', ].includes(inputName) ) { return { regex: /^[0-9]*$/g, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[0-9]*$/g; } else if ('email' === inputName) { return { regex: /^[A-Za-z0-9!#$%&'*+/=?^_`{|}~@.-]*$/g, restrictConsecutiveSpaces: false, restrictConsecutiveDots: true, restrictMultipeDots: false, }; //return /^[A-Za-z0-9!#$%&'*+/=?^_`{|}~@.-]*$/g; } else if ('invoice' === inputName) { return { regex: /^[A-Za-z0-9/-]*$/g, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[A-Za-z0-9/-]*$/g; } else if ( ['address-unit', 'department', 'vehicle-unit'].includes(inputName) ) { return { regex: /^[A-Za-z0-9]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[A-Za-z0-9]*$/; } else if ('first name' === inputName) { return { regex: /^[A-Za-z',\s.-]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[A-Za-z',\s.-]*$/; } else if ('last name' === inputName) { return { regex: /^[A-Za-z',\s.-]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[A-Za-z',\s.-]*$/; } else if ('bank name' === inputName) { return { regex: /^[A-Za-z0-9!#'$&%()*+,./:;=<>?-^[]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[A-Za-z0-9!#'$&%()*+,./:;=<>?-^[]*$/; } else if ( ['vin-number', 'insurance-policy', 'ifta'].includes(inputName) ) { return { regex: /^[A-Za-z0-9-]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[A-Za-z0-9-]*$/; } else if ('truck-trailer-model' === inputName) { return { regex: /^[A-Za-z0-9\s-]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[A-Za-z0-9\s-]*$/; } else if ('year' === inputName) { return { regex: /^(|0|[1-9]\d*)$/, }; //return /^[0-9]$/; } else if ('license plate' === inputName) { return { regex: /^[A-Za-z0-9\s]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[A-Za-z0-9\s]*$/; } else if ('description' === inputName) { return { regex: /^[A-Za-z0-9-.,/\s]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[A-Za-z0-9-.,/\s]*$/; } else if ('dba name' === inputName) { return { regex: /^[A-Za-z0-9!#'$&%()*+,./:;=<>?^[-]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[A-Za-z0-9!#'$&%()*+,./:;=<>?^[-]*$/; } else if ('per mile' === inputName) { return { regex: /^[0-9.]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[0-9.]*$/; } else if ('per stop' === inputName) { return { regex: /^[0-9]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[0-9]*$/; } else if ( ['emergency name', 'relationship', 'scac'].includes(inputName) ) { return { regex: /^[A-Za-z',\s.-]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[A-Za-z',\s.-]*$/; } else if ('fuel store' === inputName) { return { regex: /^[A-Za-z0-9-]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[A-Za-z0-9-]*$/; } else if ('hos' === inputName) { return { regex: /^[0-9]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[0-9]*$/; } else if (['full parking slot', 'parking slot'].includes(inputName)) { return { regex: /^[0-9,-]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[0-9,-]*$/; } else if ('cdl-number' === inputName) { return { regex: /^[A-Za-z0-9\s*-]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[A-Za-z0-9\s*-]*$/; } else if ( ['username', 'nickname', 'terminal name', 'password'].includes( inputName ) ) { return { regex: /^[A-Za-z0-9.,_!#^~[?/<`@$%*+=}{|:";>&'()-]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[A-Za-z0-9.,_!#^~[?/<`@$%*+=}{|:";>&'()-]*$/; } else if ('full name' === inputName) { return { regex: /^[A-Za-z0-9.,/!@#$%^&*()_+={}"':>?<;\s-]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[A-Za-z0-9.,/!@#$%^&*()_+={}"':>?<;\s-]*$/; } else if ('tollvalidation' === inputName) { return { regex: /^[0-9-]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[0-9-]*$/; } else if (['prefix', 'suffix', 'parking name'].includes(inputName)) { return { regex: /^[A-Za-z0-9]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[A-Za-z0-9]*$/; } else if ('file name' === inputName) { return { regex: /^[:*?"<>|/]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[:*?"<>|/]*$/; } else if ( ['producer name', 'insurer name', 'office name'].includes(inputName) ) { return { regex: /^[A-Za-z0-9!#'$&%()*+,./;:=<>?[^-]*$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[A-Za-z0-9!#'$&%()*+,./;:=<>?[^-]*$/; } else if (['full contact name'].includes(inputName)) { return { regex: /^[A-Za-z\s]+$/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, }; //return /^[A-Za-z\s]+$/; } return { regex: /.*/, restrictConsecutiveSpaces: false, restrictConsecutiveDots: false, restrictMultipeDots: false, isDecimalAndDotOnly: false, }; } }