lib/zendesk2/tickets.rb
# frozen_string_literal: true
class Zendesk2::Tickets
include Zendesk2::Collection
include Zendesk2::PagedCollection
include Zendesk2::Searchable
extend Zendesk2::Attributes
model Zendesk2::Ticket
attribute :requester_id, type: :integer
attribute :collaborator_id, type: :integer
attribute :view_id, type: :integer
assoc_accessor :requester
assoc_accessor :collaborator
self.collection_root = 'tickets'
self.model_method = :get_ticket
self.model_root = 'ticket'
self.search_type = 'ticket'
def collection_page(params = {})
collection_method = if requester_id
:get_requested_tickets
elsif collaborator_id
:get_ccd_tickets
elsif view_id
:get_view_tickets
else
:get_tickets
end
body = cistern.send(collection_method, Cistern::Hash.stringify_keys(attributes.merge(params))).body
load(body[collection_root]) # 'results' is the key for paged searches
merge_attributes(Cistern::Hash.slice(body, 'count', 'next_page', 'previous_page'))
self
end
scopes << :requester_id
scopes << :collaborator_id
scopes << :view_id
end