Skip to content

Commit

Permalink
create_from_event method is removed and reg_meeting is added
Browse files Browse the repository at this point in the history
  • Loading branch information
ij committed Jan 20, 2015
1 parent 1062ace commit 954857a
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 21 deletions.
1 change: 1 addition & 0 deletions lib/sf.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
require "sf/contact"
require "sf/contact_affiliation"
require "sf/reg_event"
require "sf/reg_meeting"
require "sf/reg_registration"
require "sf/reg_item"
require "sf/session"
Expand Down
63 changes: 42 additions & 21 deletions lib/sf/reg_event.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,56 @@ def respond_to_missing?(method_name, include_private = false)
@reg_event.respond_to?(method_name, include_private) || super
end

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

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

def self.find_by_code(code)
found_event = where({code__c: code}).first
new Sf.client.find("RegEvent__c", found_event.Id) unless found_event.nil?
end

def self.where(args = {})
where = args.map {|k,v| "#{k} = \'#{v}\'"}.join(" and ")
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)

# aborts if it is already in SF
if !!event.sf_event_id and sf_event = self.find(event.sf_event_id)
event.errors.add(:base, "RegEvent with ID #{sf_event.Id} already exists.")
return
end
if !!event.code and sf_event = self.find_by_code(event.code)
event.errors.add(:base, "RegEvent with ID #{sf_event.Id} already exists.")
return
end

attrs = {}
self.event_mapping.each do |event_attr, sf_event_attr|
reg_event_value = self.reg_event.send(event_attr)
reg_event_value = event.send(event_attr)
reg_event_value = reg_event_value.iso8601 if reg_event_value.class.eql?(ActiveSupport::TimeWithZone)
attrs[sf_event_attr] = reg_event_value unless reg_event_value.nil?
end
Sf.client.create("RegEvent__c", attrs)
attrs['Name'] = event.title
sf_reg_event_id = Sf.client.create("RegEvent__c", attrs)
event.sf_event_id = sf_reg_event_id
event.save
sf_reg_event = self.find(sf_reg_event_id)
self.new sf_reg_event
end

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

def event_mapping
def self.event_mapping
{
'code' => 'code__c',
'start_date' => 'start_date__c',
Expand All @@ -52,18 +86,5 @@ def event_mapping
}
end

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

def self.find_by_code(code)
where({code__c: code}).first
end

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

45 changes: 45 additions & 0 deletions lib/sf/reg_meeting.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
class Sf::RegMeeting
include Sf::Base

def initialize(reg_meeting=nil)
@reg_meeting = reg_meeting.nil? ? Restforce::SObject.new(sobject_type: 'RegMeeting__c') : reg_meeting
end

def method_missing(method_name, *args, &block)
@reg_meeting.send(method_name, *args, &block)
end

def respond_to_missing?(method_name, include_private = false)
@reg_meeting.respond_to?(method_name, include_private) || super
end

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

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

def self.find_by_code(code)
found_meeting = where({code__c: code}).first
new Sf.client.find("RegMeeting__c", found_meeting.Id) unless found_meeting.nil?
end

def self.find_all_by_event_id(event_id)
found_meetings = where({reg_event_id__c: event_id})
meetings = found_meetings.map do |meeting|
Sf.client.find("RegMeeting__c", meeting.Id) unless meeting.nil?
end
build_collection meetings
end

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

end

0 comments on commit 954857a

Please sign in to comment.