-
Notifications
You must be signed in to change notification settings - Fork 0
/
orders_controller.rb
104 lines (85 loc) · 2.17 KB
/
orders_controller.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
class OrdersController < ApplicationController
before_action :welcome_crawler, only: :show
before_action :require_logged_in
before_action :require_active_order_is_non_existent, only: :new
before_action :require_active_order_is_existent, only: [:show, :progressbar, :status_dialog]
before_action :require_closing_order_is_existent, only: :result
def new
@form = OrderForm.new(order_params)
end
def show
@order = find_order.decorate
@server_status = ServerStatusDecorator.decorate(
ServerStatus.current_server_status
)
end
def result
@order = find_order.decorate
end
def create
@form = OrderForm.new(order_params)
if @form.valid?
@form.save!
redirect_to order_path
else
render :new
end
end
def abort
order = find_order
order.abort! if order.may_abort?
redirect_to order_path
end
def confirm
order = find_order
order.confirm! if order.may_confirm?
redirect_to result_order_path
end
def close
order = find_order
order.close! if order.may_close?
redirect_to getstarted_path
end
def progressbar
@order = find_order.decorate
render 'progressbar', layout: false
end
def status_dialog
@order = find_order.decorate
@server_status = ServerStatusDecorator.decorate(
ServerStatus.current_server_status
)
render 'status_dialog', layout: false
end
private
def find_order
Order.user(current_user).active.first
end
def order_params
params.permit(
:collect_method, :archive_url,
:start_message, :finish_message,
:protect_reply, :protect_favorite, :collect_from, :collect_to,
).merge(user_id: current_user.id)
end
def welcome_crawler
return if current_user.present?
render 'roots/show'
end
def require_logged_in
return if logged_in?
redirect_to root_path
end
def require_active_order_is_non_existent
return if find_order.blank?
redirect_to order_path
end
def require_active_order_is_existent
return if find_order.present?
redirect_to new_order_path
end
def require_closing_order_is_existent
return if find_order.closing?
redirect_to order_path
end
end