Sha256: 2620543cca5baf6626ff0bd2244f761ae4b88c1b09fd7e253af8584e7e0dcf95

Contents?: true

Size: 1.27 KB

Versions: 3

Compression:

Stored size: 1.27 KB

Contents

module Ecm::Courses
  class Course < ApplicationRecord
    module Icalendar
      def to_icalendar_events(calendar)
        course_dates.map do |cd|
          calendar.event do |e|
            e.dtstart     = cd.start_at
            e.dtend       = cd.end_at
            e.summary     = name
            e.description = description
            # e.ip_class    = "PRIVATE"
          end
        end
      end
    end

    include Icalendar

    # acts as list
    acts_as_list scope: :course_category

    # associations
    belongs_to :course_category

    has_many :course_dates, ->() { order(:start_at) },
             dependent: :destroy

    # friendly id
    extend FriendlyId
    friendly_id :name, use: [:slugged]

    # scopes
    # @todo check ordering
    # default_scope { includes(:course_category).order('ecm_courses_course_categories.name, ecm_courses_courses.position ASC') }

    # validations
    validates :course_category, presence: true
    validates :locale, inclusion: { in: I18n.available_locales.map(&:to_s) }, allow_blank: true
    validates :name, presence: true

    def heading_name
      # locale_prefix = locale.blank? ? '' : "[#{locale}] "
      # "#{locale_prefix}#{name}"
      name
    end

    def to_s
      "#{course_category.name} - #{name}"
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ecm_courses2-1.0.3 app/models/ecm/courses/course.rb
ecm_courses2-1.0.2 app/models/ecm/courses/course.rb
ecm_courses2-1.0.1 app/models/ecm/courses/course.rb