Sha256: d841f3f881393b903f77ceebabbdfbf3442078de7f000bb28c14568d7eedd440

Contents?: true

Size: 1.24 KB

Versions: 6

Compression:

Stored size: 1.24 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
    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

6 entries across 6 versions & 1 rubygems

Version Path
ecm_courses2-1.0.0 app/models/ecm/courses/course.rb
ecm_courses2-0.2.4 app/models/ecm/courses/course.rb
ecm_courses2-0.2.3 app/models/ecm/courses/course.rb
ecm_courses2-0.2.2 app/models/ecm/courses/course.rb
ecm_courses2-0.2.1 app/models/ecm/courses/course.rb
ecm_courses2-0.2.0 app/models/ecm/courses/course.rb