class EdFi::Indiana::Job
  include Sidekiq::Worker
  include Sidekiq::Status::Worker

  def perform(id, params={})
    @school_year_id = id
    @params = params
    EdFi::Indiana::ConfigJob.new.perform(id)
    call
    EdFi::Indiana::ConfigJob.perform_in(5.seconds, id)
  end

  def expiration
    @expiration ||= 1.year
  end

  private
    def school_year
      SchoolYear.find_by(id: @school_year_id)
    end

    def school
      school_year.school
    end

    def ed_fi_environment
      school.find_or_build_ed_fi_indiana_environment
    end

    def run_service(service_name, params={})
      dir = "#{ed_fi_environment.environment_service}::#{service_name.to_s.camelcase}"
      dir.constantize.call(school_year.id, params)
    end
end
