class EmployerSetupForm
  include ActiveModel::Model
  include ActiveModel::Attributes

  attribute :current_step, :string, default: "general"
  attribute :name, :string
  attribute :employer_logo
  attribute :group_number, :string
  attribute :pl_plan_key, :string
  attribute :effect_date, :string
  attribute :number_of_plans, :integer
  attribute :network, :string
  attribute :number_of_additional_network_logos, :integer
  attribute :plans, array: true, default: -> { [] }
#   attribute :benefit_descs, :hash, default: -> { {} }
  attribute :network_exceptions, array: true, default: -> { [] }

  attr_accessor :benefit_descs

  # Define validations based on the current step
  with_options on: :general_info do
    validates :name, presence: true
    validates :employer_logo, presence: true
    validates :group_number, presence: true
    validates :pl_plan_key, presence: true
    validates :effect_date, presence: true
    validates :number_of_plans, presence: true
    validates :network, presence: true
    # validates :number_of_additional_network_logos, presence: true if network = "cigna+"
  end

  with_options on: :plan_info do
    validates :plans, presence: true
    # validates :benefit_descs, presence: true
  end

  with_options on: :network_info do
    # validates :network_exceptions, presence: true if number_of_additional_network_logos > 0
  end

#   def initialize(params = {})
#     super(params)
#     # Ensure the attribute is a hash after initialization
#     @benefit_descs = params[:benefit_descs].to_h if params[:benefit_descs]
#   end

  def benefit_descs
    @benefit_descs ||= {}
  end

  def save
    # Implement logic to save data to models after all steps are complete
    # For example, create a User record with the collected data
    if valid? && step == total_steps
      # User.create!(name: name, email: email, password: password)
      true
    else
      false
    end
  end

end