Sha256: d356094d01198f9d64e4a3d98c999f1184263a9c388d90a11cda2ebb76a73196

Contents?: true

Size: 1.85 KB

Versions: 1

Compression:

Stored size: 1.85 KB

Contents

module FatFreeCRM
  module Cloudfuji
    module EventObservers
      module Base
        # Shared methods for observers

        def find_lead_by_data
          # Look up Lead by ido_id or email address.
          lead = Lead.find_by_ido_id(data['customer_ido_id']) if data['customer_ido_id'].present?
          lead ||= Lead.find_by_email(email)
          update_ido_id_if_blank(lead)
          lead
        end


        def find_or_create_activity_subject!
          models = [Lead, Contact, Account]
          models.each do |model|
            has_ido_id = model.new.respond_to?(:ido_id)

            if data['customer_ido_id'].present? && has_ido_id
              asset = model.find_by_ido_id(data['customer_ido_id'])
              return asset if asset
            end

            if asset = model.find_by_email(email)
              update_ido_id_if_blank(asset) if has_ido_id
              return asset if asset
            end
          end

          puts "No pre-existing records found, creating a lead"
          lead = Lead.create!(
                  :email      => email,
                  :ido_id     => data['customer_ido_id'],
                  :first_name => email.split("@").first,
                  :last_name  => email.split("@").last,
                  :user       => User.first)
          lead
        end


        private

        def update_ido_id_if_blank(asset)
          # If lead was found by email and has blank ido_id,
          # but customer_ido_id is present, then update ido_id
          if asset && asset.respond_to?(:ido_id) &&
             asset.ido_id.blank? && data['customer_ido_id'].present?
            asset.update_attribute :ido_id, data['customer_ido_id']
          end
        end

        def data
          params['data']
        end

        def email
          data['email'] || data['recipient']
        end

      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ffcrm_cloudfuji-0.2.6 lib/fat_free_crm/cloudfuji/event_observers/base.rb