From 2d9c725cefaa27813fbb6d232a406214a0ab13fe Mon Sep 17 00:00:00 2001 From: IJ Kim Date: Mon, 28 Sep 2015 14:22:51 -0400 Subject: [PATCH] added service institution --- lib/sf.rb | 1 + lib/sf/account.rb | 13 ++++++++++++ lib/sf/service_institution.rb | 39 +++++++++++++++++++++++++++++++++++ lib/sf/version.rb | 2 +- 4 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 lib/sf/service_institution.rb diff --git a/lib/sf.rb b/lib/sf.rb index 5cbf46a..2d10966 100644 --- a/lib/sf.rb +++ b/lib/sf.rb @@ -19,6 +19,7 @@ require "sf/room" require "sf/venue" require "sf/opportunity" +require "sf/service_institution" module Sf class << self def client diff --git a/lib/sf/account.rb b/lib/sf/account.rb index e8b14b5..edc8219 100644 --- a/lib/sf/account.rb +++ b/lib/sf/account.rb @@ -104,4 +104,17 @@ def self.inc_certs_to_be build_collection Sf.client.query("select #{FIELDS_SELECT_STR} from Account where InCommon_Participant__c = true and Id in (#{accts_str})") end + def self.active_inc_parts(service_name) + today = Date.today.strftime('%Y-%m-%d') + sobjects = Sf.client.query("select + Supporting_Institution__r.Id, + Supporting_Institution__r.Name, + Supporting_Institution__r.InCommon_Website_Name__c, + Supporting_Institution__r.InCommon_Participant_Type__c, + Supporting_Institution__r.InCommon_Weblink__c + from Service_Institution__c where Service__r.Name = \'#{service_name}\' + and (Service_End_Date__c = null or Service_End_Date__c > today) + and (Service_Start_Date__c = null or Service_Start_Date__c < today)") + build_collection sobjects.map(&:Supporting_Institution__r) unless sobjects.blank? + end end diff --git a/lib/sf/service_institution.rb b/lib/sf/service_institution.rb new file mode 100644 index 0000000..8795cfc --- /dev/null +++ b/lib/sf/service_institution.rb @@ -0,0 +1,39 @@ +class Sf::ServiceInstitution + include Sf::Base + API_NAME = 'Service_Institution__c' + FIELDS = [ + 'Id', 'Name', 'Account_ID__c', 'Current_Phase__c', 'Do_Not_Publish__c', + 'Provider__c', 'Service__c', 'Service_End_Date__c', 'Service_Provider__c', + 'Service_Start_Date__c', 'Subscription__c', 'Supporting_Institution__c', + 'Tier_of_Support__c' + ] + FIELDS_SELECT_STR = FIELDS.join(', ') + + def initialize(service_institution = nil) + @service_institution = service_institution + end + + def account + new Sf::Account.find("Account", Supporting_Institution__c) + end + + def method_missing(method_name, *args, &block) + @contact_affiliation.send(method_name, *args, &block) + end + + def respond_to_missing?(method_name, include_private = false) + @contact_affiliation.respond_to?(method_name, include_private) || super + end + + def self.find(id) + new Sf.client.find("ServiceInstitution__c", id) + end + + def self.where(args = {}) + where = args.map {|k,v| "#{k} = \'#{v}\'"}.join(" and ") + sobjects = Sf.client.query("select #{FIELDS_SELECT_STR} from #{API_NAME} where #{where}") + build_collection sobjects unless sobjects.blank? + end + +end + diff --git a/lib/sf/version.rb b/lib/sf/version.rb index 4fbc4f6..aeff44d 100644 --- a/lib/sf/version.rb +++ b/lib/sf/version.rb @@ -1,3 +1,3 @@ module Sf - VERSION = "0.1.30" + VERSION = "0.1.31" end