44 lines
1.4 KiB
Ruby
44 lines
1.4 KiB
Ruby
module JamRuby
|
|
class RsvpSlot < ActiveRecord::Base
|
|
|
|
belongs_to :instrument, :class_name => "JamRuby::Instrument"
|
|
belongs_to :music_session, :class_name => "JamRuby::MusicSession"
|
|
has_many :rsvp_requests_rsvp_slots, :class_name => "JamRuby::RsvpRequestRsvpSlot", :foreign_key => "rsvp_slot_id"
|
|
has_many :rsvp_requests, :class_name => "JamRuby::RsvpRequest", :through => :rsvp_requests_rsvp_slots
|
|
|
|
validates :instrument, presence: true, if: :is_not_unstructured_rsvp?
|
|
validates :is_unstructured_rsvp, :inclusion => {:in => [true, false]}
|
|
validates :proficiency_level, presence: true, if: :is_not_unstructured_rsvp?
|
|
|
|
attr_accessor :chosen, :proficiency_desc
|
|
|
|
class << self
|
|
@@proficiency_map = ["Any Skill Level", "Beg", "Beg/Int", "Int", "Int/Adv", "Adv"]
|
|
end
|
|
|
|
def is_not_unstructured_rsvp?
|
|
!is_unstructured_rsvp?
|
|
end
|
|
# TODO: validates :proficiency_level
|
|
|
|
def self.index(music_session)
|
|
RsvpSlot.where("music_session_id = ?", music_session.id)
|
|
end
|
|
|
|
def chosen
|
|
chosen_slots = RsvpRequestRsvpSlot.where("chosen = true AND rsvp_slot_id = ?", self.id)
|
|
!chosen_slots.blank?
|
|
end
|
|
|
|
def proficiency_desc
|
|
@@proficiency_map[self.proficiency_level]
|
|
end
|
|
|
|
# def has_rsvp_from_user(user)
|
|
# user_slot = RsvpRequest.joins(:rsvp_requests_rsvp_slots)
|
|
# .where(:rsvp_request_id => )
|
|
# .where(:user_id => user.id)
|
|
# end
|
|
end
|
|
end
|