class Smarteru::Resources::Users

Constants

DEFAULT_CREATE_INFO

Public Instance Methods

create(info = {}) click to toggle source
# File lib/smarteru/resources/users.rb, line 14
def create(info = {})
  validate!(info, :email, :employee_i_d, :given_name, :surname, :group)

  params = create_params(info)

  client.request('createUser', params)
end
enroll(id_or_email, group, module_id) click to toggle source
# File lib/smarteru/resources/users.rb, line 42
def enroll(id_or_email, group, module_id)
  params = {
    learning_module_enrollment: {
      enrollment: {
        user:                normalize_id_param(id_or_email),
        group_name:          group,
        learning_module_i_d: module_id } } }

  client.request('enrollLearningModules', params)
end
enrolled?(id_or_email, group, course_name) click to toggle source
# File lib/smarteru/resources/users.rb, line 75
def enrolled?(id_or_email, group, course_name)
  enrollments = learner_report(id_or_email, group)
  enrollments.any? { |e| e[:course_name] == course_name }
end
get(id_or_email) click to toggle source
# File lib/smarteru/resources/users.rb, line 4
def get(id_or_email)
  params = { user: normalize_id_param(id_or_email) }

  response = client.request('getUser', params)
  response.success? ? response.result[:user] : response
rescue Error => e
  return nil if e.code == 'GU:03'
  fail e
end
learner_report(id_or_email, group) click to toggle source
# File lib/smarteru/resources/users.rb, line 53
def learner_report(id_or_email, group)
  params = {
    report: {
      filters: {
        groups: {
          group_names: {
            group_name: group } },
        learning_modules: nil,
        users: {
          user_identifier: normalize_id_param(id_or_email, :email_address) } },
      columns: [
        { column_name: 'ENROLLED_DATE' },
        { column_name: 'COMPLETED_DATE' },
        { column_name: 'DUE_DATE' },
        { column_name: 'LAST_ACCESSED_DATE' },
        { column_name: 'STARTED_DATE' } ],
      custom_fields: nil } }

  response = client.request('getLearnerReport', params)
  [ response.result[:learner_report][:learner] ].flatten.compact
end
signin(id_or_email) click to toggle source
# File lib/smarteru/resources/users.rb, line 36
def signin(id_or_email)
  params = { security: normalize_id_param(id_or_email) }

  client.request('requestExternalAuthorization', params)
end
update(id_or_email, info = {}) click to toggle source
# File lib/smarteru/resources/users.rb, line 22
def update(id_or_email, info = {})
  params = { user:
    { identifier: normalize_id_param(id_or_email),
      info:       info,
      profile:    nil,
      groups:     nil } }

  client.request('updateUser', params)
end
update_employee_id(id_or_email, new_employee_id) click to toggle source
# File lib/smarteru/resources/users.rb, line 32
def update_employee_id(id_or_email, new_employee_id)
  update(id_or_email, employee_i_d: new_employee_id)
end

Private Instance Methods

create_params(info) click to toggle source
# File lib/smarteru/resources/users.rb, line 87
def create_params(info)
  group = info.delete(:group)

  { user: {
      info:    info.merge(DEFAULT_CREATE_INFO),
      profile: { home_group: group },
      groups: {
        group: {
          group_name:        group,
          group_permissions: nil } } } }
end
normalize_id_param(value, email_field_name = :email) click to toggle source
# File lib/smarteru/resources/users.rb, line 99
def normalize_id_param(value, email_field_name = :email)
  value =~ /@/ ? { email_field_name => value } : { employee_i_d: value }
end
validate!(params, *args) click to toggle source
# File lib/smarteru/resources/users.rb, line 103
def validate!(params, *args)
  args.each do |arg|
    fail(":#{arg} required to create user") unless params.include?(arg)
  end
end