Lots of stuff, I got too tired to keep perfect revision history
[cs356-p2-videostore.git] / app / models / customer.rb
1 class Customer < ActiveRecord::Base
2   has_many :coitems
3   has_many :merchandise_purchases
4   has_many :rentable_purchases
5   has_many :bonus_purchases
6   has_many :late_fee_purchases
7
8   validates_presence_of :name, :email, :phone, :address
9   validates_numericality_of :debt
10
11   def checked_out_videos
12     coitems = Coitem.find_all_by_customer_id(id)
13     video_count = 0
14
15     for item in coitems
16       if item.rentable.class == Video
17         video_count += 1
18       end
19     end
20
21     return video_count
22   end
23
24   def checked_out_games
25     coitems = Coitem.find_all_by_customer_id(id)
26     game_count = 0
27
28     for item in coitems
29       if item.rentable.class == Game
30         game_count += 1
31       end
32     end
33
34     return game_count
35   end
36
37   def overdue_videos
38     coitems = Coitem.find_all_by_customer_id(id)
39     overdue_video_count = 0
40
41     for item in coitems
42       if item.rentable.class == Video and item.overdue?
43         overdue_video_count += 1
44       end
45     end
46
47     return overdue_video_count
48   end
49
50   def overdue_games
51     coitems = Coitem.find_all_by_customer_id(id)
52     overdue_game_count = 0
53
54     for item in coitems
55       if item.rentable.class == Game and item.overdue?
56         overdue_game_count += 1
57       end
58     end
59
60     return overdue_game_count
61   end
62
63   protected
64
65   def validate
66     errors.add(:debt, "should be non-negative") if debt.nil? || debt < 0.00
67     errors.add(:email, "is invalid") unless email =~ /.+@.+\..+/
68     errors.add(:phone, "has invalid format, use XXX-XXX-XXXX") unless phone =~ /^\d{3}-\d{3}-\d{4}$/
69   end
70
71 end