class Senkyoshi::RuleCriteria
Constants
- COMPLETION_TYPES
Attributes
asidata_id[R]
content_id[R]
id[R]
negated[R]
Public Class Methods
from_xml(xml)
click to toggle source
# File lib/senkyoshi/models/rule_criteria.rb, line 58 def self.from_xml(xml) new(RuleCriteria.get_id(xml), RuleCriteria.get_negated(xml)) end
get_id(xml)
click to toggle source
# File lib/senkyoshi/models/rule_criteria.rb, line 50 def self.get_id(xml) xml.xpath("./@id").text end
get_negated(xml)
click to toggle source
# File lib/senkyoshi/models/rule_criteria.rb, line 54 def self.get_negated(xml) xml.xpath("./NEGATED/@value").text end
in_same_module?(modules, content_id, resource_id)
click to toggle source
Determine two identifierrefs are pointed to by items in the same module
# File lib/senkyoshi/models/rule_criteria.rb, line 64 def self.in_same_module?(modules, content_id, resource_id) content_module = Module.find_module_from_item_id(modules, content_id) resource_module = Module.find_module_from_item_id(modules, resource_id) return nil if content_module.nil? || resource_module.nil? content_module == resource_module end
module_completion_requirement?(modules, content_id, resource_id)
click to toggle source
# File lib/senkyoshi/models/rule_criteria.rb, line 75 def self.module_completion_requirement?(modules, content_id, resource_id) in_same_module?(modules, content_id, resource_id) == true end
module_prerequisite?(modules, content_id, resource_id)
click to toggle source
# File lib/senkyoshi/models/rule_criteria.rb, line 71 def self.module_prerequisite?(modules, content_id, resource_id) in_same_module?(modules, content_id, resource_id) == false end
new(id, negated)
click to toggle source
# File lib/senkyoshi/models/rule_criteria.rb, line 30 def initialize(id, negated) @id = id @negated = negated end
Public Instance Methods
add_if_unique(collection, item) { |collection_item, item| ... }
click to toggle source
# File lib/senkyoshi/models/rule_criteria.rb, line 35 def add_if_unique(collection, item) if collection.detect do |collection_item| yield(collection_item, item) end.nil? collection << item end collection end
add_to_module_if_unique(items, item)
click to toggle source
# File lib/senkyoshi/models/rule_criteria.rb, line 44 def add_to_module_if_unique(items, item) add_if_unique( items, item ) { |a, b| a.identifierref == b.identifierref } end
canvas_conversion(course, content_id, resources)
click to toggle source
# File lib/senkyoshi/models/rule_criteria.rb, line 127 def canvas_conversion(course, content_id, resources) set_ids(content_id, resources) mod = Module.find_module_from_item_id course.canvas_modules, get_id is_completion = RuleCriteria.module_completion_requirement?( course.canvas_modules, get_id, get_foreign_id ) is_prereq = RuleCriteria.module_prerequisite?( course.canvas_modules, get_id, get_foreign_id ) if is_completion add_to_module_if_unique( mod.completion_requirements, make_completion(mod) ) elsif is_prereq prereq_module = Module.find_module_from_item_id( course.canvas_modules, get_foreign_id ) add_to_module_if_unique( mod.prerequisites, make_prereq(prereq_module) ) add_to_module_if_unique( prereq_module.completion_requirements, make_completion(prereq_module) ) end course end
get_id()
click to toggle source
Returns the most applicable id. If we have an assignment id return that, otherwise return the content id.
# File lib/senkyoshi/models/rule_criteria.rb, line 83 def get_id @asidata_id || @content_id end
make_completion(mod)
click to toggle source
Factory method to construct a completion requirement. Should be passed the module that the completion requirement should belong to
# File lib/senkyoshi/models/rule_criteria.rb, line 91 def make_completion(mod) CanvasCc::CanvasCC::Models::ModuleCompletionRequirement.new.tap do |req| mod_item = ModuleItem.find_item_from_id_ref( mod.module_items, get_foreign_id ) req.identifierref = mod_item.identifier if mod_item req.type = get_completion_type end end
make_prereq(prereq_module)
click to toggle source
Factory method to construct a module prerequisite. Should be passed the prerequisite module
# File lib/senkyoshi/models/rule_criteria.rb, line 106 def make_prereq(prereq_module) CanvasCc::CanvasCC::Models::ModulePrerequisite.new.tap do |prereq| prereq.identifierref = prereq_module.identifier prereq.type = "context_module" end end
set_ids(content_id, resources)
click to toggle source
Use gradebook to find assignment id if applicable
# File lib/senkyoshi/models/rule_criteria.rb, line 116 def set_ids(content_id, resources) @content_id = content_id gradebook = resources.find_instances_of(Gradebook).first if gradebook outcome_def = gradebook.outcome_definitions.detect do |out_def| out_def.content_id == content_id end @asidata_id = outcome_def.asidataid if outcome_def end end