class Admins::CustomersController < Admins::BaseController
  helper_method :current_partner

  def index
    default_sort('created_at', 'desc')

    customers = Admins::CustomerQuery.call(params.merge(partner_id: current_partner.id))
    @customers = paginate(customers.preload(:school))
  end

  def create
    params[:school_ids] = Array.wrap(params[:school_ids])
    school_ids = School.where(id: params[:school_ids]).pluck(:id)

    ActiveRecord::Base.transaction do
      school_ids.each do |school_id|
        next if current_partner.customers.exists?(school_id)

        customer = Customer.create!(school_id: school_id)
        current_partner.partner_customers.create!(customer: customer)
      end
    end

    render_ok
  end

  def destroy
    current_partner.customers.find(params[:id]).destroy!

    render_delete_success
  end

  private

  def current_partner
    @_current_partner ||= Partner.find(params[:partner_id])
  end
end