Class: ScormEngine::Models::Registration

Inherits:
Base
  • Object
show all
Defined in:
lib/scorm_engine/models/registration.rb

Overview

rubocop:disable Metrics/AbcSize

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#to_hash

Instance Attribute Details

#activity_detailsScormEngine::Models::RegistrationActivityDetail


64
65
66
# File 'lib/scorm_engine/models/registration.rb', line 64

def activity_details
  @activity_details
end

#completed_dateTime

Time of the learner's first completion of this registration.

Returns:

  • (Time)

79
80
81
# File 'lib/scorm_engine/models/registration.rb', line 79

def completed_date
  @completed_date
end

#courseScormEngine::Models::Course


54
55
56
# File 'lib/scorm_engine/models/registration.rb', line 54

def course
  @course
end

#created_dateTime

Time of the creation of this registration.

Returns:

  • (Time)

84
85
86
# File 'lib/scorm_engine/models/registration.rb', line 84

def created_date
  @created_date
end

#first_access_dateTime

Time of the learner's first interaction with this registration.

Returns:

  • (Time)

69
70
71
# File 'lib/scorm_engine/models/registration.rb', line 69

def first_access_date
  @first_access_date
end

#idString

The external identification of the registration.

Returns:

  • (String)

8
9
10
# File 'lib/scorm_engine/models/registration.rb', line 8

def id
  @id
end

#instanceString

Returns:

  • (String)

34
35
36
# File 'lib/scorm_engine/models/registration.rb', line 34

def instance
  @instance
end

#last_access_dateTime

Time of the learner's last interaction with this registration.

Returns:

  • (Time)

74
75
76
# File 'lib/scorm_engine/models/registration.rb', line 74

def last_access_date
  @last_access_date
end

#learnerScormEngine::Models::Learner


59
60
61
# File 'lib/scorm_engine/models/registration.rb', line 59

def learner
  @learner
end

#registration_completionString

Has this registration been completed?

Returns:

  • (String)

    (UNKNOWN COMPLETED INCOMPLETE)


13
14
15
# File 'lib/scorm_engine/models/registration.rb', line 13

def registration_completion
  @registration_completion
end

#registration_completion_amountFloat

A decimal value between 0 and 1 representing the percentage of this course that the learner has completed so far, if known. Note: for learning standards other than SCORM 2004 4th Edition, this value is based on the percentage of activities completed/passed. This means that single-activity courses in those standards will always return either 0 or 1.

Returns:

  • (Float)

    (Unknown Passed Failed)


28
29
30
# File 'lib/scorm_engine/models/registration.rb', line 28

def registration_completion_amount
  @registration_completion_amount
end

#registration_successString

Has this registration been passed?

Returns:

  • (String)

    (Unknown Passed Failed)


18
19
20
# File 'lib/scorm_engine/models/registration.rb', line 18

def registration_success
  @registration_success
end

#scoreFloat

Scaled score between 0 and 100.

Returns:

  • (Float)

49
50
51
# File 'lib/scorm_engine/models/registration.rb', line 49

def score
  @score
end

#total_seconds_trackedInteger

How long the learner spent taking this registration, in seconds.

Returns:

  • (Integer)

44
45
46
# File 'lib/scorm_engine/models/registration.rb', line 44

def total_seconds_tracked
  @total_seconds_tracked
end

#updatedTime

Returns:

  • (Time)

39
40
41
# File 'lib/scorm_engine/models/registration.rb', line 39

def updated
  @updated
end

Class Method Details

.get_completed_at_from_api(options = {}) ⇒ Time

Extract and normalize the completed date from the API options.

Parameters:

  • options (Hash) (defaults to: {})

    The API options hash

Returns:

  • (Time)

    a date/time or nil if undefined.


180
181
182
183
184
185
# File 'lib/scorm_engine/models/registration.rb', line 180

def self.get_completed_at_from_api(options = {})
  completed_date = options["completedDate"]
  completed_date ||= options.fetch("score", {})["completedDate"]
  return if completed_date.nil?
  Time.parse(completed_date)
end

.get_score_from_api(options = {}) ⇒ Float

Extract and normalize the scaled passing score from the API options.

Parameters:

  • options (Hash) (defaults to: {})

    The API options hash

Returns:

  • (Float)

    A float between 0 and 100 or nil if undefined.


165
166
167
168
169
# File 'lib/scorm_engine/models/registration.rb', line 165

def self.get_score_from_api(options = {})
  score = options.fetch("score", {})["scaled"]
  return if score.nil?
  score.to_f
end

.new_from_api(options = {}) ⇒ Object


86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/scorm_engine/models/registration.rb', line 86

def self.new_from_api(options = {})
  this = new

  this.options = options.dup
  this.id = options["id"]
  this.instance = options["instance"]
  this.updated = Time.parse(options["updated"]) if options.key?("updated")
  this.registration_completion = options["registrationCompletion"]&.upcase
  this.registration_success = options["registrationSuccess"]&.upcase
  this.total_seconds_tracked = options["totalSecondsTracked"]&.to_i
  this.first_access_date = Time.parse(options["firstAccessDate"]) if options.key?("firstAccessDate")
  this.last_access_date = Time.parse(options["lastAccessDate"]) if options.key?("lastAccessDate")
  this.created_date = Time.parse(options["createdDate"]) if options.key?("createdDate")
  this.updated = Time.parse(options["updated"]) if options.key?("updated")
  this.registration_completion_amount = options["registrationCompletionAmount"].to_f # Sometimes it returns "NaN"

  this.score = get_score_from_api(options)
  this.completed_date = get_completed_at_from_api(options)

  this.activity_details = RegistrationActivityDetail.new_from_api(options["activityDetails"]) if options.key?("activityDetails")
  this.course = Course.new_from_api(options["course"]) if options.key?("course")
  this.learner = Learner.new_from_api(options["learner"]) if options.key?("learner")

  this
end

Instance Method Details

#complete?Boolean

Has this registration been completed?

Returns:

  • (Boolean)

    Returns true, false or nil if completion status is unknown.


118
119
120
121
# File 'lib/scorm_engine/models/registration.rb', line 118

def complete?
  return nil if registration_completion == "UNKNOWN"
  registration_completion == "COMPLETED"
end

#failed?Boolean

Has this registration failed?

Returns:

  • (Boolean)

    Returns true, false or nil if success status is unknown.


151
152
153
154
# File 'lib/scorm_engine/models/registration.rb', line 151

def failed?
  return nil if registration_success == "UNKNOWN"
  registration_success == "FAILED"
end

#incomplete?Boolean

Is this registration incomplete?

Returns:

  • (Boolean)

    Returns true, false or nil if completion status is unknown.


129
130
131
132
# File 'lib/scorm_engine/models/registration.rb', line 129

def incomplete?
  return nil if registration_completion == "UNKNOWN"
  registration_completion == "INCOMPLETE"
end

#passed?Boolean

Has this registration been passed?

Returns:

  • (Boolean)

    Returns true, false or nil if success status is unknown.


140
141
142
143
# File 'lib/scorm_engine/models/registration.rb', line 140

def passed?
  return nil if registration_success == "UNKNOWN"
  registration_success == "PASSED"
end