Class: Meibo::Course

Inherits:
Object
  • Object
show all
Includes:
DataModel
Defined in:
lib/meibo/course.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from DataModel

#deconstruct, #deconstruct_keys, included, #lineno, #to_a, #to_csv, #to_h

Constructor Details

#initialize(sourced_id:, title:, org_sourced_id:, status: nil, date_last_modified: nil, school_year_sourced_id: nil, course_code: nil, grades: [], subjects: [], subject_codes: [], **extension_fields) ⇒ Course

Returns a new instance of Course.



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/meibo/course.rb', line 40

def initialize(sourced_id:, title:, org_sourced_id:, status: nil, date_last_modified: nil, school_year_sourced_id: nil,
               course_code: nil, grades: [], subjects: [], subject_codes: [], **extension_fields)
  raise SubjectsAndSubjectCodesLengthNotMatch unless subjects.is_a?(Array) && subject_codes.is_a?(Array) && subjects.size == subject_codes.size

  @sourced_id = sourced_id
  @status = status
  @date_last_modified = date_last_modified
  @school_year_sourced_id = school_year_sourced_id
  @title = title
  @course_code = course_code
  @grades = grades
  @org_sourced_id = org_sourced_id
  @subjects = subjects
  @subject_codes = subject_codes
  @extension_fields = extension_fields
end

Class Method Details

.parse(csv) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/meibo/course.rb', line 27

def self.parse(csv)
  return to_enum(:parse, csv) unless block_given?

  _parse(csv).with_index(1) do |row, line|
    yield new(**row.to_h)
  rescue SubjectsAndSubjectCodesLengthNotMatch
    index = attribute_names.index(:subjects)
    field = row[index]
    field_info = CSV::FieldInfo.new(index, line, :subjects, false)
    raise InvalidDataTypeError.new(field: field, field_info: field_info)
  end
end

Instance Method Details

#classesObject



69
70
71
# File 'lib/meibo/course.rb', line 69

def classes
  Meibo.current_roster.classes.where(course_sourced_id: sourced_id)
end

#collectionObject



57
58
59
# File 'lib/meibo/course.rb', line 57

def collection
  Meibo.current_roster.courses
end

#organizationObject



61
62
63
# File 'lib/meibo/course.rb', line 61

def organization
  Meibo.current_roster.organizations.find(org_sourced_id)
end

#school_yearObject



65
66
67
# File 'lib/meibo/course.rb', line 65

def school_year
  Meibo.current_roster.academic_sessions.find(school_year_sourced_id) if school_year_sourced_id
end