Add RentablePolicy for MaxOverdueVideos and MaxOverdueGames
authorIra W. Snyder <devel@irasnyder.com>
Fri, 23 Nov 2007 10:06:36 +0000 (02:06 -0800)
committerIra W. Snyder <devel@irasnyder.com>
Fri, 23 Nov 2007 10:06:36 +0000 (02:06 -0800)
Signed-off-by: Ira W. Snyder <devel@irasnyder.com>
app/controllers/purchase_controller.rb
app/models/customer.rb
db/development.sqlite3

index a3b61bb..ebb08cd 100644 (file)
@@ -73,6 +73,20 @@ class PurchaseController < ApplicationController
       return
     end
 
+    @maxoverduevideos = RentablePolicy.find_by_name("MaxOverdueVideos")
+    if @rentable.class == Video and @customer.overdue_videos >= @maxoverduevideos.value
+      flash[:error] = "#{@maxoverduevideos.description} LIMIT REACHED"
+      redirect_to :action => :rent_begin
+      return
+    end
+
+    @maxoverduegames = RentablePolicy.find_by_name("MaxOverdueGames")
+    if @rentable.class == Game and @customer.overdue_games >= @maxoverduegames.value
+      flash[:error] = "#{@maxoverduegames.description} LIMIT REACHED"
+      redirect_to :action => :rent_begin
+      return
+    end
+
     # Check out the item
     checkout = Coitem.new
     checkout.customer = @customer
index e56eafe..673cffd 100644 (file)
@@ -33,6 +33,32 @@ class Customer < ActiveRecord::Base
     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
index 8470ab9..7294671 100644 (file)
Binary files a/db/development.sqlite3 and b/db/development.sqlite3 differ