Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
reformatted reg_event, no other changes
Showing
1 changed file
with
92 additions
and
92 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,110 +1,110 @@ | ||
class Sf::RegEvent | ||
include Sf::Base | ||
attr_accessor :reg_event | ||
# frozen_string_literal: true | ||
|
||
FIELDS = ['Id', 'code__c', 'start_date__c', 'end_date__c', 'max_attendees__c', | ||
'early_rate_deadline__c', 'regular_rate_deadline__c', | ||
'cancellation_deadline__c', 'status__c', 'title__c'] | ||
module Sf | ||
class RegEvent | ||
include Sf::Base | ||
attr_accessor :reg_event | ||
|
||
FIELDS_SELECT_STR = FIELDS.join(', ') | ||
def initialize(reg_event=nil) | ||
@reg_event = reg_event.nil? ? Restforce::SObject.new(sobject_type: 'RegEvent__c') : reg_event | ||
end | ||
|
||
def method_missing(method_name, *args, &block) | ||
@reg_event.send(method_name, *args, &block) | ||
end | ||
|
||
def respond_to_missing?(method_name, include_private = false) | ||
@reg_event.respond_to?(method_name, include_private) || super | ||
end | ||
|
||
def update(attrs = {}) | ||
attrs['Id'] = self.Id | ||
Sf.client.update("RegEvent__c", attrs) | ||
end | ||
FIELDS = %w[Id code__c start_date__c end_date__c max_attendees__c | ||
early_rate_deadline__c regular_rate_deadline__c | ||
cancellation_deadline__c status__c title__c].freeze | ||
|
||
def self.find(id) | ||
new Sf.client.find("RegEvent__c", id) | ||
end | ||
FIELDS_SELECT_STR = FIELDS.join(', ') | ||
def initialize(reg_event = nil) | ||
@reg_event = reg_event.nil? ? Restforce::SObject.new(sobject_type: 'RegEvent__c') : reg_event | ||
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 method_missing(method_name, *args, &block) | ||
@reg_event.send(method_name, *args, &block) | ||
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 respond_to_missing?(method_name, include_private = false) | ||
@reg_event.respond_to?(method_name, include_private) || super | ||
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 update(attrs = {}) | ||
attrs['Id'] = self.Id | ||
Sf.client.update('RegEvent__c', attrs) | ||
end | ||
|
||
def self.create_from_event(event) | ||
return if event.nil? or event.id.nil? or !event.class.eql?(Event) | ||
def self.find(id) | ||
new Sf.client.find('RegEvent__c', id) | ||
end | ||
|
||
# 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 | ||
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 | ||
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 | ||
|
||
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 | ||
|
||
attrs = {} | ||
self.event_mapping.each do |event_attr, sf_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? | ||
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 | ||
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 | ||
|
||
# updating contact id on all reg_items in the reg event | ||
def update_contact_id_in_reg_items | ||
rr = 'reg_registration_id__r' | ||
sf_reg_items = Sf.client.query("select Id, Contact__c, #{rr}.Id, #{rr}.contact_id__c from RegItem__c where #{rr}.event_code__c = \'#{self.code__c}\'") | ||
sf_reg_items.each do |item| | ||
next unless item.Contact__c.nil? | ||
attrs = {'Id' => item.Id, 'Contact__c' => item.reg_registration_id__r.contact_id__c} | ||
Sf.client.update!("RegItem__c", attrs) | ||
def self.create_from_event(event) | ||
return if event.nil? || event.id.nil? || !event.instance_of?(Event) | ||
|
||
# aborts if it is already in SF | ||
if !event.sf_event_id.nil? && (sf_event = find(event.sf_event_id)) | ||
event.errors.add(:base, "RegEvent with ID #{sf_event.Id} already exists.") | ||
return | ||
end | ||
if !event.code.nil? && (sf_event = find_by_code(event.code)) | ||
event.errors.add(:base, "RegEvent with ID #{sf_event.Id} already exists.") | ||
return | ||
end | ||
|
||
attrs = {} | ||
event_mapping.each do |event_attr, sf_event_attr| | ||
reg_event_value = event.send(event_attr) | ||
reg_event_value = reg_event_value.iso8601 if reg_event_value.instance_of?(ActiveSupport::TimeWithZone) | ||
attrs[sf_event_attr] = reg_event_value unless reg_event_value.nil? | ||
end | ||
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 = find(sf_reg_event_id) | ||
new sf_reg_event | ||
end | ||
end | ||
|
||
# updating contact id on all reg_items in the reg event | ||
def update_contact_id_in_reg_items | ||
rr = 'reg_registration_id__r' | ||
sf_reg_items = Sf.client.query("select Id, Contact__c, #{rr}.Id, #{rr}.contact_id__c from RegItem__c where #{rr}.event_code__c = \'#{code__c}\'") | ||
sf_reg_items.each do |item| | ||
next unless item.Contact__c.nil? | ||
|
||
private | ||
|
||
def self.event_mapping | ||
{ | ||
'code' => 'code__c', | ||
'start_date' => 'start_date__c', | ||
'end_date' => 'end_date__c', | ||
'early_rate_deadline' => 'early_rate_deadline__c', | ||
'regular_rate_deadline' => 'regular_rate_deadline__c', | ||
'cancellation_deadline' => 'cancellation_deadline__c', | ||
'registration_closes_at' => 'registration_closes_at__c', | ||
'registration_opens_at' => 'registration_opens_at__c', | ||
'title' => 'title__c', | ||
'description' => 'description__c', | ||
'max_attendees' => 'max_attendees__c', | ||
'event_home_url' => 'event_home_url__c', | ||
'status' => 'status__c', | ||
'updated_at' => 'updated_at__c', | ||
'id' => 'reg_event_id__c' | ||
} | ||
end | ||
attrs = { 'Id' => item.Id, 'Contact__c' => item.reg_registration_id__r.contact_id__c } | ||
Sf.client.update!('RegItem__c', attrs) | ||
end | ||
end | ||
|
||
def self.event_mapping | ||
{ | ||
'code' => 'code__c', | ||
'start_date' => 'start_date__c', | ||
'end_date' => 'end_date__c', | ||
'early_rate_deadline' => 'early_rate_deadline__c', | ||
'regular_rate_deadline' => 'regular_rate_deadline__c', | ||
'cancellation_deadline' => 'cancellation_deadline__c', | ||
'registration_closes_at' => 'registration_closes_at__c', | ||
'registration_opens_at' => 'registration_opens_at__c', | ||
'title' => 'title__c', | ||
'description' => 'description__c', | ||
'max_attendees' => 'max_attendees__c', | ||
'event_home_url' => 'event_home_url__c', | ||
'status' => 'status__c', | ||
'updated_at' => 'updated_at__c', | ||
'id' => 'reg_event_id__c' | ||
} | ||
end | ||
end | ||
end | ||
|