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]
- include ActiveMerchant::Billing
- def paypal_agreement
- @order = Order.find(params[:id])
- end
- def paypal_checkout
- @order = Order.find(params[:id])
- setup_response = gateway.setup_purchase(@order.total_price * 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
- @order = Order.find(params[:id])
- 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
- @order = Order.find(params[:id])
- purchase = gateway.purchase(@order.total_price * 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
- Notifier.deliver_email_invoice(current_user,@order.id)
- session[:basket].clear
- @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)
- @order.payment_captured!
- end
- end
- def check_agreement
- @order = Order.find(params[:id])
- end
- def check_complete
- @order = Order.find(params[:id])
- Notifier.deliver_email_invoice(current_user,@order.id)
- session[:basket].clear
- @order.update_stock_quantities
- @order.transactions.create!(:test => true,
- :user_id => current_user.id,
- :message => "Selected pay by check",
- :success => true)
- end
- # GET /orders
- # GET /orders.xml
- def index
- @orders = Order.find(:all)
- respond_to do |format|
- format.html # index.html.erb
- format.xml { render :xml => @orders }
- end
- end
- # GET /orders/1
- # GET /orders/1.xml
- def show
- @order = Order.find(params[:id])
- respond_to do |format|
- format.html # show.html.erb
- format.xml { render :xml => @order }
- end
- end
- # GET /orders/new
- # GET /orders/new.xml
- def new
- @user = current_user
- @order = Order.new(:user_id => @user.id, :order_status => "initial", :checkout_at => Time.now, :apples => @basket.apples)
- @order.save
- @order.transactions.create!(:test => true,
- :user_id => current_user.id,
- :message => "Checkout",
- :success => true)
- respond_to do |format|
- format.html # new.html.erb
- format.xml { render :xml => @order }
- end
- end
- # GET /orders/1/edit
- def edit
- @order = Order.find(params[:id])
- end
- # POST /orders
- # POST /orders.xml
- def create
- @order = Order.new(params[:order])
- respond_to do |format|
- if @order.save
- flash[:notice] = 'Order was successfully created.'
- format.html { redirect_to(@order) }
- format.xml { render :xml => @order, :status => :created, :location => @order }
- else
- format.html { render :action => "new" }
- format.xml { render :xml => @order.errors, :status => :unprocessable_entity }
- end
- end
- end
- # PUT /orders/1
- # PUT /orders/1.xml
- def update
- @order = Order.find(params[:id])
- respond_to do |format|
- if @order.update_attributes(params[:order])
- flash[:notice] = 'Order was successfully updated.'
- format.html { redirect_to(@order) }
- format.xml { head :ok }
- else
- format.html { render :action => "edit" }
- format.xml { render :xml => @order.errors, :status => :unprocessable_entity }
- end
- end
- end
- # DELETE /orders/1
- # DELETE /orders/1.xml
- def destroy
- if params[:purge_all]
- purge_all
- redirect_to(root_url) and return
- else
- @order = Order.find(params[:id])
- @order.destroy
- end
- respond_to do |format|
- format.html { redirect_to(orders_url) }
- format.xml { head :ok }
- end
- 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
- def purge_all
- @orders = Order.find(:all)
- @orders.each do |o|
- o.line_items.each do |li|
- li.inventory.update_attribute(:stock_quantity,
- (li.inventory.stock_quantity + li.full_quantity + li.discount_quantity))
- li.destroy
- end
- o.destroy
- end
- end
- end
Add Comment
Please, Sign In to add comment