Bike!Bike! Website!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

64 lines
2.1 KiB

module RegistrationHelper
def registration_steps(conference = @conference)
{
pre: [:policy, :contact_info, :workshops],
open: [:policy, :contact_info, :questions, :hosting, :payment, :workshops]
}[@this_conference.registration_status]
end
def registration_status(registration)
return :unregistered if registration.nil?
return registration.status
end
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 || []
if potential_provider(registration)
steps -= [:questions]
else
steps -= [:hosting]
end
steps -= [:payment] unless registration.conference.paypal_email_address.present? && registration.conference.paypal_username.present? && registration.conference.paypal_password.present? && registration.conference.paypal_signature.present?
steps -= [:payment, :workshops] if registration.is_attending == 'n'
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
current_steps << {
name: step,
enabled: !disable_steps
}
disable_steps ||= !completed_steps.include?(step.to_s)# && ![:payment, :workshops].include?(step)
end
return current_steps
end
def current_step(registration = @registration)
completed_steps = registration.steps_completed || []
last_step = nil
steps = current_registration_steps(registration) || []
steps.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 steps.last[:name]
end
end