class Payjunction::Contact < Payjunction::Customer
  belongs_to :contact, foreign_key: :person_id, class_name: '::Contact', optional: true

  attr_accessor :vaults, :api_data

  def delete_vaults
    sync_with_api
    return if vaults.empty?

    vaults.each do |vault|
      Payments::Payjunction::VaultService.call(school, :destroy, external_id, vault)
    end
  end

  private
    def sync_with_api
      self.api_data = Payments::Payjunction::CustomerService.call(
        school,
        :show,
        external_id: external_id
      )
      self.vaults = Payments::Payjunction::VaultService.call(school, :index, external_id)
    end

    def school
      contact.school
    end
end
