// CareerProfileForm.js import React, { useEffect, useState } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import authFetch from '../utils/authFetch.js'; import CareerSearch from './CareerSearch.js'; // ← same component as onboarding export default function CareerProfileForm() { const { id } = useParams(); // "new" or an existing uuid const nav = useNavigate(); /* ---------- 1. local state ---------- */ const [form, setForm] = useState({ scenario_title : '', career_name : '', soc_code : '', status : 'current', start_date : '', retirement_start_date : '', college_enrollment_status : '', career_goals : '', desired_retirement_income_monthly : '' }); const [careerLocked, setCareerLocked] = useState(id !== 'new'); // lock unless new /* ---------- 2. helpers ---------- */ const handleChange = e => setForm(prev => ({ ...prev, [e.target.name]: e.target.value })); const handleCareerSelected = obj => { // obj = { title, soc_code, … } setForm(prev => ({ ...prev, career_name : obj.title, soc_code : obj.soc_code })); setCareerLocked(true); }; const unlockCareer = () => { // allow user to re‑pick setCareerLocked(false); setForm(prev => ({ ...prev, career_name: '', soc_code: '' })); }; /* ---------- 3. load an existing row (edit mode) ---------- */ useEffect(() => { if (id === 'new') return; (async () => { const res = await authFetch(`/api/premium/career-profile/${id}`); if (!res.ok) return; const d = await res.json(); setForm(prev => ({ ...prev, scenario_title : d.scenario_title ?? '', career_name : d.career_name ?? '', soc_code : d.soc_code ?? '', status : d.status ?? 'current', start_date : (d.start_date || '').slice(0, 10), // ← trim retirement_start_date : (d.retirement_start_date || '').slice(0, 10), college_enrollment_status : d.college_enrollment_status ?? '', career_goals : d.career_goals ?? '', desired_retirement_income_monthly : d.desired_retirement_income_monthly ?? '' })); })(); }, [id]); /* ---------- 4. save ---------- */ async function save() { if (!careerLocked && !form.soc_code) { alert('Please pick a valid career from the list first.'); return; } try { const res = await authFetch('/api/premium/career-profile', { method : 'POST', headers : { 'Content-Type': 'application/json' }, body : JSON.stringify({ ...form, start_date : form.start_date?.slice(0, 10) || null, retirement_start_date : form.retirement_start_date?.slice(0, 10) || null, id: id === 'new' ? undefined : id // upsert }) }); if (!res.ok) throw new Error(await res.text()); const data = await res.json(); // { career_profile_id: '...' } const activeId = data.career_profile_id || id; // handle edit vs new localStorage.setItem('lastSelectedCareerProfileId', activeId); nav(`/career-roadmap/${activeId}`, { replace: true }); // guarantees Roadmap selects this one } catch (err) { console.error(err); alert(err.message); } } /* ---------- 5. render ---------- */ return (