Class: RailsExecution::TasksController
Instance Method Summary
collapse
#can_close_task?, #can_create_task?, #can_edit_task?, #can_execute_task?, #display_decide?, #display_owner?, #display_reviewers?, #how_to_executable, #in_solo_mode?, #show_form_sidebar?
Methods included from BaseHelper
#current_owner
Instance Method Details
#approve ⇒ Object
118
119
120
121
122
123
124
125
|
# File 'app/controllers/rails_execution/tasks_controller.rb', line 118
def approve
if ::RailsExecution::Services::Approvement.new(current_task, reviewer: current_owner).approve
flash[:notice] = 'Your decision is updated!'
else
flash[:alert] = "Your decision is can't update!"
end
redirect_to action: :show
end
|
#closed ⇒ Object
93
94
95
96
97
|
# File 'app/controllers/rails_execution/tasks_controller.rb', line 93
def closed
paging = ::RailsExecution::Services::Paging.new(page: params[:page], per_page: params[:per_page])
closed_tasks = ::RailsExecution::Task.is_closed.descending.includes(:owner)
@tasks = paging.call(closed_tasks)
end
|
#completed ⇒ Object
87
88
89
90
91
|
# File 'app/controllers/rails_execution/tasks_controller.rb', line 87
def completed
paging = ::RailsExecution::Services::Paging.new(page: params[:page], per_page: params[:per_page])
completed_tasks = ::RailsExecution::Task.is_completed.descending.includes(:owner)
@tasks = paging.call(completed_tasks)
end
|
#create ⇒ Object
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'app/controllers/rails_execution/tasks_controller.rb', line 18
def create
raise(::RailsExecution::AccessDeniedError, 'Create task') unless can_create_task?
@task = ::RailsExecution::Task.new({
status: :created,
owner_id: current_owner&.id,
owner_type: ::RailsExecution.configuration.owner_model.to_s,
title: params.dig(:task, :title),
description: params.dig(:task, :description),
script: params.dig(:task, :script),
})
@task.assign_reviewers(params.dig(:task, :task_review_ids).to_a)
@task.syntax_status = ::RailsExecution::Services::SyntaxChecker.new(@task.script).call ? 'good' : 'bad'
if @task.save
@task.add_files(params[:attachments]&.permit!.to_h, current_owner) if ::RailsExecution.configuration.file_upload
flash[:notice] = 'Create the request is successful!'
redirect_to action: :index
else
render action: :new
end
end
|
#destroy ⇒ Object
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'app/controllers/rails_execution/tasks_controller.rb', line 44
def destroy
unless can_close_task?(current_task)
flash[:alert] = "You can't close this Task right now"
redirect_to(:back) and return
end
if current_task.update(status: :closed)
current_task.activities.create(owner: current_owner, message: 'Closed the task')
redirect_to(action: :show) and return
else
flash[:alert] = "Has problem when close this Task: #{current_task.errors.full_messages.join(', ')}"
redirect_to(:back) and return
end
end
|
#edit ⇒ Object
59
60
61
62
63
|
# File 'app/controllers/rails_execution/tasks_controller.rb', line 59
def edit
raise(::RailsExecution::AccessDeniedError, 'Edit task') unless can_edit_task?(current_task)
@task = current_task
end
|
#execute ⇒ Object
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
# File 'app/controllers/rails_execution/tasks_controller.rb', line 127
def execute
unless can_execute_task?(current_task)
flash[:alert] = "This task can't execute: #{how_to_executable(current_task)}"
redirect_to(action: :show) and return
end
execute_service = ::RailsExecution::Services::Execution.new(current_task)
if execute_service.call
current_task.update(status: :completed)
current_task.activities.create(owner: current_owner, message: 'Execute: The task is completed')
flash[:notice] = 'This task is executed'
else
flash[:alert] = "Sorry!!! This task can't execute right now"
end
redirect_to(action: :show)
end
|
#index ⇒ Object
6
7
8
9
10
|
# File 'app/controllers/rails_execution/tasks_controller.rb', line 6
def index
paging = ::RailsExecution::Services::Paging.new(page: params[:page], per_page: params[:per_page])
processing_tasks = ::RailsExecution::Task.processing.descending.includes(:owner)
@tasks = paging.call(processing_tasks)
end
|
#reject ⇒ Object
109
110
111
112
113
114
115
116
|
# File 'app/controllers/rails_execution/tasks_controller.rb', line 109
def reject
if ::RailsExecution::Services::Approvement.new(current_task, reviewer: current_owner).reject
flash[:notice] = 'Your decision is updated!'
else
flash[:alert] = "Your decision is can't update!"
end
redirect_to action: :show
end
|
#reopen ⇒ Object
99
100
101
102
103
104
105
106
107
|
# File 'app/controllers/rails_execution/tasks_controller.rb', line 99
def reopen
if current_task.update(status: :created)
current_task.activities.create(owner: current_owner, message: 'Re-opened the Task')
flash[:notice] = 'Your task is re-opened'
else
flash[:alert] = "Re-open is failed: #{current_task.errors.full_messages.join(', ')}"
end
redirect_to action: :show
end
|
#show ⇒ Object
41
42
|
# File 'app/controllers/rails_execution/tasks_controller.rb', line 41
def show
end
|
#update ⇒ Object
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# File 'app/controllers/rails_execution/tasks_controller.rb', line 65
def update
raise(::RailsExecution::AccessDeniedError, 'Edit task') unless can_edit_task?(current_task)
@task = current_task
update_data = {
title: params.dig(:task, :title),
description: params.dig(:task, :description),
}
update_data[:script] = params.dig(:task, :script) if @task.in_processing?
@task.assign_reviewers(params.dig(:task, :task_review_ids).to_a)
@task.syntax_status = ::RailsExecution::Services::SyntaxChecker.new(update_data[:script]).call ? 'good' : 'bad'
if @task.update(update_data)
@task.add_files(params[:attachments]&.permit!.to_h, current_owner) if ::RailsExecution.configuration.file_upload
@task.activities.create(owner: current_owner, message: 'Updated the Task')
redirect_to action: :show
else
render action: :edit
end
end
|