/**
 * Phone utilities for Multideal.
 *
 * formatPhoneHintLabel  — canonical chrome display (e.g. "XXX-XXXX-555")
 * extractPhoneHint      — last-3-digits hint from E.164 string
 * formatPhoneDisplay    — Israeli 05X-XXX-XXXX display format
 * normalizeToE164       — strip + dial-code prefix
 */

/** Canonical masked phone label shown in chrome. Always "XXX-XXXX-{hint}". */
export function formatPhoneHintLabel(hint: string): string {
  return `XXX-XXXX-${hint}`;
}

/** Extract last-3-digit hint from any phone string. Replaces inline `phone.slice(-3)`. */
export function extractPhoneHint(phone: string): string {
  return phone.slice(-3);
}

/**
 * Format a raw Israeli phone number for display: "05X-XXX-XXXX".
 * Input: E.164 (+9720541234567) or local (0541234567).
 */
export function formatPhoneDisplay(raw: string | null | undefined): string {
  if (!raw) return '';
  // Strip +972 country code if present
  const local = raw.startsWith('+972') ? '0' + raw.slice(4) : raw;
  const digits = local.replace(/\D/g, '');
  if (digits.length === 10) {
    return `${digits.slice(0, 3)}-${digits.slice(3, 6)}-${digits.slice(6)}`;
  }
  return local;
}

/**
 * Normalize a phone number to E.164 for a given country.
 * countryIso defaults to 'IL' (prefix +972, strip leading 0).
 */
export function normalizeToE164(phone: string, countryIso: string = 'IL'): string {
  if (!phone?.trim()) return '';
  const digits = phone.replace(/\D/g, '');
  if (countryIso === 'IL') {
    const local = digits.startsWith('972') ? digits.slice(3) : digits;
    const stripped = local.startsWith('0') ? local.slice(1) : local;
    return `+972${stripped}`;
  }
  // Generic: return digits with + prefix
  return `+${digits}`;
}