initial public release
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user