|
|
|
module RegistrationHelper
|
|
|
|
def current_registration_steps(registration = @registration)
|
|
|
|
return nil unless registration.present?
|
|
|
|
|
|
|
|
steps = registration_steps(registration.conference)
|
|
|
|
current_steps = []
|
|
|
|
disable_steps = false
|
|
|
|
completed_steps = registration.steps_completed || []
|
|
|
|
registration_complete = registration_complete?(registration)
|
|
|
|
|
|
|
|
if potential_provider(registration)
|
|
|
|
steps -= [:questions]
|
|
|
|
else
|
|
|
|
steps -= [:hosting]
|
|
|
|
end
|
|
|
|
|
|
|
|
steps.each do | step |
|
|
|
|
# disable the step if we've already found an incomplete step
|
|
|
|
enabled = !disable_steps || registration_complete
|
|
|
|
# record whether or not we've found an incomplete step
|
|
|
|
disable_steps ||= !completed_steps.include?(step.to_s)
|
|
|
|
|
|
|
|
current_steps << {
|
|
|
|
name: step,
|
|
|
|
enabled: enabled
|
|
|
|
}
|
|
|
|
end
|
|
|
|
return current_steps
|
|
|
|
end
|
|
|
|
|
|
|
|
def current_step(registration = @registration)
|
|
|
|
completed_steps = registration.steps_completed || []
|
|
|
|
last_step = nil
|
|
|
|
(current_registration_steps(registration) || []).each do | step |
|
|
|
|
# return the last enabled step if this one is disabled
|
|
|
|
return last_step unless step[:enabled]
|
|
|
|
|
|
|
|
# save the last step
|
|
|
|
last_step = step[:name]
|
|
|
|
|
|
|
|
# return this step if it hasn't been completed yet
|
|
|
|
return last_step unless completed_steps.include?(last_step.to_s)
|
|
|
|
end
|
|
|
|
|
|
|
|
# if all else fails, return the first step
|
|
|
|
return registration_steps(registration.conference).last
|
|
|
|
end
|
|
|
|
end
|