/**
 * Validación de contacto en alta/edición persona (opcional: vacío = válido).
 */

/** Mínimo de dígitos si el usuario ingresó algo en teléfono (aprox. móvil local / internacional corto). */
export const PERSONA_TELEFONO_MIN_DIGITS = 8;
export const PERSONA_TELEFONO_MAX_DIGITS = 15;

/**
 * Comprueba formato de correo razonable (no RFC completo): `local@dominio.ext`.
 * @param {string} email
 * @returns {boolean}
 */
export function isPersonaEmailFormatValid(email) {
  if (typeof email !== 'string') return false;
  const s = email.trim();
  if (!s) return false;
  return /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/.test(s);
}

/**
 * Solo dígitos, recortado a largo máximo (entrada teléfono sin letras ni símbolos).
 * @param {string} raw
 * @returns {string}
 */
export function sanitizePersonaTelefonoInput(raw) {
  return String(raw ?? '')
    .replace(/\D/g, '')
    .slice(0, PERSONA_TELEFONO_MAX_DIGITS);
}

/**
 * Vacío es válido; si hay dígitos, deben estar entre mín y máx.
 * @param {string} digits
 * @returns {boolean}
 */
export function isPersonaTelefonoDigitCountValid(digits) {
  const d = sanitizePersonaTelefonoInput(digits);
  if (d.length === 0) return true;
  return d.length >= PERSONA_TELEFONO_MIN_DIGITS && d.length <= PERSONA_TELEFONO_MAX_DIGITS;
}
