Class: Admin::OrdersController

Inherits:
ApplicationController
  • Object
show all
Defined in:
app/controllers/admin/orders_controller.rb

Instance Method Summary collapse

Instance Method Details

#create ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'app/controllers/admin/orders_controller.rb', line 28

def create
  @user = User.find_by_id(order_params[:user_id])
  @order = Effective::Order.new(user: @user)
  @order.send_payment_request_to_buyer = order_params[:send_payment_request_to_buyer]

  authorize_effective_order!

  if order_params[:order_items_attributes].present?
    order_params[:order_items_attributes].each do |_, item_attrs|
      purchasable = Effective::Product.new(item_attrs[:purchasable_attributes])
      @order.add(purchasable, quantity: item_attrs[:quantity])
    end
  end

  if @order.create_as_pending
    path_for_redirect = params[:commit] == 'Save and Add New' ? effective_orders.new_admin_order_path : effective_orders.admin_order_path(@order)
    message = 'Successfully created order'
    message << ". #{@order.user.email} has been sent a request for payment." if @order.send_payment_request_to_buyer?
    flash[:success] = message
    redirect_to path_for_redirect
  else
    @page_title = 'New Order'
    flash.now[:danger] = 'Unable to create order'
    render :new
  end
end

#index ⇒ Object



7
8
9
10
11
12
# File 'app/controllers/admin/orders_controller.rb', line 7

def index
  @datatable = Effective::Datatables::Orders.new() if defined?(EffectiveDatatables)
  @page_title = 'Orders'

  authorize_effective_order!
end

#mark_as_paid ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'app/controllers/admin/orders_controller.rb', line 55

def mark_as_paid
  @order = Effective::Order.find(params[:id])
  authorize_effective_order!

  purchased = @order.purchase!(
    details: 'Marked as paid by admin',
    provider: 'admin',
    card: 'none',
    email: EffectiveOrders.mailer[:send_order_receipts_when_marked_paid_by_admin],
    skip_buyer_validations: true  # This will allow a declined order to be marked purchased
  )

  if purchased
    flash[:success] = 'Order marked as paid successfully'
    redirect_to effective_orders.admin_order_path(@order)
  else
    flash[:danger] = 'Unable to mark order as paid'
    request.referrer ? (redirect_to :back) : (redirect_to effective_orders.admin_orders_path)
  end
end

#new ⇒ Object



21
22
23
24
25
26
# File 'app/controllers/admin/orders_controller.rb', line 21

def new
  @order = Effective::Order.new
  @page_title = 'New Order'

  authorize_effective_order!
end

#send_payment_request ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
# File 'app/controllers/admin/orders_controller.rb', line 76

def send_payment_request
  @order = Effective::Order.find(params[:id])
  authorize_effective_order!

  if @order.send_payment_request_to_buyer!
    flash[:success] = "Successfully sent payment request to #{@order.user.email}"
  else
    flash[:danger] = 'Unable to send payment request'
  end

  request.referrer ? (redirect_to :back) : (redirect_to effective_orders.admin_order_path(@order))
end

#show ⇒ Object



14
15
16
17
18
19
# File 'app/controllers/admin/orders_controller.rb', line 14

def show
  @order = Effective::Order.find(params[:id])
  @page_title = "Order ##{@order.to_param}"

  authorize_effective_order!
end