Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class OrdersController < ApplicationController
- before_filter :login_required
- before_filter :is_admin?, :only => [:purge_all]
- resources_controller_for :orders
- include ActiveMerchant::Billing
- def paypal_agreement
- end
- def paypal_checkout
- setup_response = gateway.setup_purchase((@basket.base_price - @basket.discount) * 100,
- :ip => request.remote_ip,
- :return_url => url_for(:action => 'paypal_confirm', :id => @order, :only_path => false),
- :cancel_return_url => url_for(:action => 'index', :only_path => false)
- )
- redirect_to gateway.redirect_url_for(setup_response.token)
- end
- def paypal_confirm
- redirect_to :action => 'index' unless params[:token]
- details_response = gateway.details_for(params[:token])
- if !details_response.success?
- flash[:notice] = details_response.message
- render :action => 'error'
- return
- end
- @address = details_response.address
- end
- def paypal_complete
- purchase = gateway.purchase((@basket.base_price - @basket.discount) * 100,
- :ip => request.remote_ip,
- :payer_id => params[:payer_id],
- :token => params[:token]
- )
- if !purchase.success?
- flash[:notice] = purchase.message
- render :action => 'error'
- return
- else
- session[:basket].clear
- @user = current_user
- @order = Order.new(:user_id => @user.id, :order_status => "initial", :checkout_at => Time.now, :apples => @basket.apples)
- @order.save
- @order.payment_captured!
- @order.update_stock_quantities
- @order.transactions.create!(:amount => @order.total_price,
- :test => true,
- :user_id => current_user.id,
- :payment_method => "paypal",
- :fee_amount => purchase.params['fee_amount'],
- :reference => purchase.params['transaction_id'],
- :currency => "USD",
- :message => "Paid via Paypal",
- :success => true)
- Notifier.deliver_email_invoice(current_user,@order.id)
- end
- end
- def check_agreement
- @user = User.find(params[:user_id])
- end
- def check_complete
- @user = User.find(params[:user_id])
- @order = Order.new(:user_id => @user.id, :order_status => "initial", :checkout_at => Time.now, :apples => @basket.apples)
- @order.save
- @order.paying_by_check!
- Notifier.deliver_email_invoice(current_user,@order.id)
- session[:basket].clear
- @order.update_stock_quantities
- @order.transactions.create!(:test => true,
- :amount => 0,
- :user_id => current_user.id,
- :message => "Selected pay by check",
- :success => true)
- end
- def preregister_check_agreement
- @user = User.find(params[:user_id])
- @order = Order.find(params[:id])
- end
- def preregister_check_complete
- @order = Order.find(params[:id])
- @order.paying_by_check!
- Notifier.deliver_email_invoice(current_user,@order.id)
- @order.transactions.create!(:test => true,
- :amount => 0,
- :user_id => current_user.id,
- :message => "Selected pay by check for prereserved spaces",
- :success => true)
- end
- # GET /orders
- # GET /orders.xml
- def index
- @users = []
- if current_user.admin?
- case params[:scope]
- when 'active'
- @orders = Order.status("paid","prereserved","pending","awaiting_payment").user(current_user.id)
- when 'all_active'
- @orders = Order.status("paid","prereserved","pending","awaiting_payment")
- when 'all'
- @orders = Order.all
- when 'history'
- @orders = Order.user(current_user.id)
- when 'preregister'
- @order = Order.status("prereserved").user(current_user.id).first
- @users = User.all
- else
- flash[:notice] = "Unrecognized input, displaying your order history instead."
- @orders = Order.user(current_user.id)
- end
- else
- case params[:scope]
- when 'all_active', 'all'
- flash[:notice] = "You are only allowed to view your own profile. This attempt has been logged."
- @orders = Order.user(current_user.id)
- when 'active'
- @orders = Order.status("paid","prereserved","pending","awaiting_payment").user(current_user.id)
- when 'history'
- @orders = Order.user(current_user.id)
- when 'preregister'
- @order = Order.status("prereserved").user(current_user.id).first
- @users << current_user
- else
- flash[:notice] = "Unrecognized input, displaying your order history instead."
- @orders = Order.user(current_user.id)
- end
- @user = current_user
- end
- respond_to do |format|
- format.html # index.html.erb
- format.xml { render :xml => @orders }
- end
- end
- def new
- @users = []
- if current_user.admin?
- @users = User.find(:all)
- else
- @users << User.find(current_user.id)
- end
- @user = current_user
- end
- # DELETE /orders/1
- # DELETE /orders/1.xml
- def destroy
- @order = Order.find(params[:id])
- @order.line_items.each do |l|
- l.return_to_inventory
- end
- @order.destroy
- respond_to do |format|
- format.html { redirect_to(orders_url) }
- format.xml { head :ok }
- end
- end
- def purge_all
- Order.purge_all
- redirect_to(orders_url) and return
- end
- def checkout_buttons
- @user = User.find(params[:user_id])
- render :partial => 'checkout_buttons'
- end
- def preregister_checkout_buttons
- @user = User.find(params[:user_id])
- @order = Order.find(params[:order_id])
- render :partial => 'preregister_checkout_buttons'
- end
- private
- def gateway
- @gateway ||= PaypalExpressGateway.new(
- :login => 'seller_1209948530_biz_api1.gmail.com',
- :password => '1209948540',
- :signature => 'AmpU5zszXSTw3pVOQYaA8LZbdq-XAkYfoBxKNKmE6rcCCKhRwnu6PnbD'
- )
- end
- def redirect_to_profile
- redirect_to edit_user_path(current_user.id)
- end
- end
Add Comment
Please, Sign In to add comment