Sha256: 5c19f8db00c780c13c58227d2f47845120f56ea2b8cf899e632bdec96361b4ff

Contents?: true

Size: 1.45 KB

Versions: 4

Compression:

Stored size: 1.45 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: [:start_date, :end_date].freeze,
        datetime: [:date_last_modified].freeze,
        required: [:sourced_id, :title, :type, :start_date, :end_date, :school_year].freeze,
        status: [:status].freeze,
        year: [:school_year].freeze
      }.freeze
    )

    def initialize(sourced_id:, status: nil, date_last_modified: nil, school_year:, title: nil, type:, start_date:, end_date:, 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
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
meibo-0.4.0 lib/meibo/academic_session.rb
meibo-0.3.0 lib/meibo/academic_session.rb
meibo-0.2.0 lib/meibo/academic_session.rb
meibo-0.1.0 lib/meibo/academic_session.rb