Sha256: 1cd402ac28891f2d99ac636ff81d86d621fe30496b33464b67104ac157eee29b

Contents?: true

Size: 1.18 KB

Versions: 25

Compression:

Stored size: 1.18 KB

Contents

class Course < ApplicationRecord
  include Mumuki::Domain::Syncable
  include Mumuki::Domain::Helpers::Course

  validates_presence_of :slug, :shifts, :code, :days, :period, :description, :organization_id
  validates_uniqueness_of :slug
  belongs_to :organization

  has_many :invitations

  alias_attribute :name, :code

  resource_fields :slug, :shifts, :code, :days, :period, :description

  def current_invitation
    invitations.where('expiration_date > ?', Time.now).take
  end

  def import_from_resource_h!(resource_h)
    update! self.class.slice_resource_h(resource_h)
  end

  def slug=(slug)
    s = Mumukit::Auth::Slug.parse(slug)

    self[:slug] = slug
    self[:code] = s.course
    self[:organization_id] = Organization.locate!(s.organization).id
  end

  def invite!(expiration_date)
    if closed?
      generate_invitation! expiration_date
    else
      current_invitation
    end
  end

  def closed?
    current_invitation.blank? || current_invitation.expired?
  end

  def generate_invitation!(expiration_date)
    invitation = invitations.build expiration_date: expiration_date, course: self
    invitation.save_and_notify!
  end

  def self.sync_key_id_field
    :slug
  end
end

Version data entries

25 entries across 25 versions & 2 rubygems

Version Path
mumuki-laboratory-7.5.2 vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-ad16a5930cec/app/models/course.rb
mumuki-laboratory-7.5.1 vendor/bundle/ruby/2.3.0/bundler/gems/mumuki-domain-a059418e5fd8/app/models/course.rb
mumuki-domain-7.5.1 app/models/course.rb
mumuki-laboratory-7.5.0 vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/course.rb
mumuki-domain-7.5.0 app/models/course.rb
mumuki-domain-7.4.1 app/models/course.rb
mumuki-domain-7.4.0 app/models/course.rb
mumuki-domain-7.3.2 app/models/course.rb
mumuki-domain-7.3.1 app/models/course.rb
mumuki-domain-7.2.3 app/models/course.rb
mumuki-domain-7.3.0 app/models/course.rb
mumuki-domain-7.2.2 app/models/course.rb
mumuki-domain-7.2.1 app/models/course.rb
mumuki-domain-7.2.0 app/models/course.rb
mumuki-laboratory-7.1.0 vendor/bundle/ruby/2.3.0/bundler/gems/mumuki-domain-925adf85cca8/app/models/course.rb
mumuki-domain-7.1.0 app/models/course.rb
mumuki-laboratory-7.0.12 vendor/bundle/ruby/2.3.0/bundler/gems/mumuki-domain-74da3d4af98c/app/models/course.rb
mumuki-domain-7.0.6 app/models/course.rb
mumuki-domain-7.0.5 app/models/course.rb
mumuki-domain-7.0.4 app/models/course.rb