Class: ScormEngine::Models::Registration

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

Instance Attribute Summary collapse

Class Method Summary collapse

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.



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

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.



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

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.



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

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.



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

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.



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

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.



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

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.



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

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.



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

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.



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

def learner
  @learner
end

#options=(value) ⇒ Object

Sets the attribute options

Parameters:

  • value

    the value to set the attribute options to.



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

def options=(value)
  @options = value
end

#registration_completionObject

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.



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

def registration_completion
  @registration_completion
end

#registration_completion_amountObject

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.



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

def registration_completion_amount
  @registration_completion_amount
end

#registration_successObject

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.



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

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.



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

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.



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

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.



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

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.



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

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.



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

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



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/scorm_engine/models/registration.rb', line 24

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