Guest User

Untitled

a guest
May 2nd, 2018
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.34 KB | None | 0 0
  1. class OrdersController < ApplicationController
  2. before_filter :login_required
  3. before_filter :is_admin?, :only => [:purge_all]
  4. resources_controller_for :orders
  5.  
  6. include ActiveMerchant::Billing
  7.  
  8. def paypal_agreement
  9. end
  10.  
  11. def paypal_checkout
  12. setup_response = gateway.setup_purchase((@basket.base_price - @basket.discount) * 100,
  13. :ip => request.remote_ip,
  14. :return_url => url_for(:action => 'paypal_confirm', :id => @order, :only_path => false),
  15. :cancel_return_url => url_for(:action => 'index', :only_path => false)
  16. )
  17. redirect_to gateway.redirect_url_for(setup_response.token)
  18. end
  19.  
  20. def paypal_confirm
  21. redirect_to :action => 'index' unless params[:token]
  22.  
  23. details_response = gateway.details_for(params[:token])
  24.  
  25. if !details_response.success?
  26. flash[:notice] = details_response.message
  27. render :action => 'error'
  28. return
  29. end
  30.  
  31. @address = details_response.address
  32. end
  33.  
  34. def paypal_complete
  35. purchase = gateway.purchase((@basket.base_price - @basket.discount) * 100,
  36. :ip => request.remote_ip,
  37. :payer_id => params[:payer_id],
  38. :token => params[:token]
  39. )
  40.  
  41. if !purchase.success?
  42. flash[:notice] = purchase.message
  43. render :action => 'error'
  44. return
  45. else
  46. session[:basket].clear
  47. @user = current_user
  48. @order = Order.new(:user_id => @user.id, :order_status => "initial", :checkout_at => Time.now, :apples => @basket.apples)
  49. @order.save
  50. @order.payment_captured!
  51. @order.update_stock_quantities
  52. @order.transactions.create!(:amount => @order.total_price,
  53. :test => true,
  54. :user_id => current_user.id,
  55. :payment_method => "paypal",
  56. :fee_amount => purchase.params['fee_amount'],
  57. :reference => purchase.params['transaction_id'],
  58. :currency => "USD",
  59. :message => "Paid via Paypal",
  60. :success => true)
  61. Notifier.deliver_email_invoice(current_user,@order.id)
  62. end
  63. end
  64.  
  65. def check_agreement
  66. @user = User.find(params[:user_id])
  67. end
  68.  
  69. def check_complete
  70. @user = User.find(params[:user_id])
  71. @order = Order.new(:user_id => @user.id, :order_status => "initial", :checkout_at => Time.now, :apples => @basket.apples)
  72. @order.save
  73. @order.paying_by_check!
  74. Notifier.deliver_email_invoice(current_user,@order.id)
  75. session[:basket].clear
  76. @order.update_stock_quantities
  77. @order.transactions.create!(:test => true,
  78. :amount => 0,
  79. :user_id => current_user.id,
  80. :message => "Selected pay by check",
  81. :success => true)
  82. end
  83.  
  84. def preregister_check_agreement
  85. @user = User.find(params[:user_id])
  86. @order = Order.find(params[:id])
  87. end
  88.  
  89. def preregister_check_complete
  90. @order = Order.find(params[:id])
  91. @order.paying_by_check!
  92. Notifier.deliver_email_invoice(current_user,@order.id)
  93. @order.transactions.create!(:test => true,
  94. :amount => 0,
  95. :user_id => current_user.id,
  96. :message => "Selected pay by check for prereserved spaces",
  97. :success => true)
  98. end
  99.  
  100. # GET /orders
  101. # GET /orders.xml
  102. def index
  103. @users = []
  104. if current_user.admin?
  105. case params[:scope]
  106. when 'active'
  107. @orders = Order.status("paid","prereserved","pending","awaiting_payment").user(current_user.id)
  108. when 'all_active'
  109. @orders = Order.status("paid","prereserved","pending","awaiting_payment")
  110. when 'all'
  111. @orders = Order.all
  112. when 'history'
  113. @orders = Order.user(current_user.id)
  114. when 'preregister'
  115. @order = Order.status("prereserved").user(current_user.id).first
  116. @users = User.all
  117. else
  118. flash[:notice] = "Unrecognized input, displaying your order history instead."
  119. @orders = Order.user(current_user.id)
  120. end
  121. else
  122. case params[:scope]
  123. when 'all_active', 'all'
  124. flash[:notice] = "You are only allowed to view your own profile. This attempt has been logged."
  125. @orders = Order.user(current_user.id)
  126. when 'active'
  127. @orders = Order.status("paid","prereserved","pending","awaiting_payment").user(current_user.id)
  128. when 'history'
  129. @orders = Order.user(current_user.id)
  130. when 'preregister'
  131. @order = Order.status("prereserved").user(current_user.id).first
  132. @users << current_user
  133. else
  134. flash[:notice] = "Unrecognized input, displaying your order history instead."
  135. @orders = Order.user(current_user.id)
  136. end
  137. @user = current_user
  138. end
  139.  
  140. respond_to do |format|
  141. format.html # index.html.erb
  142. format.xml { render :xml => @orders }
  143. end
  144. end
  145.  
  146. def new
  147. @users = []
  148. if current_user.admin?
  149. @users = User.find(:all)
  150. else
  151. @users << User.find(current_user.id)
  152. end
  153. @user = current_user
  154. end
  155.  
  156. # DELETE /orders/1
  157. # DELETE /orders/1.xml
  158. def destroy
  159. @order = Order.find(params[:id])
  160. @order.line_items.each do |l|
  161. l.return_to_inventory
  162. end
  163. @order.destroy
  164.  
  165. respond_to do |format|
  166. format.html { redirect_to(orders_url) }
  167. format.xml { head :ok }
  168. end
  169. end
  170.  
  171. def purge_all
  172. Order.purge_all
  173. redirect_to(orders_url) and return
  174. end
  175.  
  176. def checkout_buttons
  177. @user = User.find(params[:user_id])
  178. render :partial => 'checkout_buttons'
  179. end
  180.  
  181. def preregister_checkout_buttons
  182. @user = User.find(params[:user_id])
  183. @order = Order.find(params[:order_id])
  184. render :partial => 'preregister_checkout_buttons'
  185. end
  186.  
  187. private
  188. def gateway
  189. @gateway ||= PaypalExpressGateway.new(
  190. :login => 'seller_1209948530_biz_api1.gmail.com',
  191. :password => '1209948540',
  192. :signature => 'AmpU5zszXSTw3pVOQYaA8LZbdq-XAkYfoBxKNKmE6rcCCKhRwnu6PnbD'
  193. )
  194. end
  195.  
  196. def redirect_to_profile
  197. redirect_to edit_user_path(current_user.id)
  198. end
  199.  
  200. end
Add Comment
Please, Sign In to add comment