Skip to content

Commit

Permalink
added checkin methods
Browse files Browse the repository at this point in the history
  • Loading branch information
ij committed Dec 20, 2016
1 parent 62c1e13 commit 55dc411
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 33 deletions.
36 changes: 18 additions & 18 deletions lib/sf/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,44 +3,44 @@ module Base
def self.included(base)
base.extend(ClassMathods)
def update(args={})
unless self.Id.blank?
params = {'Id' => self.Id}
args.map {|k,v| params[k] = v}
Sf.client.update!(self.sobject.attributes[:type], params)
end
unless self.Id.blank?
params = {'Id' => self.Id}
args.map {|k,v| params[k] = v}
Sf.client.update!(self.sobject.attributes[:type], params)
end
end
end

module ClassMathods
def build_collection(models)
models.map { |model| new(model) }
models.map { |model| new(model) }
end

def class_name
obj = self.new
#TODO: migrate it to use obj.sobject, refer Opportunity initialize
cname = obj.sobject[:sobject_type]
cname ||= obj.sobject
obj = self.new
#TODO: migrate it to use obj.sobject, refer Opportunity initialize
cname = obj.sobject[:sobject_type]
cname ||= obj.sobject
end

def find(id)
new Sf.client.find(self.class_name, id)
new Sf.client.find(self.class_name, id)
end

def find_by_name(name)
sobject = where({Name: name}).first
find(sobject.Id) unless sobject.blank?
sobject = where({Name: name}).first
find(sobject.Id) unless sobject.blank?
end

def find_by(args = {})
sobject = where(args).first
find(sobject.Id) unless sobject.blank?
sobject = where(args).first
find(sobject.Id) unless sobject.blank?
end

def where(args = {})
where = args.map {|k,v| "#{k} = \'#{v}\'"}.join(" and ")
sobjects = Sf.client.query("select Id, Name from #{self.class_name} where #{where}")
build_collection sobjects unless sobjects.blank?
where = args.map {|k,v| "#{k} = \'#{v}\'"}.join(" and ")
sobjects = Sf.client.query("select Id, Name from #{self.class_name} where #{where}")
build_collection sobjects unless sobjects.blank?
end

end
Expand Down
75 changes: 61 additions & 14 deletions lib/sf/reg_registration.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ class Sf::RegRegistration
'exclude_directory', 'first_name', 'full_name', 'functional_title',
'informal_name', 'last_name', 'processed_by', 'processed_at',
'mobile_number', 'user_entered_organization_name',
'organization_display_name', 'phone_number', 'prefix',
'reg_classes', 'reg_event_id', 'reg_registration_id',
'rne_private', 'roster_private', 'sponsor_private',
'co_host_private', 'state', 'status', 'street_address',
'submitted_at', 'title', 'updated_at', 'version', 'website', 'zip',
'fax_number' ]
'derived_organization_name', 'phone_number', 'prefix',
'reg_classes', 'reg_event_id', 'reg_registration_id',
'rne_private', 'roster_private', 'sponsor_private',
'co_host_private', 'state', 'status', 'street_address',
'submitted_at', 'title', 'updated_at', 'version', 'website', 'zip',
'fax_number', 'check_in_at', 'receipt_id' ]

FIELDS_SELECT_STR = FIELDS.map{|fd| "#{fd}__c"}.join(', ')

def initialize(reg_registration=nil)
Expand Down Expand Up @@ -61,7 +61,7 @@ def create_from_registration

def update(attrs = {})
attrs['Id'] = self.Id
Sf.client.update("RegRegistration__c", attrs)
Sf.client.update("RegRegistration__c", attrs)
end

def registration_mapping
Expand Down Expand Up @@ -106,7 +106,8 @@ def registration_mapping
'reference_id' => 'reference_id__c',
'balance' => 'balance__c',
'from_ip_address' => 'ip_address__c',
'sf_reg_event_id' => 'reg_event_id__c'
'sf_reg_event_id' => 'reg_event_id__c',
'check_in_at' => 'check_in_at__c'
}
end

Expand All @@ -118,16 +119,62 @@ def self.all
end

def self.find(id)
new Sf.client.find("RegRegistration__c", id)
new Sf.client.find("RegRegistration__c", id)
end

def self.find_all_by_event_code(code)
self.where(event_code__c: code)
where_stmt = self.where(event_code__c: code)
self.query(where_stmt, order_stmt)
end

def self.all_processed(code)
where_stmt = self.where({event_code__c: code, status__c: "processed"})
order_stmt = self.order_by(last_name__c: "ASC")
self.query(where_stmt, order_stmt)
end

def self.all_checked_in(code)
where_stmt = "event_code__c = \'#{code}\' and check_in_at__c != null"
order_stmt = self.order_by(last_name__c: "ASC")
self.query(where_stmt, order_stmt)
end

def self.not_checked_in(code)
where_stmt = "event_code__c = \'#{code}\' and status__c = \'processed\' and check_in_at__c = null"
order_stmt = self.order_by(last_name__c: "ASC")
self.query(where_stmt, order_stmt)
end

def self.not_checked_in_a_to_i(code)
where_stmt = "event_code__c = \'#{code}\' and status__c = \'processed\' and check_in_at__c = null and last_name__c < \'J\'"
order_stmt = self.order_by(last_name__c: "ASC")
self.query(where_stmt, order_stmt)
end

def self.not_checked_in_j_to_r(code)
where_stmt = "event_code__c = \'#{code}\' and status__c = \'processed\' and check_in_at__c = null and last_name__c > \'J\' and last_name__c < \'S\'"
order_stmt = self.order_by(last_name__c: "ASC")
self.query(where_stmt, order_stmt)
end

def self.not_checked_in_s_to_z(code)
where_stmt = "event_code__c = \'#{code}\' and status__c = \'processed\' and check_in_at__c = null and last_name__c > \'S\'"
order_stmt = self.order_by(last_name__c: "ASC")
self.query(where_stmt, order_stmt)
end

def self.where(args = {})
where = args.map {|k,v| "#{k} = \'#{v}\'"}.join(" and ")
sobjects = Sf.client.query("select #{FIELDS_SELECT_STR} from RegRegistration__c where #{where}")
args.map {|k,v| "#{k} = \'#{v}\'"}.join(" and ")
end

# order_by(last_name: "ASC")
def self.order_by(args = {})
orders = args.map {|k,v| "#{k} #{v}"}.join(" ")
"ORDER BY #{orders}"
end

def self.query(where_stmt, order_stmt)
sobjects = Sf.client.query("select Id, #{FIELDS_SELECT_STR} from RegRegistration__c where #{where_stmt} #{order_stmt}")
build_collection sobjects unless sobjects.blank?
end

Expand All @@ -141,7 +188,7 @@ def self.attendees_for(event_code, reg_item_code)
end

def self.roster_for(event_code, reg_item_code)
all_attendees = self.attendees_for(event_code, reg_item_code)
all_attendees = self.attendees_for(event_code, reg_item_code)
all_attendees.map!{|a| a unless a.roster_private__c} unless all_attendees.nil?
all_attendees.compact unless all_attendees.nil?
end
Expand Down
2 changes: 1 addition & 1 deletion lib/sf/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module Sf
VERSION = "0.1.42"
VERSION = "0.1.43"
end

0 comments on commit 55dc411

Please sign in to comment.