class Admin::FinancialAid::WaiversController < Admin::Controller
  def index
    render_success :ok, json: waivers.includes(:family).map { |w| props(w) }
  end

  def batch_create
    objects = []
    existing_family_waivers = waivers.pluck(:family_id)
    params[:family_ids].each do |family_id|
      # Skip adding existing family into waivers
      next if existing_family_waivers.include?(family_id)

      objects << waivers.build(family_id: family_id)
    end

    if transactional_save(objects)
      render_success :ok
    else
      render_error :unprocessable_entity, errors: waiver
    end
  end

  def destroy
    if waiver.destroy
      render_success :ok
    else
      render_error :unprocessable_entity
    end
  end

  private
    def waivers
      current_school.find_or_build_admission_config.school_year.financial_aid_waivers
    end

    def waiver
      @waiver ||= waivers.find_by(id: params[:id])
    end

    def props(waiver)
      {
        id: waiver.id,
        school_year_id: waiver.school_year_id,
        family_id: waiver.family_id,
        family_name: waiver.family.name
      }
    end
end
