From 55dc4118becf198b074ad96a271dcb4ee45a9ca4 Mon Sep 17 00:00:00 2001 From: IJ Kim Date: Mon, 19 Dec 2016 22:16:27 -0500 Subject: [PATCH] added checkin methods --- lib/sf/base.rb | 36 +++++++++--------- lib/sf/reg_registration.rb | 75 +++++++++++++++++++++++++++++++------- lib/sf/version.rb | 2 +- 3 files changed, 80 insertions(+), 33 deletions(-) diff --git a/lib/sf/base.rb b/lib/sf/base.rb index 684acaa..4f5cec5 100644 --- a/lib/sf/base.rb +++ b/lib/sf/base.rb @@ -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 diff --git a/lib/sf/reg_registration.rb b/lib/sf/reg_registration.rb index 3594258..c748214 100644 --- a/lib/sf/reg_registration.rb +++ b/lib/sf/reg_registration.rb @@ -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) @@ -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 @@ -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 @@ -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 @@ -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 diff --git a/lib/sf/version.rb b/lib/sf/version.rb index b33da3c..a503738 100644 --- a/lib/sf/version.rb +++ b/lib/sf/version.rb @@ -1,3 +1,3 @@ module Sf - VERSION = "0.1.42" + VERSION = "0.1.43" end