X-Git-Url: https://irasnyder.com/gitweb/?a=blobdiff_plain;f=app%2Fcontrollers%2Fpurchase_controller.rb;fp=app%2Fcontrollers%2Fpurchase_controller.rb;h=15164985e7cef175e59001f43587afbe80059c0a;hb=ebb2b4d40713d535c06970b2a17aace4458ecf25;hp=0000000000000000000000000000000000000000;hpb=51e5c301fa78679232f16b450632fc890c02c4f2;p=cs356-p2-videostore.git diff --git a/app/controllers/purchase_controller.rb b/app/controllers/purchase_controller.rb new file mode 100644 index 0000000..1516498 --- /dev/null +++ b/app/controllers/purchase_controller.rb @@ -0,0 +1,109 @@ +class PurchaseController < ApplicationController + + def index + redirect_to :action => :begin + end + + def list + @purchase_pages, @purchase = paginate :purchases, :per_page => 100 + end + + def begin + # enter a customer id here + render :action => 'begin' + session[:total] = 0.00 + end + + def customer_ok + if Customer.find_by_id(params[:customer_id]) + session[:customer_id] = params[:customer_id] + redirect_to :action => :menu + else + flash[:error] = "Customer ID is invalid" + redirect_to :action => :begin + end + end + + def menu + @customer = Customer.find_by_id(session[:customer_id]) + @total_price = session[:total] + render :action => 'menu' + end + + def rent_begin + render :action => 'rent_begin' + end + + def rent_validate + @customer = Customer.find_by_id(session[:customer_id]) + @rentable = Rentable.find_by_id(params[:rentable_id]) + + if @customer.nil? + flash[:error] = "Customer ID is invalid" + redirect_to :action => :begin + return + end + + if @rentable.nil? + flash[:error] = "Rentable ID is invalid" + redirect_to :action => :rent_begin + return + end + + # Actually record the purchase + purchase = RentablePurchase.new + 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! + + flash[:notice] = "Successfully made purchase" + redirect_to :action => :menu + end + + def buy_begin + render :action => 'buy_begin' + end + + def buy_validate + @customer = Customer.find_by_id(session[:customer_id]) + @merchandise = Merchandise.find_by_id(params[:merchandise_id]) + + if @customer.nil? + flash[:error] = "Customer ID is invalid" + redirect_to :action => :begin + return + end + + if @merchandise.nil? + flash[:error] = "Merchandise ID is invalid" + redirect_to :action => :buy_begin + return + end + + if @merchandise.quantity < 1 + flash[:error] = "The system thinks we are out of this merchandise item!" + redirect_to :action => :buy_begin + return + end + + # Actually record the purchase + purchase = MerchandisePurchase.new + 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 + + # Save both the merchandise (we changed the quantity) and the purchase to the log + @merchandise.save! + purchase.save! + + flash[:notice] = "Successfully made purchase" + redirect_to :action => :menu + end +end