52344e13d590b03755698cf8eb6dbafa60909643
[cs356-p2-videostore.git] / app / models / video.rb
1 class Video < Rentable
2   has_many :video_genres
3   has_many :medias
4
5   validates_presence_of :director
6   validates_presence_of :video_genre
7   validates_presence_of :media
8
9   def calculated_price
10     # FIXME: generate this based on day of week, newrelease
11     day_of_week = Time.now.to_date.wday
12     base_fee = VideoPolicy.find_by_day(day_of_week).fee
13
14     # Check for newrelease
15     newrelease_fee = newrelease ? VideoPolicy.find_by_day(8).fee : 0.00
16
17     return base_fee + newrelease_fee
18   end
19
20   def due_date
21     # FIXME: generate this based on the day of week, newrelease
22     # NOTE: a Date.wday will tell you the day of week (0-6, meaning Sunday-Saturday)
23     day_of_week = Time.now.to_date.wday
24     base_period = VideoPolicy.find_by_day(day_of_week).period
25     newrelease_period = newrelease ? VideoPolicy.find_by_day(8).period : 0
26
27     period = base_period + newrelease_period
28     return Time.now.advance(:days => period).to_date
29   end
30
31   protected
32   def validate
33     errors.add(:video_genre, "does not exist in the database") if video_genre.nil?
34     errors.add(:media, "does not exist in the database") if media.nil?
35   end
36 end