/** Only confirmed context becomes a criterion; titles never assign a sector. */ export function preparationSearch( query: string, sector: string, path: { id: string; location_type: string }[], ) { const params = new URLSearchParams(); if (query.trim()) params.set('q', query.trim()); if (/^sector:[1-9]\d*$/.test(sector)) params.set('sector_id', sector.slice(7)); for (const place of path) if ( ['province', 'district', 'admin_post', 'locality'].includes( place.location_type, ) ) params.set(place.location_type + '_id', place.id); return params.toString(); } /** Carry only deliberate preparation criteria, never catalogue relationships. */ export function createInvestmentHref( values: Record, path: { id: string; location_type: string }[] = [], ) { const query = new URLSearchParams(); for (const key of ['sector_id', 'project_title', 'currency']) { if (typeof values[key] === 'string' && values[key]) query.set(key, values[key]); } if (typeof values.sector === 'string' && values.sector) query.set('sector', values.sector); for (const [from, to] of [ ['min_amount', 'investment_budget_min'], ['max_amount', 'investment_budget_max'], ] as const) { if (typeof values[from] === 'string' && values[from] !== '') query.set(to, values[from]); } for (const place of path) if ( ['province', 'district', 'admin_post', 'locality'].includes( place.location_type, ) ) query.set(place.location_type + '_id', place.id); return ( '/investimentos/iniciar' + (query.size ? '?' + query.toString() : '') ); }