Class: Meibo::Classroom
- Inherits:
-
Object
- Object
- Meibo::Classroom
- Includes:
- DataModel
- Defined in:
- lib/meibo/classroom.rb
Constant Summary collapse
- TYPES =
{ homeroom: "homeroom", scheduled: "scheduled" }.freeze
Class Method Summary collapse
Instance Method Summary collapse
- #collection ⇒ Object
- #course ⇒ Object
- #enrollments ⇒ Object
- #homeroom? ⇒ Boolean
-
#initialize(sourced_id:, title:, course_sourced_id:, class_type:, school_sourced_id:, term_sourced_ids:, status: nil, date_last_modified: nil, grades: [], class_code: nil, location: nil, subjects: [], subject_codes: [], periods: [], **extension_fields) ⇒ Classroom
constructor
A new instance of Classroom.
- #scheduled? ⇒ Boolean
- #school ⇒ Object
- #terms ⇒ Object
Methods included from DataModel
#deconstruct, #deconstruct_keys, included, #lineno, #to_a, #to_csv, #to_h
Constructor Details
#initialize(sourced_id:, title:, course_sourced_id:, class_type:, school_sourced_id:, term_sourced_ids:, status: nil, date_last_modified: nil, grades: [], class_code: nil, location: nil, subjects: [], subject_codes: [], periods: [], **extension_fields) ⇒ Classroom
Returns a new instance of Classroom.
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/meibo/classroom.rb', line 58 def initialize(sourced_id:, title:, course_sourced_id:, class_type:, school_sourced_id:, term_sourced_ids:, status: nil, date_last_modified: nil, grades: [], class_code: nil, location: nil, subjects: [], subject_codes: [], periods: [], **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 @title = title @grades = grades @course_sourced_id = course_sourced_id @class_code = class_code @class_type = class_type @location = location @school_sourced_id = school_sourced_id @term_sourced_ids = term_sourced_ids @subjects = subjects @subject_codes = subject_codes @periods = periods @extension_fields = extension_fields end |
Class Method Details
.parse(csv) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/meibo/classroom.rb', line 45 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
#collection ⇒ Object
79 80 81 |
# File 'lib/meibo/classroom.rb', line 79 def collection Meibo.current_roster.classes end |
#course ⇒ Object
91 92 93 |
# File 'lib/meibo/classroom.rb', line 91 def course Meibo.current_roster.courses.find(course_sourced_id) end |
#enrollments ⇒ Object
103 104 105 |
# File 'lib/meibo/classroom.rb', line 103 def enrollments Meibo.current_roster.enrollments.where(class_sourced_id: sourced_id) end |
#homeroom? ⇒ Boolean
83 84 85 |
# File 'lib/meibo/classroom.rb', line 83 def homeroom? class_type == TYPES[:homeroom] end |
#scheduled? ⇒ Boolean
87 88 89 |
# File 'lib/meibo/classroom.rb', line 87 def scheduled? class_type == TYPES[:scheduled] end |
#school ⇒ Object
95 96 97 |
# File 'lib/meibo/classroom.rb', line 95 def school Meibo.current_roster.organizations.find(school_sourced_id) end |
#terms ⇒ Object
99 100 101 |
# File 'lib/meibo/classroom.rb', line 99 def terms term_sourced_ids.map { |term_sourced_id| Meibo.current_roster.academic_sessions.find(term_sourced_id) } end |