Sha256: 1a26ea4bb5510bf14dfd0c8518b4900e27b37c3c1b9d924d42ee72b6bdc666c4

Contents?: true

Size: 1.93 KB

Versions: 15

Compression:

Stored size: 1.93 KB

Contents

# frozen_string_literal: true

module Meibo
  class AcademicSession
    TYPES = {
      grading_period: "gradingPeriod",
      semester: "semester",
      school_year: "schoolYear",
      term: "term"
    }.freeze

    DataModel.define(
      self,
      attribute_name_to_header_field_map: {
        sourced_id: "sourcedId",
        status: "status",
        date_last_modified: "dateLastModified",
        title: "title",
        type: "type",
        start_date: "startDate",
        end_date: "endDate",
        parent_sourced_id: "parentSourcedId",
        school_year: "schoolYear"
      }.freeze,
      converters: {
        enum: { type: [*TYPES.values.freeze, ENUM_EXT_PATTERN] }.freeze,
        date: %i[start_date end_date].freeze,
        datetime: [:date_last_modified].freeze,
        required: %i[sourced_id title type start_date end_date school_year].freeze,
        status: [:status].freeze,
        year: [:school_year].freeze
      }.freeze
    )

    def initialize(sourced_id:, school_year:, type:, start_date:, end_date:, status: nil, date_last_modified: nil,
                   title: nil, parent_sourced_id: nil, **extension_fields)
      @sourced_id = sourced_id
      @status = status
      @date_last_modified = date_last_modified
      @title = title
      @type = type
      @start_date = start_date
      @end_date = end_date
      @parent_sourced_id = parent_sourced_id
      @school_year = school_year
      @extension_fields = extension_fields
    end

    def collection
      Meibo.current_roster.academic_sessions
    end

    def grading_period?
      type == TYPES[:grading_period]
    end

    def semester?
      type == TYPES[:semester]
    end

    def school_year?
      type == TYPES[:school_year]
    end

    def term?
      type == TYPES[:term]
    end

    def parent
      parent_sourced_id && collection.find(parent_sourced_id)
    end

    def children
      collection.where(parent_sourced_id: sourced_id)
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
meibo-0.27.1 lib/meibo/academic_session.rb
meibo-0.27.0 lib/meibo/academic_session.rb
meibo-0.26.0 lib/meibo/academic_session.rb
meibo-0.25.3 lib/meibo/academic_session.rb
meibo-0.25.2 lib/meibo/academic_session.rb
meibo-0.25.1 lib/meibo/academic_session.rb
meibo-0.25.0 lib/meibo/academic_session.rb
meibo-0.24.0 lib/meibo/academic_session.rb
meibo-0.23.0 lib/meibo/academic_session.rb
meibo-0.22.0 lib/meibo/academic_session.rb
meibo-0.21.0 lib/meibo/academic_session.rb
meibo-0.20.0 lib/meibo/academic_session.rb
meibo-0.19.0 lib/meibo/academic_session.rb
meibo-0.18.0 lib/meibo/academic_session.rb
meibo-0.17.0 lib/meibo/academic_session.rb