// utils/personalInfo.util.js /** * Computes full_name, full_address, full_number * from a personal_info object before saving to DB. * * @param {Object} personalInfo * @returns {Object} enriched personal_info */ function enrichPersonalInfo(personalInfo = {}) { if (!personalInfo || typeof personalInfo !== 'object') return personalInfo; const pi = { ...personalInfo }; // ── Full Name ──────────────────────────────────────────────────────────────── if (pi.name) { const { last_name, given_name, middle_name, extension_name } = pi.name; pi.name = { ...pi.name, full_name: [ last_name ? `${last_name},` : null, given_name, middle_name, extension_name, ] .filter((v) => v && v.trim() !== '') .join(' '), }; } // ── Full Addresses ─────────────────────────────────────────────────────────── if (Array.isArray(pi.addresses)) { pi.addresses = pi.addresses.map((addr) => ({ ...addr, full_address: [ addr.street, addr.city, addr.state, addr.country, addr.zip, ] .filter((v) => v && v.trim() !== '') .join(', '), })); } // ── Full Phone Numbers ─────────────────────────────────────────────────────── if (Array.isArray(pi.phone_number)) { pi.phone_number = pi.phone_number.map((phone) => ({ ...phone, full_number: `${phone.country_code || ''}${phone.number || ''}`, })); } return pi; } module.exports = { enrichPersonalInfo };