Class: Senkyoshi::ModuleConverter

Inherits:
Object
  • Object
show all
Defined in:
lib/senkyoshi/models/module_converter.rb

Class Method Summary collapse

Class Method Details

.add_canvas_module(course, data) ⇒ Object



60
61
62
63
64
# File 'lib/senkyoshi/models/module_converter.rb', line 60

def self.add_canvas_module(course, data)
  canvas_module = Module.new(data[:title], data[:file_name])
  course.canvas_modules << canvas_module.canvas_conversion
  course
end

.add_canvas_module_item(course, module_item, data) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
# File 'lib/senkyoshi/models/module_converter.rb', line 66

def self.add_canvas_module_item(course, module_item, data)
  parent_module = get_subheader_parent(course, data)
  if !parent_module
    parent_module = Module.new(course.title, MAIN_CANVAS_MODULE).
      canvas_conversion
    course.canvas_modules << parent_module
  end
  parent_module.module_items ||= {}
  parent_module.module_items << module_item
  course
end

.check_module_header(data, subheaders) ⇒ Object



39
40
41
42
# File 'lib/senkyoshi/models/module_converter.rb', line 39

def self.check_module_header(data, subheaders)
  data[:target_type] == "SUBHEADER" || data[:target_type] == "CONTENT" &&
    (subheaders.empty? || !data[:parent_id])
end

.create_module_subheader(data) ⇒ Object



49
50
51
52
53
54
55
56
57
58
# File 'lib/senkyoshi/models/module_converter.rb', line 49

def self.create_module_subheader(data)
  ModuleItem.new(
    data[:title],
    "ContextModuleSubHeader",
    data[:file_name],
    nil,
    data[:indent],
    data[:file_name],
  ).canvas_conversion
end

.get_subheader_parent(course, data) ⇒ Object



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/senkyoshi/models/module_converter.rb', line 78

def self.get_subheader_parent(course, data)
  if !data[:parent_id]
    parent_module = course.canvas_modules.
      detect { |a| a.identifier == MAIN_CANVAS_MODULE }
  else
    parent_module = course.canvas_modules.
      detect { |a| a.identifier == data[:parent_id] }
    if !parent_module
      course.canvas_modules.
        reject { |a| a.title == MASTER_MODULE }.
        each do |cc_module|
        if cc_module.module_items
          items = cc_module.module_items.flatten
          item = items.
            detect { |i| i.identifier == data[:parent_id] }
          parent_module = cc_module if item
        end
      end
    end
  end
  parent_module
end

.get_subheaders(pre_data) ⇒ Object



44
45
46
47
# File 'lib/senkyoshi/models/module_converter.rb', line 44

def self.get_subheaders(pre_data)
  pre_data.select { |ct| ct[:target_type] == "SUBHEADER" }.
    map { |sh| sh[:original_file].gsub("res", "") }
end

.set_modules(course, pre_data) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/senkyoshi/models/module_converter.rb', line 18

def self.set_modules(course, pre_data)
  master_module = Course.master_module(course)
  subheaders = get_subheaders(pre_data)
  pre_data.each do |data|
    if check_module_header(data, subheaders)
      course = add_canvas_module(course, data)
    elsif data[:target_type] == "CONTENT"
      module_item = create_module_subheader(data)
      course = add_canvas_module_item(course, module_item, data)
    elsif data[:target_type] == nil || data[:target_type] == "APPLICATION"
      module_item = master_module.module_items.
        detect { |i| i.identifier == data[:file_name] }
      if module_item
        course = add_canvas_module_item(course, module_item, data)
      end
    end
  end
  course.canvas_modules.delete(master_module)
  course
end