class Family::Admissions::Applicants::CheckboxesController < Family::Admissions::Controller
  include Admin::Admissions::ApplicantScoped

  def index
    render_success :ok, json: checkboxes.map { |c| checkbox_props(c.checkbox) }
  end

  private
    def checkboxes
      applicant.application_checkboxes
        .eager_load(:checkbox)
        .where(internal: false)
        .order(:position)
    end

    def applicant_checkboxes
      applicant.applicant_checkboxes.includes(:user)
    end

    def checkbox_values
      @checkbox_values ||= applicant_checkboxes.index_by(&:checkbox_id)
    end

    def checkbox_props(checkbox)
      applicant_checkbox = checkbox_values[checkbox.id]
      {
        id: checkbox.id,
        name: checkbox.name,
        checked: applicant_checkbox&.checked || false,
        checked_at: applicant_checkbox&.checked_at
      }
    end
end
