package intake import ( "database/sql" ) // Manager handles all intake operations type Manager struct { session *Session } // NewManager creates a new intake manager func NewManager(db *sql.DB) *Manager { return &Manager{ session: NewSession(db), } } // GetCurrentSession loads or creates the current intake session func (m *Manager) GetCurrentSession() (*IntakeSession, error) { return m.session.LoadSession() } // SubmitPhaseAnswer records the user's answer for a phase func (m *Manager) SubmitPhaseAnswer(session *IntakeSession, answer FormAnswer) error { return m.session.SaveAnswer(session, answer) } // AdvanceToNextPhase moves the session to the next phase func (m *Manager) AdvanceToNextPhase(session *IntakeSession) Phase { newPhase := m.session.NextPhase(session) session.CurrentPhase = newPhase return newPhase } // CanAdvancePhase checks if all required fields are filled func (m *Manager) CanAdvancePhase(session *IntakeSession) bool { return m.session.CanAdvance(session) } // CompleteIntake marks the intake flow as done func (m *Manager) CompleteIntake(session *IntakeSession) error { return m.session.MarkComplete(session) }