class Family::FinancialAid::AnswersController < Family::Controller
  def index
    render_success :ok, json: answers
  end

  def batch_update
    objects = []
    params[:answers].each do |question_id, value|
      answer = find_or_build_answer(question_id.to_i)
      answer.answer = value
      objects << answer
    end

    if transactional_save(objects)
      render_success :ok, message: 'Answers updated.'
    else
      render_error :unprocessable_entity, errors: multi_errors(objects)
    end
  end

  private
    def current_admission_year
      current_school.find_or_build_admission_config.school_year
    end

    def application
      @application ||= current_family.financial_aid_applications
        .find_or_initialize_by(school_year: current_admission_year)
    end

    def answers
      @answers ||= application.answers.index_by(&:question_id)
    end

    def find_or_build_answer(question_id)
      answers[question_id] || application.answers.build(question_id: question_id)
    end
end
