Add RentablePolicy for MaxOverdueVideos and MaxOverdueGames
[cs356-p2-videostore.git] / app / models / customer.rb
1 class Customer < ActiveRecord::Base
2   has_many :coitems
3   has_many :bitems
4   has_many :merchandise_purchases
5   has_many :rentable_purchases
6
7   validates_presence_of :name, :email, :phone, :address
8   validates_numericality_of :debt
9
10   def checked_out_videos
11     coitems = Coitem.find_all_by_customer_id(id)
12     video_count = 0
13
14     for item in coitems
15       if item.rentable.class == Video
16         video_count += 1
17       end
18     end
19
20     return video_count
21   end
22
23   def checked_out_games
24     coitems = Coitem.find_all_by_customer_id(id)
25     game_count = 0
26
27     for item in coitems
28       if item.rentable.class == Game
29         game_count += 1
30       end
31     end
32
33     return game_count
34   end
35
36   def overdue_videos
37     coitems = Coitem.find_all_by_customer_id(id)
38     overdue_video_count = 0
39
40     for item in coitems
41       if item.rentable.class == Video and item.overdue?
42         overdue_video_count += 1
43       end
44     end
45
46     return overdue_video_count
47   end
48
49   def overdue_games
50     coitems = Coitem.find_all_by_customer_id(id)
51     overdue_game_count = 0
52
53     for item in coitems
54       if item.rentable.class == Game and item.overdue?
55         overdue_game_count += 1
56       end
57     end
58
59     return overdue_game_count
60   end
61
62   protected
63
64   def validate
65     errors.add(:debt, "should be non-negative") if debt.nil? || debt < 0.00
66   end
67
68 end