From 9f52d3fbff4a747f5d5b0570b23036a40c39d749 Mon Sep 17 00:00:00 2001 From: Chad Pytel Date: Tue, 31 Dec 2019 11:15:48 -0500 Subject: [PATCH 1/2] Add unqualified_reason_id to leads service --- lib/basecrm/services/leads_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/basecrm/services/leads_service.rb b/lib/basecrm/services/leads_service.rb index 6d9de0c..5a47246 100644 --- a/lib/basecrm/services/leads_service.rb +++ b/lib/basecrm/services/leads_service.rb @@ -2,7 +2,7 @@ module BaseCRM class LeadsService - OPTS_KEYS_TO_PERSIST = Set[:address, :custom_fields, :description, :email, :facebook, :fax, :first_name, :industry, :last_name, :linkedin, :mobile, :organization_name, :owner_id, :phone, :skype, :source_id, :status, :tags, :title, :twitter, :website] + OPTS_KEYS_TO_PERSIST = Set[:address, :custom_fields, :description, :email, :facebook, :fax, :first_name, :industry, :last_name, :linkedin, :mobile, :organization_name, :owner_id, :phone, :skype, :source_id, :status, :tags, :title, :twitter, :website, :unqualified_reason_id] def initialize(client) @client = client From f73c439c347c6d183044616ac6e6a34401540b0f Mon Sep 17 00:00:00 2001 From: Chad Pytel Date: Fri, 8 May 2020 15:34:59 -0400 Subject: [PATCH 2/2] Add LeadCustomFields This is an endpoint that isn't currently supported in the main library. --- lib/basecrm.rb | 12 +++++++++ lib/basecrm/models/choice.rb | 5 ++++ lib/basecrm/models/lead_custom_field.rb | 4 +++ .../services/lead_custom_fields_service.rb | 26 +++++++++++++++++++ .../lead_custom_fields_service_spec.rb | 16 ++++++++++++ 5 files changed, 63 insertions(+) create mode 100644 lib/basecrm/models/choice.rb create mode 100644 lib/basecrm/models/lead_custom_field.rb create mode 100644 lib/basecrm/services/lead_custom_fields_service.rb create mode 100644 spec/services/lead_custom_fields_service_spec.rb diff --git a/lib/basecrm.rb b/lib/basecrm.rb index 57fd3bc..a02cb54 100644 --- a/lib/basecrm.rb +++ b/lib/basecrm.rb @@ -16,11 +16,13 @@ require 'basecrm/models/associated_contact' require 'basecrm/models/call' require 'basecrm/models/call_outcome' +require 'basecrm/models/choice' require 'basecrm/models/contact' require 'basecrm/models/deal' require 'basecrm/models/deal_source' require 'basecrm/models/deal_unqualified_reason' require 'basecrm/models/lead' +require 'basecrm/models/lead_custom_field' require 'basecrm/models/lead_source' require 'basecrm/models/lead_unqualified_reason' require 'basecrm/models/line_item' @@ -52,6 +54,7 @@ require 'basecrm/services/deal_sources_service' require 'basecrm/services/deal_unqualified_reasons_service' require 'basecrm/services/leads_service' +require 'basecrm/services/lead_custom_fields_service' require 'basecrm/services/lead_sources_service' require 'basecrm/services/lead_unqualified_reasons_service' require 'basecrm/services/line_items_service' @@ -181,6 +184,15 @@ def leads @leads ||= LeadsService.new(@http_client) end + # Access all LeadCustomField related actions. + # @see LeadCustomFieldsService + # @see LeadCustomField + # + # @return [LeadCustomFieldsService] Service object for resources. + def lead_custom_fields + @lead_custom_fields ||= LeadCustomFieldsService.new(@http_client) + end + # Access all LeadSources related actions. # @see LeadSourcesService # @see LeadSource diff --git a/lib/basecrm/models/choice.rb b/lib/basecrm/models/choice.rb new file mode 100644 index 0000000..04df676 --- /dev/null +++ b/lib/basecrm/models/choice.rb @@ -0,0 +1,5 @@ +module BaseCRM + class Choice < Model + end +end + diff --git a/lib/basecrm/models/lead_custom_field.rb b/lib/basecrm/models/lead_custom_field.rb new file mode 100644 index 0000000..d89ecf2 --- /dev/null +++ b/lib/basecrm/models/lead_custom_field.rb @@ -0,0 +1,4 @@ +module BaseCRM + class LeadCustomField < Model + end +end diff --git a/lib/basecrm/services/lead_custom_fields_service.rb b/lib/basecrm/services/lead_custom_fields_service.rb new file mode 100644 index 0000000..7783e7b --- /dev/null +++ b/lib/basecrm/services/lead_custom_fields_service.rb @@ -0,0 +1,26 @@ +module BaseCRM + class LeadCustomFieldsService + def initialize(client) + @client = client + end + + # Retrieve all lead custom fields + # + # get '/lead/custom_fields' + # + # If you want to use filtering or sorting (see #where). + # @return [Enumerable] Paginated resource you can use to iterate over all the resources. + def all + _, _, root = @client.get("/lead/custom_fields") + root[:items].map do |item| + LeadCustomField.new(item[:data]).tap do |custom_field| + if item[:data][:choices] + custom_field.choices = item[:data][:choices].map do |choice| + Choice.new(choice) + end + end + end + end + end + end +end diff --git a/spec/services/lead_custom_fields_service_spec.rb b/spec/services/lead_custom_fields_service_spec.rb new file mode 100644 index 0000000..0a9f7d4 --- /dev/null +++ b/spec/services/lead_custom_fields_service_spec.rb @@ -0,0 +1,16 @@ +require 'spec_helper' + +describe BaseCRM::LeadCustomFieldsService do + describe 'Responds to' do + subject { client.lead_custom_fields } + + it { should respond_to :all } + end + + describe :all do + it "returns an array" do + expect(client.lead_custom_fields.all).to be_an Array + end + end +end +