Class: Lcms::Engine::CurriculumResourceSerializer

Inherits:
ActiveModel::Serializer
  • Object
show all
Defined in:
app/serializers/lcms/engine/curriculum_resource_serializer.rb

Instance Method Summary collapse

Constructor Details

#initialize(object, options = {}) ⇒ CurriculumResourceSerializer



11
12
13
14
15
# File 'app/serializers/lcms/engine/curriculum_resource_serializer.rb', line 11

def initialize(object, options = {})
  super(object, options)
  @depth = options[:depth] || 0
  @depth_branch = options[:depth_branch]
end

Instance Method Details

#childrenObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/serializers/lcms/engine/curriculum_resource_serializer.rb', line 25

def children
  return [] if !module? && @depth.zero?
  return [] if !module? && @depth_branch && !@depth_branch.include?(object.id)

  object.children
    .includes(:copyright_attributions)
    .eager_load(:standards)
    .ordered.map do |res|
    CurriculumResourceSerializer.new(
      res,
      depth: @depth - 1,
      depth_branch: @depth_branch
    ).as_json
  end
end

#descendantsObject



69
70
71
# File 'app/serializers/lcms/engine/curriculum_resource_serializer.rb', line 69

def descendants
  @descendants ||= object.self_and_descendants.ordered
end

#lesson_countObject



41
42
43
44
# File 'app/serializers/lcms/engine/curriculum_resource_serializer.rb', line 41

def lesson_count
  count = descendants.select(&:lesson?).count
  object.assessment? ? count + 1 : count
end

#module?Boolean



50
51
52
# File 'app/serializers/lcms/engine/curriculum_resource_serializer.rb', line 50

def module?
  type.casecmp('module').zero?
end

#module_countObject



54
55
56
# File 'app/serializers/lcms/engine/curriculum_resource_serializer.rb', line 54

def module_count
  descendants.select(&:module?).count
end

#module_sizesObject



58
59
60
# File 'app/serializers/lcms/engine/curriculum_resource_serializer.rb', line 58

def module_sizes
  descendants.select(&:module?).map { |r| r.self_and_descendants.lessons.count }
end

#resourceObject



17
18
19
# File 'app/serializers/lcms/engine/curriculum_resource_serializer.rb', line 17

def resource
  ResourceDetailsSerializer.new(object).as_json
end

#typeObject



21
22
23
# File 'app/serializers/lcms/engine/curriculum_resource_serializer.rb', line 21

def type
  object.curriculum_type
end

#unit_countObject



46
47
48
# File 'app/serializers/lcms/engine/curriculum_resource_serializer.rb', line 46

def unit_count
  descendants.select(&:unit?).count
end

#unit_sizesObject



62
63
64
65
66
67
# File 'app/serializers/lcms/engine/curriculum_resource_serializer.rb', line 62

def unit_sizes
  descendants.select(&:unit?).map do |r|
    count = r.self_and_descendants.lessons.count
    r.assessment? ? count + 1 : count
  end
end