class Skala::AlephAdapter::RenewUserLoans

Public Instance Methods

call(username, loan_ids = nil, options = {}) click to toggle source
# File lib/skala/aleph_adapter/renew_user_loans.rb, line 9
def call(username, loan_ids = nil, options = {})
  resolved_user_id = resolve_user(username)

  if loan_ids.blank? # renew all
    raw_aleph_response = adapter.restful_api.patron(resolved_user_id).circulationActions.loans.post
    successfully_renewed_loans_xpath = "//loan/status[contains(text(), 'success')]/parent::*"

    adapter.class::RenewUserLoans::Result.new(
      renewed_loans: begin
        Nokogiri::XML(raw_aleph_response).xpath(successfully_renewed_loans_xpath).map do |_loan|
          {
            id: _loan.attr("id"),
            due_date: new_due_date(_loan)
          }
        end
      end,
      source: raw_aleph_response
    )
  else
    raise "Unimplemented"
  end
end

Private Instance Methods

new_due_date(loan) click to toggle source
# File lib/skala/aleph_adapter/renew_user_loans.rb, line 34
def new_due_date(loan)
  if date = loan.at_xpath("./new-due-date").try(:content)
    Date.strptime(date, "%Y%m%d")
  end
end