Files
apex-public/internal/intake/intake.go
T
2026-07-06 11:05:50 -04:00

45 lines
1.1 KiB
Go

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)
}