From f76bbcf19dcd7919a4e2c0b8982d804d06e17847 Mon Sep 17 00:00:00 2001 From: shancheas Date: Tue, 8 Jul 2025 14:12:02 +0700 Subject: [PATCH] feat: add phone number sanitization helper and integrate into queue manager - Introduced sanitizePhoneNumber function to clean and format phone numbers. - Updated GenerateQueueManager to use sanitizePhoneNumber for customer phone input. --- .../queue/domain/helpers/time.helper.ts | 23 +++++++++++++++++++ .../domain/usecases/generate-queue.manager.ts | 3 ++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/modules/queue/domain/helpers/time.helper.ts b/src/modules/queue/domain/helpers/time.helper.ts index eaa09d9..1eeecba 100644 --- a/src/modules/queue/domain/helpers/time.helper.ts +++ b/src/modules/queue/domain/helpers/time.helper.ts @@ -14,6 +14,29 @@ export function phoneNumberOnly(phone: string): string { return phone.replace(/[^0-9]/g, ''); } +export function sanitizePhoneNumber(phone: string): string { + // Remove all non-numeric characters first + const cleanPhone = phone.replace(/[^0-9]/g, ''); + + // If the number starts with '0', replace it with '+62' + if (cleanPhone.startsWith('0')) { + return '+62' + cleanPhone.slice(1); + } + + // If the number starts with '62', add '+' prefix + if (cleanPhone.startsWith('62')) { + return '+' + cleanPhone; + } + + // If the number doesn't start with '62' and is not empty, assume it's a local number and add '+62' + if (cleanPhone.length > 0) { + return '+62' + cleanPhone; + } + + // Return original if empty or invalid + return phone; +} + export function timeIsBefore( currentTime: number, time: number, diff --git a/src/modules/queue/domain/usecases/generate-queue.manager.ts b/src/modules/queue/domain/usecases/generate-queue.manager.ts index 7729f5c..5e447e2 100644 --- a/src/modules/queue/domain/usecases/generate-queue.manager.ts +++ b/src/modules/queue/domain/usecases/generate-queue.manager.ts @@ -14,6 +14,7 @@ import { QueueTimeFormula } from './formula/queue-time.formula'; import { RegisterQueueManager } from './register-queue.manager'; import { TransactionModel } from 'src/modules/transaction/transaction/data/models/transaction.model'; import { QueueModel } from '../../data/models/queue.model'; +import { sanitizePhoneNumber } from '../helpers/time.helper'; @Injectable() export class GenerateQueueManager { @@ -34,7 +35,7 @@ export class GenerateQueueManager { const customerOrder = { code: invoice_code, customer: customer_name, - phone: customer_phone, + phone: sanitizePhoneNumber(customer_phone), date: queue_date * 1000, transaction_id: id, };