module QuizApiClient::Services
  class QuizSessionService < BaseApiService
    def update(params:, token: nil)
      patch_to_quiz_api(params: params, token: token)
    end

    def show(params:, token: nil)
      raise 'Quiz Session Id Required' unless params && params[:id]

      access_code_params = {
        disable_ac_invalidation: params.delete(:disable_ac_invalidation)
      }.compact
      get_from_quiz_api(params: params, token: token, access_code_params: access_code_params)
    end

    private

    def patch_to_quiz_api(params:, token:)
      client(token: token).patch(
        "/api/quiz_sessions/#{params[:id]}",
        quiz_session: params
      )
    end

    def get_from_quiz_api(params:, token:, access_code_params:)
      client(token: token).get(
        "/api/quiz_sessions/#{params[:id]}",
        query: access_code_params
      )
    end
  end
end