Class: Blackbaud::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/blackbaud-client.rb,
lib/blackbaud-client/version.rb

Defined Under Namespace

Classes: Version

Constant Summary collapse

VERSION =
Version::STRING

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Client

Returns a new instance of Client.



32
33
34
35
36
37
38
39
40
41
# File 'lib/blackbaud-client.rb', line 32

def initialize(options)
  @connector = Blackbaud::Connector.new(options[:url], options[:save_request_data_to])
  auth_params = {
    :database_key => options[:database_key],
    :database_number => options[:database_number],
    :vendor_id => options[:vendor_id],
    :vendor_key => options[:vendor_key]
  }.to_json
  @connector.token = get_token(auth_params)
end

Instance Attribute Details

#connectorObject

Returns the value of attribute connector.



31
32
33
# File 'lib/blackbaud-client.rb', line 31

def connector
  @connector
end

Instance Method Details

#get_academic_year_marking_columns(year_id) ⇒ Object



134
135
136
137
# File 'lib/blackbaud-client.rb', line 134

def get_academic_year_marking_columns(year_id)
  results = @connector.get("configuration/academic_years/#{year_id}/marking_columns")
  create_blackbaud_objects(Blackbaud::Session, results["sessions"])
end

#get_academic_years(id) ⇒ Object Also known as: academic_years



48
49
50
51
# File 'lib/blackbaud-client.rb', line 48

def get_academic_years(id)
  results = @connector.get("schedule/#{id}/academic_years")
  create_blackbaud_objects(Blackbaud::AcademicYear, results["academic_years"])
end

#get_attendance_by_class(ea7_class_id, start_date, end_date = nil) ⇒ Object Also known as: attendance_by_class



124
125
126
127
# File 'lib/blackbaud-client.rb', line 124

def get_attendance_by_class(ea7_class_id, start_date, end_date = nil)
  results = @connector.get("attendance/class/#{ea7_class_id}/#{format_date(start_date)}/#{format_date(end_date)}")
  create_blackbaud_objects(Blackbaud::AttendanceByClassRecord, results["attendance_by_class_records"])
end

#get_attendance_by_day(ea7_class_id, start_date, end_date = nil) ⇒ Object Also known as: attendance_by_day



129
130
131
132
# File 'lib/blackbaud-client.rb', line 129

def get_attendance_by_day(ea7_class_id, start_date, end_date = nil)
  results = @connector.get("attendance/day/#{ea7_class_id}/#{start_date}/#{end_date}")
  create_blackbaud_objects(Blackbaud::AttendanceByDayRecord, results["attendance_by_day_records"])
end

#get_attendance_codesObject Also known as: attendance_codes



119
120
121
122
# File 'lib/blackbaud-client.rb', line 119

def get_attendance_codes
  results = @connector.get("attendance/codes")
  create_blackbaud_objects(Blackbaud::AttendanceCode, results["attendance_codes"])
end

#get_class(id) ⇒ Object Also known as: class



99
100
101
102
# File 'lib/blackbaud-client.rb', line 99

def get_class(id)
  results = @connector.get("schedule/classes/#{id}")
  create_blackbaud_object(Blackbaud::BlackbaudClass, results["classes"].first)
end

#get_class_marking_columns(class_id) ⇒ Object Also known as: class_marking_columns



144
145
146
147
148
# File 'lib/blackbaud-client.rb', line 144

def get_class_marking_columns(class_id)
  results = @connector.get("grade/classes/#{class_id}/marking_columns")
  results["class_marking_columns"].each{|column| column["ea7_class_id"] = class_id}
  create_blackbaud_objects(Blackbaud::MarkingColumn, results["class_marking_columns"])
end

#get_classes(scope) ⇒ Object Also known as: classes



94
95
96
97
# File 'lib/blackbaud-client.rb', line 94

def get_classes(scope)
  results = @connector.get("schedule/#{scope.connection_string}/classes")
  create_blackbaud_objects(Blackbaud::BlackbaudClass, results["classes"])
end

#get_code_table_entries(code_table) ⇒ Object Also known as: code_table_entries



109
110
111
112
# File 'lib/blackbaud-client.rb', line 109

def get_code_table_entries(code_table)
  results = @connector.get("global/code_tables/#{code_table.id}")
  create_blackbaud_objects(Blackbaud::CodeTableEntry, results["table_entries"])
end

#get_code_tablesObject Also known as: code_tables



104
105
106
107
# File 'lib/blackbaud-client.rb', line 104

def get_code_tables
  results = @connector.get("global/code_tables")
  create_blackbaud_objects(Blackbaud::CodeTable, results["code_tables"])
