class Icasework::Case

A Ruby representation of a case in iCasework

Public Class Methods

create(params) click to toggle source
# File lib/icasework/case.rb, line 18
def create(params)
  data = Icasework::Resource.create_case(params).data[:createcaseresponse]
  return nil unless data

  new(case_details: { case_id: data[:caseid] })
end
new(hash) click to toggle source
# File lib/icasework/case.rb, line 52
def initialize(hash)
  @hash = LazyHash.new(hash) do
    load_additional_data!
  end
end
where(params) click to toggle source
# File lib/icasework/case.rb, line 11
def where(params)
  cases = Icasework::Resource.get_cases(params).data[:cases]
  return [] unless cases

  [cases[:case]].flatten.map { |data| new(case_data(data)) }
end

Private Class Methods

case_data(data) click to toggle source
# File lib/icasework/case.rb, line 27
def case_data(data)
  {
    case_details: case_details_data(data),
    case_status: case_status_data(data),
    case_status_receipt: case_status_receipt_data(data),
    attributes: data[:attributes],
    classifications: [data[:classifications][:classification]].flatten,
    documents: [data[:documents][:document]].flatten
  }
end
case_details_data(data) click to toggle source
# File lib/icasework/case.rb, line 38
def case_details_data(data)
  { case_id: data[:case_id], case_type: data[:type],
    case_label: data[:label] }
end
case_status_data(data) click to toggle source
# File lib/icasework/case.rb, line 47
def case_status_data(data)
  { status: data[:status] }
end
case_status_receipt_data(data) click to toggle source
# File lib/icasework/case.rb, line 43
def case_status_receipt_data(data)
  { method: data[:request_method], time_created: data[:request_date] }
end

Public Instance Methods

[](key) click to toggle source
# File lib/icasework/case.rb, line 62
def [](key)
  @hash[key]
end
case_id() click to toggle source
# File lib/icasework/case.rb, line 58
def case_id
  self[:case_details][:case_id]
end
classifications() click to toggle source
# File lib/icasework/case.rb, line 66
def classifications
  @hash[:classifications].map { |c| Classification.new(c) }
end
documents() click to toggle source
# File lib/icasework/case.rb, line 70
def documents
  @hash[:documents].map { |d| Document.new(d) }
end
to_h() click to toggle source
# File lib/icasework/case.rb, line 74
def to_h
  @hash.to_h
end

Private Instance Methods

fetch_additional_data() click to toggle source
# File lib/icasework/case.rb, line 87
def fetch_additional_data
  @fetch_additional_data ||= begin
    cases = Icasework::Resource.get_case_details(
      case_id: case_id
    ).data[:cases]

    if cases
      cases[:case]
    else
      {}
    end
  end
end
load_additional_data!() click to toggle source
# File lib/icasework/case.rb, line 80
def load_additional_data!
  return @hash if @loaded

  @loaded = true
  @hash.deep_merge!(fetch_additional_data)
end