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

  def batch_update
    objects = []
    params[:answers].each do |question_id, data|
      answer = find_or_build_answer(question_id.to_i)
      answer.answer = data[:answer]
      answer.notes = data[:notes]
      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 application
      @application ||= current_school.financial_aid_applications.find_by(id: params[:application_id])
    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
