lib/hubspot/deal.rb in hubspot-ruby-0.4.0 vs lib/hubspot/deal.rb in hubspot-ruby-0.5.0
- old
+ new
@@ -5,10 +5,11 @@
# HubSpot Deals API
#
# {http://developers.hubspot.com/docs/methods/deals/deals_overview}
#
class Deal
+ ALL_DEALS_PATH = "/deals/v1/deal/paged"
CREATE_DEAL_PATH = "/deals/v1/deal"
DEAL_PATH = "/deals/v1/deal/:deal_id"
RECENT_UPDATED_PATH = "/deals/v1/deal/recent/modified"
UPDATE_DEAL_PATH = '/deals/v1/deal/:deal_id'
ASSOCIATE_DEAL_PATH = '/deals/v1/deal/:deal_id/associations/:OBJECTTYPE?id=:objectId'
@@ -45,36 +46,70 @@
def associate!(deal_id, company_ids=[], vids=[])
objecttype = company_ids.any? ? 'COMPANY' : 'CONTACT'
object_ids = (company_ids.any? ? company_ids : vids).join('&id=')
Hubspot::Connection.put_json(ASSOCIATE_DEAL_PATH, params: { deal_id: deal_id, OBJECTTYPE: objecttype, objectId: object_ids}, body: {})
end
-
+
def find(deal_id)
response = Hubspot::Connection.get_json(DEAL_PATH, { deal_id: deal_id })
new(response)
end
+ def all(opts = {})
+ path = ALL_DEALS_PATH
+
+ opts[:includeAssociations] = true # Needed for initialize to work
+ response = Hubspot::Connection.get_json(path, opts)
+
+ result = {}
+ result['deals'] = response['deals'].map { |d| new(d) }
+ result['offset'] = response['offset']
+ result['hasMore'] = response['hasMore']
+ return result
+ end
+
# Find recent updated deals.
# {http://developers.hubspot.com/docs/methods/deals/get_deals_modified}
# @param count [Integer] the amount of deals to return.
# @param offset [Integer] pages back through recent contacts.
def recent(opts = {})
response = Hubspot::Connection.get_json(RECENT_UPDATED_PATH, opts)
response['results'].map { |d| new(d) }
end
-
+
# Find all deals associated to a company
# {http://developers.hubspot.com/docs/methods/deals/get-associated-deals}
# @param company [Hubspot::Company] the company
# @return [Array] Array of Hubspot::Deal records
def find_by_company(company)
+ find_by_association company
+ end
+
+ # Find all deals associated to a contact
+ # {http://developers.hubspot.com/docs/methods/deals/get-associated-deals}
+ # @param contact [Hubspot::Contact] the contact
+ # @return [Array] Array of Hubspot::Deal records
+ def find_by_contact(contact)
+ find_by_association contact
+ end
+
+ # Find all deals associated to a contact or company
+ # {http://developers.hubspot.com/docs/methods/deals/get-associated-deals}
+ # @param object [Hubspot::Contact || Hubspot::Company] a contact or company
+ # @return [Array] Array of Hubspot::Deal records
+ def find_by_association(object)
path = ASSOCIATED_DEAL_PATH
- params = { objectType: :company, objectId: company.vid }
+ objectType = case object
+ when Hubspot::Company then :company
+ when Hubspot::Contact then :contact
+ else raise(Hubspot::InvalidParams, "Instance type not supported")
+ end
+
+ params = { objectType: objectType, objectId: object.vid }
response = Hubspot::Connection.get_json(path, params)
response["results"].map { |deal_id| find(deal_id) }
end
-
end
# Archives the contact in hubspot
# {https://developers.hubspot.com/docs/methods/contacts/delete_contact}
# @return [TrueClass] true