end

#get_contact_typesObject Also known as: contact_types



53
54
55
56
# File 'lib/blackbaud-client.rb', line 53

def get_contact_types
  results = @connector.get("global/code_tables/phone%20type")
  create_blackbaud_objects(Blackbaud::CodeTableEntry, results["table_entries"])
end

#get_faweb_grades(class_id, marking_column_id) ⇒ Object Also known as: faweb_grades



155
156
157
158
# File 'lib/blackbaud-client.rb', line 155

def get_faweb_grades(class_id, marking_column_id)
  results = @connector.get("faweb_grade/classes/#{class_id}/marking_columns/#{marking_column_id}/grades")
  create_blackbaud_objects(Blackbaud::Grade, results["faweb_grades"])
end

#get_grades(class_id, marking_column_id) ⇒ Object Also known as: grades



150
151
152
153
# File 'lib/blackbaud-client.rb', line 150

def get_grades(class_id, marking_column_id)
  results = @connector.get("grade/classes/#{class_id}/marking_columns/#{marking_column_id}/grades")
  create_blackbaud_objects(Blackbaud::Grade, results["grades"])
end

#get_people(scope, filter_opts = {}) ⇒ Object Also known as: people

Return an Array of Person records

Available filter_opts:

  • :contact_types: An Array of id values that correspond to code_table table_entry records from the “phone type” code_table

  • :relationships: An Array of id values that correspond to code_table table_entry records from the “relationship” code_table



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/blackbaud-client.rb', line 76

def get_people(scope, filter_opts={})
  filters = {}
  filters["contact.type_id"] = filter_opts[:contact_types]
  filters["relation.relationship_code_id"] = filter_opts[:relationships]

  results = @connector.get("person/#{scope.connection_string}/people", filters)["people"].first

  {
    'faculty'   => Blackbaud::Person::USER_TYPE[:faculty],
    'students'  => Blackbaud::Person::USER_TYPE[:student],
  }.each do |response_key, type_id|
    if results[response_key].is_a?(Enumerable)
      results[response_key].each{|person| person['type'] = type_id}
    end
  end
  create_blackbaud_objects(Blackbaud::Person, results['faculty'].to_a + results['students'].to_a)
end

#get_person(id, filter_opts = {}) ⇒ Object Also known as: person



63
64
65
66
67
68
69
# File 'lib/blackbaud-client.rb', line 63

def get_person(id, filter_opts={})
  filters = {}
  filters["contact.type_id"] = filter_opts[:contact_types]
  filters["relation.relationship_code_id"] = filter_opts[:relationships]
  results = @connector.get("person/people/#{id}", filters)
  create_blackbaud_object(Blackbaud::Person, results["people"].first)
end

#get_relationshipsObject Also known as: relationships



58
59
60
61
# File 'lib/blackbaud-client.rb', line 58

def get_relationships
  results = @connector.get("global/code_tables/relationship")
  create_blackbaud_objects(Blackbaud::CodeTableEntry, results["table_entries"])
end

#get_session_marking_columns(session_id) ⇒ Object



139
140
141
142
# File 'lib/blackbaud-client.rb', line 139

def get_session_marking_columns(session_id)
  results = @connector.get("configuration/sessions/#{session_id}/marking_columns")
  create_blackbaud_objects(Blackbaud::MarkingColumn, results["marking_columns"])
end

#get_static_code_tables(id) ⇒ Object Also known as: static_code_tables



114
115
116
117
# File 'lib/blackbaud-client.rb', line 114

def get_static_code_tables(id)
  results = @connector.get("global/static_code_tables/#{id}")
  create_blackbaud_objects(Blackbaud::CodeTableEntry, results["table_entries"])
end

#get_token(auth_params) ⇒ Object



43
44
45
46
# File 'lib/blackbaud-client.rb', line 43

def get_token(auth_params)
  results = @connector.post('/security/access_token', auth_params)
  results["token"]
end

#get_translation_tables(id = nil) ⇒ Object Also known as: translation_tables



160
161
162
163
# File 'lib/blackbaud-client.rb', line 160

def get_translation_tables(id=nil)
  results = @connector.get("grade/translation_tables/#{id}")
  create_blackbaud_objects(Blackbaud::TranslationTable, results["translation_tables"])
end

#post_grades(grades) ⇒ Object



165
166
167
168
# File 'lib/blackbaud-client.rb', line 165

def post_grades(grades)
  results = @connector.post('/grade/class', format_grades(grades))
  create_blackbaud_objects(Blackbaud::Grade, results["grades"])
end