60 lines
2.0 KiB
Ruby
60 lines
2.0 KiB
Ruby
# represenst the type of lesson package
|
|
module JamRuby
|
|
class LessonSession < ActiveRecord::Base
|
|
|
|
@@log = Logging.logger[LessonSession]
|
|
|
|
LESSON_TYPE_SINGLE = 'single'
|
|
LESSON_TYPE_SINGLE_FREE = 'single-free'
|
|
LESSON_TYPE_TEST_DRIVE = 'test-drive'
|
|
LESSON_TYPES = [LESSON_TYPE_SINGLE, LESSON_TYPE_SINGLE_FREE, LESSON_TYPE_TEST_DRIVE]
|
|
|
|
belongs_to :music_session, class_name: "JamRuby::MusicSession"
|
|
belongs_to :teacher, class_name: "JamRuby::User"
|
|
belongs_to :lesson_package_purchase, class_name: "JamRuby::LessonPackagePurchase"
|
|
belongs_to :lesson_booking, class_name: "JamRuby::LessonBooking"
|
|
|
|
validates :duration, presence: true, numericality: {only_integer: true}
|
|
validates :lesson_booking, presence: true
|
|
validates :lesson_type, inclusion: {in: LESSON_TYPES}
|
|
validates :price, presence: true
|
|
validates :teacher_complete, inclusion: {in: [true, false]}
|
|
validates :student_complete, inclusion: {in: [true, false]}
|
|
validates :teacher_cancelled, inclusion: {in: [true, false]}
|
|
validates :student_cancelled, inclusion: {in: [true, false]}
|
|
|
|
|
|
def self.index(user, params = {})
|
|
limit = params[:per_page]
|
|
limit ||= 100
|
|
limit = limit.to_i
|
|
|
|
query = LessonSession.joins(:music_session).joins(music_session: :creator)
|
|
query = query.includes([:teacher, :music_session])
|
|
query = query.order('music_sessions.scheduled_start DESC')
|
|
|
|
if params[:as_teacher]
|
|
query = query.where('lesson_sessions.teacher_id = ?', user.id)
|
|
else
|
|
query = query.where('music_sessions.user_id = ?', user.id)
|
|
end
|
|
|
|
|
|
|
|
current_page = params[:page].nil? ? 1 : params[:page].to_i
|
|
next_page = current_page + 1
|
|
|
|
# will_paginate gem
|
|
query = query.paginate(:page => current_page, :per_page => limit)
|
|
|
|
if query.length == 0 # no more results
|
|
{ query: query, next_page: nil}
|
|
elsif query.length < limit # no more results
|
|
{ query: query, next_page: nil}
|
|
else
|
|
{ query: query, next_page: next_page }
|
|
end
|
|
end
|
|
end
|
|
end
|