49 lines
1.4 KiB
Ruby
49 lines
1.4 KiB
Ruby
# represents the purchase of a LessonPackage
|
|
module JamRuby
|
|
class LessonPackagePurchase < ActiveRecord::Base
|
|
|
|
@@log = Logging.logger[LessonPackagePurchase]
|
|
|
|
def name
|
|
lesson_package_type.sale_display
|
|
end
|
|
|
|
# who purchased the lesson package?
|
|
belongs_to :user, class_name: "JamRuby::User", :foreign_key => "user_id", inverse_of: :lesson_purchases
|
|
belongs_to :lesson_package_type, class_name: "JamRuby::LessonPackageType"
|
|
belongs_to :teacher, class_name: "JamRuby::Teacher"
|
|
|
|
validates :lesson_package_type, presence: true
|
|
validates :price, presence: true
|
|
|
|
after_save :after_save
|
|
|
|
def after_save
|
|
|
|
if self.lesson_package_type.is_test_drive?
|
|
new_test_drives = user.remaining_test_drives + 4
|
|
User.where(id:user.id).update_all(remaining_test_drives: new_test_drives)
|
|
user.remaining_test_drives = user.remaining_test_drives + 4
|
|
end
|
|
|
|
end
|
|
|
|
def self.create(user, lesson_package_type, lesson_booking)
|
|
purchase = LessonPackagePurchase.new
|
|
purchase.user = user
|
|
purchase.lesson_package_type = lesson_package_type
|
|
purchase.price = lesson_package_type.booked_price(lesson_booking)
|
|
purchase.save
|
|
purchase
|
|
end
|
|
|
|
def price_in_cents
|
|
(price * 100).to_i
|
|
end
|
|
|
|
def description(lesson_booking)
|
|
lesson_package_type.description(lesson_booking)
|
|
end
|
|
end
|
|
end
|