45 lines
1.1 KiB
Go
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)
|
|
}
|