From 1ae75eaa52722659c3402a40a1c1f98d5a1fa44e Mon Sep 17 00:00:00 2001 From: Rich Steinschneider Date: Wed, 26 Apr 2017 16:53:39 -0400 Subject: [PATCH] WIP add batch merge and batch convert lead Does not raise exception on errors, must check individual Soapforce::Result in array --- lib/soapforce/client.rb | 20 ++++++++++++++++++++ lib/soapforce/convert_lead_request.rb | 13 +++++++++++++ lib/soapforce/merge_request.rb | 16 ++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 lib/soapforce/convert_lead_request.rb create mode 100644 lib/soapforce/merge_request.rb diff --git a/lib/soapforce/client.rb b/lib/soapforce/client.rb index 2547965..c31084b 100644 --- a/lib/soapforce/client.rb +++ b/lib/soapforce/client.rb @@ -380,6 +380,16 @@ def convert_lead(attributes) leads = attributes.is_a?(Array) ? attributes : [attributes] call_soap_api(:convert_lead, leadConverts: leads) end + + # convert_lead_requests - array of ConvertLeadRequest + # returns array of Soapforce::Result + def batch_convert_lead!(convert_lead_requests) + r = call_soap_api( + :convert_lead, + request: convert_lead_requests.map(&:request_hash) + ) + [r].flatten + end # Public: Merges records together # @@ -402,6 +412,16 @@ def merge!(sobject_type, master_record_hash, ids) } ) end + + # merge_requests - array of MergeRequest + # returns array of soapforce result + def batch_merge!(merge_requests) + r = call_soap_api( + :merge, + request: merge_requests.map(&:request_hash) + ) + [r].flatten + end # Public: Merges records together # diff --git a/lib/soapforce/convert_lead_request.rb b/lib/soapforce/convert_lead_request.rb new file mode 100644 index 0000000..0a3959f --- /dev/null +++ b/lib/soapforce/convert_lead_request.rb @@ -0,0 +1,13 @@ +module Soapforce + ConvertLeadRequest = Struct.new(:lead_id, :contact_id, :account_id, :convert_status) do + def request_hash + { + leadId:self.lead_id, + contactId:self.contact_id, + accountId: self.account_id, + convertedStatus: self.convert_status, + doNotCreateOpportunity:true + } + end + end +end \ No newline at end of file diff --git a/lib/soapforce/merge_request.rb b/lib/soapforce/merge_request.rb new file mode 100644 index 0000000..913e408 --- /dev/null +++ b/lib/soapforce/merge_request.rb @@ -0,0 +1,16 @@ +module Soapforce + MergeRequest = Struct.new(:sobject_type,:master_id,:other_ids) do + def master_record_hash + { + 'Id' => self.master_id + } + end + + def request_hash + { + masterRecord: master_record_hash.merge(:'@xsi:type' => sobject_type), + recordToMergeIds: self.other_ids + } + end + end +end \ No newline at end of file