Lots of stuff, I got too tired to keep perfect revision history
[cs356-p2-videostore.git] / app / models / customer.rb
index aba5044..b9e6ab9 100644 (file)
@@ -1,16 +1,71 @@
 class Customer < ActiveRecord::Base
   has_many :coitems
-  has_many :bitems
   has_many :merchandise_purchases
   has_many :rentable_purchases
+  has_many :bonus_purchases
+  has_many :late_fee_purchases
 
   validates_presence_of :name, :email, :phone, :address
   validates_numericality_of :debt
 
+  def checked_out_videos
+    coitems = Coitem.find_all_by_customer_id(id)
+    video_count = 0
+
+    for item in coitems
+      if item.rentable.class == Video
+        video_count += 1
+      end
+    end
+
+    return video_count
+  end
+
+  def checked_out_games
+    coitems = Coitem.find_all_by_customer_id(id)
+    game_count = 0
+
+    for item in coitems
+      if item.rentable.class == Game
+        game_count += 1
+      end
+    end
+
+    return game_count
+  end
+
+  def overdue_videos
+    coitems = Coitem.find_all_by_customer_id(id)
+    overdue_video_count = 0
+
+    for item in coitems
+      if item.rentable.class == Video and item.overdue?
+        overdue_video_count += 1
+      end
+    end
+
+    return overdue_video_count
+  end
+
+  def overdue_games
+    coitems = Coitem.find_all_by_customer_id(id)
+    overdue_game_count = 0
+
+    for item in coitems
+      if item.rentable.class == Game and item.overdue?
+        overdue_game_count += 1
+      end
+    end
+
+    return overdue_game_count
+  end
+
   protected
 
   def validate
     errors.add(:debt, "should be non-negative") if debt.nil? || debt < 0.00
+    errors.add(:email, "is invalid") unless email =~ /.+@.+\..+/
+    errors.add(:phone, "has invalid format, use XXX-XXX-XXXX") unless phone =~ /^\d{3}-\d{3}-\d{4}$/
   end
 
 end