Files
starr-philproperties/apps/api/utils/personalInfo.util.js
T

59 lines
1.9 KiB
JavaScript

// 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 };