From a433e1ca5461768baf0ad7a538f8f66a7d4a71a1 Mon Sep 17 00:00:00 2001 From: IJ Kim Date: Sun, 25 Jan 2015 16:52:27 -0500 Subject: [PATCH] added meeting configurations --- lib/sf.rb | 3 ++ lib/sf/contact.rb | 4 +- lib/sf/reg_event.rb | 10 ++++- lib/sf/reg_item.rb | 3 ++ lib/sf/reg_meeting.rb | 2 +- lib/sf/reg_meeting_option_association.rb | 53 +++++++++++++++++++++++ lib/sf/reg_option.rb | 54 ++++++++++++++++++++++++ lib/sf/reg_rate.rb | 45 ++++++++++++++++++++ lib/sf/reg_registration.rb | 3 +- lib/sf/version.rb | 2 +- 10 files changed, 174 insertions(+), 5 deletions(-) create mode 100644 lib/sf/reg_meeting_option_association.rb create mode 100644 lib/sf/reg_option.rb create mode 100644 lib/sf/reg_rate.rb diff --git a/lib/sf.rb b/lib/sf.rb index d82d42f..9c636a7 100644 --- a/lib/sf.rb +++ b/lib/sf.rb @@ -6,8 +6,11 @@ require "sf/contact_affiliation" require "sf/reg_event" require "sf/reg_meeting" +require "sf/reg_option" +require "sf/reg_rate" require "sf/reg_registration" require "sf/reg_item" +require "sf/reg_meeting_option_association.rb" require "sf/session" require "sf/session_type" require "sf/track" diff --git a/lib/sf/contact.rb b/lib/sf/contact.rb index 78a9df0..24f426c 100644 --- a/lib/sf/contact.rb +++ b/lib/sf/contact.rb @@ -6,7 +6,8 @@ class Sf::Contact 'Title', 'Email', 'HasOptedOutOfEmail', 'Phone', 'MailingStreet', 'MailingCity', 'MailingState', 'MailingPostalCode', 'MailingCountry', 'Status__c', 'Functional_Title__c', 'Informal_Name__c', - 'Meeting_Reg_Pre_Population_Opt_Out__c', 'Meeting_Reg_Hold__c'] + 'Meeting_Reg_Pre_Population_Opt_Out__c', 'Meeting_Reg_Hold__c', + 'gs_executive__c', 'techex_executive__c', 'gender__c'] FIELDS_SELECT_STR = FIELDS.join(', ') def initialize(contact=nil) @@ -75,6 +76,7 @@ def sf_person_mapping 'first_name' => 'FirstName', 'last_name' => 'LastName', 'informal_name' => 'Informal_Name__c', + 'gender' => 'gender__c', 'title' => 'Title', 'functional_title' => 'Functional_Title__c', 'email' => 'Email', diff --git a/lib/sf/reg_event.rb b/lib/sf/reg_event.rb index 1dc812d..f53b5ef 100644 --- a/lib/sf/reg_event.rb +++ b/lib/sf/reg_event.rb @@ -3,7 +3,9 @@ class Sf::RegEvent attr_accessor :reg_event FIELDS = ['Id', 'code__c', 'start_date__c', 'end_date__c', 'max_attendees__c', - 'early_rate_deadline__c', 'regular_rate_deadline__c', 'cancellation_deadline__c'] + 'early_rate_deadline__c', 'regular_rate_deadline__c', + 'cancellation_deadline__c', 'status__c', 'title__c'] + FIELDS_SELECT_STR = FIELDS.join(', ') def initialize(reg_event=nil) @reg_event = reg_event.nil? ? Restforce::SObject.new(sobject_type: 'RegEvent__c') : reg_event @@ -37,6 +39,12 @@ def self.where(args = {}) build_collection sobjects unless sobjects.blank? end + def self.by_codes(codes=[]) + where = codes.map{|code| "code__c = \'#{code}\'"}.join(" or ") + sobjects = Sf.client.query("select #{FIELDS_SELECT_STR} from RegEvent__c where #{where}") + build_collection sobjects unless sobjects.blank? + end + def self.create_from_event(event) return if event.nil? or event.id.nil? or !event.class.eql?(Event) diff --git a/lib/sf/reg_item.rb b/lib/sf/reg_item.rb index 42417fa..9760ab7 100644 --- a/lib/sf/reg_item.rb +++ b/lib/sf/reg_item.rb @@ -35,6 +35,9 @@ def reg_item_mapping 'reg_rate_description' => 'reg_rate_description__c', 'reg_rate_id' => 'reg_rate_id__c', 'seqn' => 'seqn__c', + 'sf_reg_meeting_id' => 'reg_meeting_id__c', + 'sf_reg_option_id' => 'reg_option_id__c', + 'response' => 'response__c', 'created_at' => 'created_at__c' } end diff --git a/lib/sf/reg_meeting.rb b/lib/sf/reg_meeting.rb index d1c2080..60a6f6e 100644 --- a/lib/sf/reg_meeting.rb +++ b/lib/sf/reg_meeting.rb @@ -15,7 +15,7 @@ def respond_to_missing?(method_name, include_private = false) def update(attrs = {}) attrs['Id'] = self.Id - Sf.client.update("RegMeeting__c", attrs) + Sf.client.update!("RegMeeting__c", attrs) end def self.find(id) diff --git a/lib/sf/reg_meeting_option_association.rb b/lib/sf/reg_meeting_option_association.rb new file mode 100644 index 0000000..48466c2 --- /dev/null +++ b/lib/sf/reg_meeting_option_association.rb @@ -0,0 +1,53 @@ +class Sf::RegMeetingOptionAssociation + include Sf::Base + + def initialize(reg_meeting_option_association=nil) + @reg_meeting_option_association = reg_meeting_option_association.nil? ? Restforce::SObject.new(sobject_type: 'RegMeetingOptionAssociation__c') : reg_meeting_option_association + end + + def method_missing(method_name, *args, &block) + @reg_meeting_option_association.send(method_name, *args, &block) + end + + def respond_to_missing?(method_name, include_private = false) + @reg_meeting_option_association.respond_to?(method_name, include_private) || super + end + + def update(attrs = {}) + attrs['Id'] = self.Id + Sf.client.update("RegMeetingOptionAssociation__c", attrs) + end + + def self.find(id) + new Sf.client.find("RegMeetingOptionAssociation__c", id) + end + + def self.find_by_code(code) + found_meeting = where({code__c: code}).first + new Sf.client.find("RegMeetingOptionAssociation__c", found_meeting.Id) unless found_meeting.nil? + end + + def self.find_all_by_event_id(event_id) + found_meeting_options = where({reg_event_id__c: event_id}) + meeting_options = found_meeting_options.map do |meeting_option| + Sf.client.find("RegMeetingOptionAssociation__c", meeting_option.Id) unless meeting_option.nil? + end + build_collection meeting_options + end + + def self.where(args = {}) + where = args.map {|k,v| "#{k} = \'#{v}\'"}.join(" and ") + sobjects = Sf.client.query("select Id, Name from RegMeetingOptionAssociation__c where #{where}") + build_collection sobjects unless sobjects.blank? + end + + def self.find_all_by_meeting_id(meeting_id) + found_meeting_options = where({reg_meeting_id__c: meeting_id}) + meeting_options = found_meeting_options.map do |meeting_option| + Sf.client.find("RegMeetingOptionAssociation__c", meeting_option.Id) unless meeting_option.nil? + end + build_collection meeting_options + end + +end + diff --git a/lib/sf/reg_option.rb b/lib/sf/reg_option.rb new file mode 100644 index 0000000..526ba61 --- /dev/null +++ b/lib/sf/reg_option.rb @@ -0,0 +1,54 @@ +class Sf::RegOption + include Sf::Base + + def initialize(reg_option=nil) + @reg_option = reg_option.nil? ? Restforce::SObject.new(sobject_type: 'RegOption__c') : reg_option + end + + def method_missing(method_name, *args, &block) + @reg_option.send(method_name, *args, &block) + end + + def respond_to_missing?(method_name, include_private = false) + @reg_option.respond_to?(method_name, include_private) || super + end + + def update(attrs = {}) + attrs['Id'] = self.Id + Sf.client.update("RegOption__c", attrs) + end + + def self.find(id) + new Sf.client.find("RegOption__c", id) + end + + def self.find_by_code(code) + found_option = where({code__c: code}).first + new Sf.client.find("RegOption__c", found_option.Id) unless found_option.nil? + end + + def self.find_all_by_meeting_id(meeting_id) + found_meeting_options = Sf::RegMeetingOptionAssociation.find_all_by_meeting_id(meeting_id) + found_option_ids = found_meeting_options.map(&:reg_option_id__c) + options = found_option_ids.compact.map do |option_id| + Sf.client.find("RegOption__c", option_id) + end + build_collection options + end + + def self.find_all_by_event_id(event_id) + found_option = where({reg_event_id__c: event_id}) + option = found_option.map do |option| + Sf.client.find("RegOption__c", option.Id) unless option.nil? + end + build_collection option + end + + def self.where(args = {}) + where = args.map {|k,v| "#{k} = \'#{v}\'"}.join(" and ") + sobjects = Sf.client.query("select Id, Name from RegOption__c where #{where}") + build_collection sobjects unless sobjects.blank? + end + +end + diff --git a/lib/sf/reg_rate.rb b/lib/sf/reg_rate.rb new file mode 100644 index 0000000..1a17e38 --- /dev/null +++ b/lib/sf/reg_rate.rb @@ -0,0 +1,45 @@ +class Sf::RegRate + include Sf::Base + + def initialize(reg_rate=nil) + @reg_rate = reg_rate.nil? ? Restforce::SObject.new(sobject_type: 'RegRate__c') : reg_rate + end + + def method_missing(method_name, *args, &block) + @reg_rate.send(method_name, *args, &block) + end + + def respond_to_missing?(method_name, include_private = false) + @reg_rate.respond_to?(method_name, include_private) || super + end + + def update(attrs = {}) + attrs['Id'] = self.Id + Sf.client.update!("RegRate__c", attrs) + end + + def self.find(id) + new Sf.client.find("RegRate__c", id) + end + + def self.find_by_code(code) + found_rate = where({code__c: code}).first + new Sf.client.find("RegRate__c", found_rate.Id) unless found_rate.nil? + end + + def self.find_all_by_meeting_id(meeting_id) + found_rates = where({reg_meeting_id__c: meeting_id}) + rates = found_rates.map do |rate| + Sf.client.find("RegRate__c", rate.Id) unless rate.nil? + end + build_collection rates + end + + def self.where(args = {}) + where = args.map {|k,v| "#{k} = \'#{v}\'"}.join(" and ") + sobjects = Sf.client.query("select Id, Name from RegRate__c 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 498e6b1..01290b9 100644 --- a/lib/sf/reg_registration.rb +++ b/lib/sf/reg_registration.rb @@ -104,7 +104,8 @@ def registration_mapping 'receipt_id' => 'receipt_id__c', 'reference_id' => 'reference_id__c', 'balance' => 'balance__c', - 'from_ip_address' => 'ip_address__c' + 'from_ip_address' => 'ip_address__c', + 'sf_reg_event_id' => 'reg_event_id__c' } end diff --git a/lib/sf/version.rb b/lib/sf/version.rb index 9ba001a..87ecf55 100644 --- a/lib/sf/version.rb +++ b/lib/sf/version.rb @@ -1,3 +1,3 @@ module Sf - VERSION = "0.1.17" + VERSION = "0.1.18" end