Class: ScormEngine::Models::Registration

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#to_hash

Instance Attribute Details

#activity_detailsObject

TODO: Not sure we want this to be settable. Will depend on how we go about creating/updating records. For now it makes it easier to create instances from API options hash.



16
17
18
# File 'lib/scorm_engine/models/registration.rb', line 16

def activity_details
  @activity_details
end

#completed_dateObject

TODO: Not sure we want this to be settable. Will depend on how we go about creating/updating records. For now it makes it easier to create instances from API options hash.



16
17
18
# File 'lib/scorm_engine/models/registration.rb', line 16

def completed_date
  @completed_date
end

#courseObject

TODO: Not sure we want this to be settable. Will depend on how we go about creating/updating records. For now it makes it easier to create instances from API options hash.



16
17
18
# File 'lib/scorm_engine/models/registration.rb', line 16

def course
  @course
end

#created_dateObject

TODO: Not sure we want this to be settable. Will depend on how we go about creating/updating records. For now it makes it easier to create instances from API options hash.



16
17
18
# File 'lib/scorm_engine/models/registration.rb', line 16

def created_date
  @created_date
end

#first_access_dateObject

TODO: Not sure we want this to be settable. Will depend on how we go about creating/updating records. For now it makes it easier to create instances from API options hash.



16
17
18
# File 'lib/scorm_engine/models/registration.rb', line 16

def first_access_date
  @first_access_date
end

#idObject

TODO: Not sure we want this to be settable. Will depend on how we go about creating/updating records. For now it makes it easier to create instances from API options hash.



16
17
18
# File 'lib/scorm_engine/models/registration.rb', line 16

def id
  @id
end

#instanceObject

TODO: Not sure we want this to be settable. Will depend on how we go about creating/updating records. For now it makes it easier to create instances from API options hash.



16
17
18
# File 'lib/scorm_engine/models/registration.rb', line 16

def instance
  @instance
end

#last_access_dateObject

TODO: Not sure we want this to be settable. Will depend on how we go about creating/updating records. For now it makes it easier to create instances from API options hash.



16
17
18
# File 'lib/scorm_engine/models/registration.rb', line 16

def last_access_date
  @last_access_date
end

#learnerObject

TODO: Not sure we want this to be settable. Will depend on how we go about creating/updating records. For now it makes it easier to create instances from API options hash.



16
17
18
# File 'lib/scorm_engine/models/registration.rb', line 16

def learner
  @learner
end

#registration_completionString

Has this registration been completed?

Returns:

  • (String)

    (UNKNOWN COMPLETED INCOMPLETE)



23
24
25
# File 'lib/scorm_engine/models/registration.rb', line 23

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)



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

def registration_completion_amount
  @registration_completion_amount
end

#registration_successString

Has this registration been passed?

Returns:

  • (String)

    (Unknown Passed Failed)



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

def registration_success
  @registration_success
end

#scoreObject

TODO: Not sure we want this to be settable. Will depend on how we go about creating/updating records. For now it makes it easier to create instances from API options hash.



16
17
18
# File 'lib/scorm_engine/models/registration.rb', line 16

def score
  @score
end

#total_seconds_trackedObject

TODO: Not sure we want this to be settable. Will depend on how we go about creating/updating records. For now it makes it easier to create instances from API options hash.



16
17
18
# File 'lib/scorm_engine/models/registration.rb', line 16

def total_seconds_tracked
  @total_seconds_tracked
end

#updatedObject

TODO: Not sure we want this to be settable. Will depend on how we go about creating/updating records. For now it makes it easier to create instances from API options hash.



16
17
18
# File 'lib/scorm_engine/models/registration.rb', line 16

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.



134
135
136
137
138
139
# File 'lib/scorm_engine/models/registration.rb', line 134

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.



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

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



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/scorm_engine/models/registration.rb', line 40

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"]
  this.registration_success = options["registrationSuccess"]
  this.total_seconds_tracked = options["totalSecondsTracked"]
  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.



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

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.



105
106
107
108
# File 'lib/scorm_engine/models/registration.rb', line 105

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.



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

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.



94
95
96
97
# File 'lib/scorm_engine/models/registration.rb', line 94

def passed?
  return nil if registration_success == "Unknown"
  registration_success == "Passed"
end