Many visual tweaks, suggested by Lan
[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
6   validates_presence_of :name, :email, :phone, :address
7   validates_numericality_of :debt
8
9   def checked_out_videos
10     coitems = Coitem.find_all_by_customer_id(id)
11     video_count = 0
12
13     for item in coitems
14       if item.rentable.class == Video
15         video_count += 1
16       end
17     end
18
19     return video_count
20   end
21
22   def checked_out_games
23     coitems = Coitem.find_all_by_customer_id(id)
24     game_count = 0
25
26     for item in coitems
27       if item.rentable.class == Game
28         game_count += 1
29       end
30     end
31
32     return game_count
33   end
34
35   def overdue_videos
36     coitems = Coitem.find_all_by_customer_id(id)
37     overdue_video_count = 0
38
39     for item in coitems
40       if item.rentable.class == Video and item.overdue?
41         overdue_video_count += 1
42       end
43     end
44
45     return overdue_video_count
46   end
47
48   def overdue_games
49     coitems = Coitem.find_all_by_customer_id(id)
50     overdue_game_count = 0
51
52     for item in coitems
53       if item.rentable.class == Game and item.overdue?
54         overdue_game_count += 1
55       end
56     end
57
58     return overdue_game_count
59   end
60
61   protected
62
63   def validate
64     errors.add(:debt, "should be non-negative") if debt.nil? || debt < 0.00
65     errors.add(:email, "is invalid") unless email =~ /.+@.+\..+/
66     errors.add(:phone, "has invalid format, use XXX-XXX-XXXX") unless phone =~ /^\d{3}-\d{3}-\d{4}$/
67   end
68
69 end