class RubyZoho::Crm

Attributes

module_name[RW]

Public Class Methods

all() click to toggle source
# File lib/crm.rb, line 93
def self.all
  result = RubyZoho.configuration.api.users('AllUsers')
  result.collect { |r| new(r) }
end
delete(id) click to toggle source
# File lib/crm.rb, line 85
def self.delete(id)
  raise 'Cannot delete users through API'
end
find_by_email(email) click to toggle source
# File lib/crm.rb, line 98
def self.find_by_email(email)
  r = []
  self.all.index { |u| r << u if u.email == email }
  r
end
method_missing(meth, *args, &block) click to toggle source
Calls superclass method Object::method_missing
# File lib/crm.rb, line 25
def self.method_missing(meth, *args, &block)
  if meth.to_s =~ /^find_by_(.+)$/
    run_find_by_method($1, *args, &block)
  else
    super
  end
end
new(object_attribute_hash = {}) click to toggle source
# File lib/crm.rb, line 15
def initialize(object_attribute_hash = {})
  @fields = object_attribute_hash == {} ? RubyZoho.configuration.api.fields(self.class.module_name) :
      object_attribute_hash.keys
  create_accessor(self.class, @fields)
  create_accessor(self.class, [:module_name])
  public_send(:module_name=, self.class.module_name)
  update_or_create_attrs(object_attribute_hash)
  self
end
run_find_by_method(attrs, *args, &block) click to toggle source
# File lib/crm.rb, line 42
def self.run_find_by_method(attrs, *args, &block)
  attrs = attrs.split('_and_')
  conditions = Array.new(args.size, '=')
  h = RubyZoho.configuration.api.find_records(
      self.module_name, ApiUtils.string_to_symbol(attrs[0]), conditions[0], args[0]
  )
  return h.collect { |r| new(r) } unless h.nil?
  nil
end
setup_classes() click to toggle source
# File lib/crm.rb, line 64
def self.setup_classes
  RubyZoho.configuration.crm_modules.each do |module_name|
    klass_name = module_name.chop
    c = Class.new(self) do
      include RubyZoho
      include ActiveModel
      extend ActiveModel::Naming

      attr_reader :fields
      @module_name = module_name
    end
    const_set(klass_name, c)
  end
end

Public Instance Methods

<<(object) click to toggle source
# File lib/crm.rb, line 52
def << object
  object.semodule = self.module_name
  object.seid = self.id
  object.fields << :seid
  object.fields << :semodule
  save_object(object)
end
method_missing(meth, *args, &block) click to toggle source
Calls superclass method Object::method_missing
# File lib/crm.rb, line 33
def method_missing(meth, *args, &block)
  if [:seid=, :semodule=].index(meth)
    run_create_accessor(self.class, meth)
    self.send(meth, args[0])
  else
    super
  end
end
primary_key() click to toggle source
# File lib/crm.rb, line 60
def primary_key
  RubyZoho.configuration.api.primary_key(self.class.module_name)
end
save() click to toggle source
# File lib/crm.rb, line 89
def save
  raise 'Cannot delete users through API'
end