import { Result, ValueObject, isValidVietnamPhone, normalizeVietnamPhone } from '@modules/shared';

interface PhoneProps {
  value: string;
}

export class Phone extends ValueObject<PhoneProps> {
  get value(): string {
    return this.props.value;
  }

  static create(phone: string): Result<Phone, string> {
    if (!isValidVietnamPhone(phone)) {
      return Result.err('Số điện thoại không hợp lệ');
    }
    const normalized = normalizeVietnamPhone(phone);
    if (!normalized) {
      return Result.err('Không thể chuẩn hóa số điện thoại');
    }
    return Result.ok(new Phone({ value: normalized }));
  }
}
