class Nimble::Company

Constants

RECORD_IS

MAX_RETRIES = 3

Public Class Methods

call(company_attributes, additional_details = nil) click to toggle source

CALLING METHOD

# File lib/nimble/company.rb, line 7
def self.call(company_attributes, additional_details = nil)
  # intialize retries
  return nil unless company_attributes.class == Hash
  retiries_count = 0
  begin
    # fetch headers
    headers = get_headers
    # find nimble id if exists
    if (additional_details.nil? || additional_details.class != Hash)
      additional_details = {
        save_on_empty: true,
        searchable_string: "",
        identifier: nil
      }
    end
    nimble_id = find_nimble_record(additional_details[:searchable_string], headers, additional_details[:identifier], Nimble::Company::RECORD_IS)
    # create json data
    data = get_save_data(company_attributes, additional_details[:save_on_empty])
    # save data on nimble
    result = save(nimble_id, data, headers)
    # send email based on response
    send_status(result)
  rescue => e
    # display error message
    puts e.message
    # increment retry count
    # retiries_count +=1
    # if Nimble::Company::MAX_RETRIES >= retiries_count
    #   # max upto 3 retries
    #   retry
    # else
      # send failed email
      send_status(nil, e.message)
    # end
  end
end
get_save_data(company_attributes, save_on_empty) click to toggle source
# File lib/nimble/company.rb, line 44
def self.get_save_data(company_attributes, save_on_empty)
  # parent json
  company_json = {
    "fields": {
    },
    "record_type": "company"

  }

  company_attributes.each {
    |key, value|
    field = {
      key&.to_s.gsub('_', ' ').to_sym => [
        {
          "value": value,
          "modifier": ""
        }
      ]
    }
    if save_on_empty
      company_json[:fields] = company_json[:fields].merge(field)
    else
      company_json[:fields] = company_json[:fields].merge(field) if value&.present?
    end
    field = {}
  }
  return company_json
end