class PurchaseController < ApplicationController
+ # Make sure that a user logs in before doing any action here
+ before_filter :authorize
+
def index
redirect_to :action => :begin
end
# enter a customer id here
render :action => 'begin'
session[:total] = 0.00
+ session[:items] = []
end
def customer_ok
def menu
@customer = Customer.find_by_id(session[:customer_id])
@total_price = session[:total]
+ @items = session[:items]
render :action => 'menu'
end
return
end
+ # Check Rentable Policies
+ @maxvideos = RentablePolicy.find_by_name("MaxVideos")
+ if @rentable.class == Video and @customer.checked_out_videos >= @maxvideos.value
+ flash[:error] = "#{@maxvideos.description} LIMIT REACHED"
+ redirect_to :action => :rent_begin
+ return
+ end
+
+ @maxgames = RentablePolicy.find_by_name("MaxGames")
+ if @rentable.class == Game and @customer.checked_out_games >= @maxgames.value
+ flash[:error] = "#{@maxgames.description} LIMIT REACHED"
+ redirect_to :action => :rent_begin
+ 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
purchase.customer_id = session[:customer_id]
purchase.date = Time.now.to_date
purchase.price = @rentable.calculated_price
- session[:total] += @rentable.calculated_price
purchase.rentable = @rentable
purchase.save!
+ # Add te session variables
+ session[:total] += @rentable.calculated_price
+ session[:items].push @rentable
+
flash[:notice] = "Successfully made purchase"
redirect_to :action => :menu
end
purchase.customer_id = session[:customer_id]
purchase.date = Time.now.to_date
purchase.price = @merchandise.price
- session[:total] += @merchandise.price
purchase.merchandise = @merchandise
purchase.quantity = 1
@merchandise.quantity -= 1
+ # Add to session variables
+ session[:total] += @merchandise.price
+ session[:items].push @merchandise
+
# Save both the merchandise (we changed the quantity) and the purchase to the log
@merchandise.save!
purchase.save!