Files
Goa-gel-fullstack/backend/src/common/utils/request-number.util.ts

42 lines
1.1 KiB
TypeScript
Raw Normal View History

import { RequestType } from '../enums';
import { REQUEST_NUMBER_PREFIX } from '../constants';
export class RequestNumberUtil {
/**
* Generate unique request number
* Format: {PREFIX}-{YEAR}-{SEQUENCE}
* Example: RL-2024-000001
*/
static generate(requestType: RequestType, sequence: number): string {
const prefix = REQUEST_NUMBER_PREFIX[requestType] || 'RQ';
const year = new Date().getFullYear();
const paddedSequence = sequence.toString().padStart(6, '0');
return `${prefix}-${year}-${paddedSequence}`;
}
/**
* Parse request number to extract components
*/
static parse(requestNumber: string): {
prefix: string;
year: number;
sequence: number;
} | null {
const match = requestNumber.match(/^([A-Z]+)-(\d{4})-(\d+)$/);
if (!match) return null;
return {
prefix: match[1],
year: parseInt(match[2], 10),
sequence: parseInt(match[3], 10),
};
}
/**
* Validate request number format
*/
static isValid(requestNumber: string): boolean {
return /^[A-Z]+-\d{4}-\d{6}$/.test(requestNumber);
}
}