mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-28 16:08:22 +08:00
Merge pull request #8117 from andrej-scinote/aj_SCI_11396
Add activities for form attached to steps [SCI-11396][SCI-11397]
This commit is contained in:
commit
e0b6b2f1e8
6 changed files with 103 additions and 4 deletions
|
@ -13,6 +13,8 @@ class FormFieldValuesController < ApplicationController
|
|||
not_applicable: form_field_value_params[:not_applicable]
|
||||
)
|
||||
|
||||
log_form_field_value_create_activity
|
||||
|
||||
render json: @form_field_value, serializer: FormFieldValueSerializer, user: current_user
|
||||
end
|
||||
|
||||
|
@ -37,4 +39,28 @@ class FormFieldValuesController < ApplicationController
|
|||
def check_create_permissions
|
||||
render_403 unless can_submit_form_response?(@form_response)
|
||||
end
|
||||
|
||||
def log_form_field_value_create_activity
|
||||
step = @form_response.step
|
||||
protocol = step.protocol
|
||||
|
||||
Activities::CreateActivityService.call(
|
||||
activity_type: :task_step_form_field_edited,
|
||||
owner: current_user,
|
||||
team: protocol.team,
|
||||
project: nil,
|
||||
subject: protocol,
|
||||
message_items: {
|
||||
user: current_user.id,
|
||||
form_field_name: @form_field.name,
|
||||
form: @form_field.form.id,
|
||||
step: step.id,
|
||||
step_position: {
|
||||
id: step.id,
|
||||
value_for: 'position_plus_one'
|
||||
},
|
||||
my_module: protocol.my_module.id
|
||||
}
|
||||
)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -13,6 +13,7 @@ module StepElements
|
|||
ActiveRecord::Base.transaction do
|
||||
@form_response = FormResponse.create!(form: @form, created_by: current_user)
|
||||
create_in_step!(@step, @form_response)
|
||||
log_step_form_activity(:form_added, @step, { form: @form.id })
|
||||
end
|
||||
|
||||
render_step_orderable_element(@form_response)
|
||||
|
@ -22,6 +23,7 @@ module StepElements
|
|||
render_403 and return unless can_submit_form_response?(@form_response)
|
||||
|
||||
@form_response.submit!(current_user)
|
||||
log_step_form_activity(:form_field_submitted, @form_response.step, { form: @form_response.form.id })
|
||||
|
||||
render_step_orderable_element(@form_response)
|
||||
end
|
||||
|
@ -30,10 +32,29 @@ module StepElements
|
|||
render_403 and return unless can_reset_form_response?(@form_response)
|
||||
|
||||
new_form_response = @form_response.reset!(current_user)
|
||||
log_step_form_activity(:form_field_reopened, @form_response.step, { form: @form_response.form.id })
|
||||
|
||||
render_step_orderable_element(new_form_response)
|
||||
end
|
||||
|
||||
def move
|
||||
ActiveRecord::Base.transaction do
|
||||
target = @form_response.step
|
||||
log_step_form_activity(:form_moved,
|
||||
@form_response.step, {
|
||||
form: @form_response.form.id,
|
||||
step_position_destination: target.position + 1,
|
||||
step_destination: target.id
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
ActiveRecord::Base.transaction do
|
||||
log_step_form_activity(:form_deleted, @form_response.step, { form: @form_response.form.id })
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def form_response_params
|
||||
|
@ -57,5 +78,26 @@ module StepElements
|
|||
|
||||
render_404 unless @form_response
|
||||
end
|
||||
|
||||
def log_step_form_activity(element_type_of, step, message_items = {})
|
||||
protocol = step.protocol
|
||||
message_items[:my_module] = protocol.my_module.id if protocol.in_module?
|
||||
|
||||
Activities::CreateActivityService.call(
|
||||
activity_type: "#{step.protocol.in_module? ? 'task_step_' : 'protocol_step_'}#{element_type_of}",
|
||||
owner: current_user,
|
||||
team: protocol.team,
|
||||
project: protocol.in_module? ? protocol.my_module.project : nil,
|
||||
subject: protocol,
|
||||
message_items: {
|
||||
user: current_user.id,
|
||||
step: step.id,
|
||||
step_position: {
|
||||
id: step.id,
|
||||
value_for: 'position_plus_one'
|
||||
}
|
||||
}.merge(message_items)
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -544,7 +544,17 @@ class Extends
|
|||
form_block_edited: 343,
|
||||
form_block_deleted: 344,
|
||||
form_block_rearranged: 345,
|
||||
export_form_responses: 346
|
||||
export_form_responses: 346,
|
||||
task_step_form_added: 347,
|
||||
task_step_form_deleted: 348,
|
||||
task_step_form_moved: 349,
|
||||
task_step_form_field_edited: 350,
|
||||
task_step_form_field_submitted: 351,
|
||||
task_step_form_field_reopened: 352,
|
||||
protocol_step_form_added: 353,
|
||||
protocol_step_form_deleted: 354,
|
||||
protocol_step_form_moved: 355
|
||||
|
||||
}
|
||||
|
||||
ACTIVITY_GROUPS = {
|
||||
|
@ -553,7 +563,7 @@ class Extends
|
|||
task: [8, 58, 9, 59, *10..14, 35, 36, 37, 53, 54, *60..63, 138, 139, 140, 64, 66, 106, 126, 120, 132,
|
||||
148, 166],
|
||||
task_protocol: [15, 22, 16, 18, 19, 20, 21, 17, 38, 39, 100, 111, 45, 46, 47, 121, 124, 115, 118, 127, 130, 137,
|
||||
184, 185, 188, 189, *192..203, 221, 222, 224, 225, 226, 236, *249..252, *274..278, 299, 302, 305, 327],
|
||||
184, 185, 188, 189, *192..203, 221, 222, 224, 225, 226, 236, *249..252, *274..278, 299, 302, 305, 327, *347..352],
|
||||
task_inventory: [55, 56, 146, 147, 183],
|
||||
experiment: [*27..31, 57, 141, 165],
|
||||
reports: [48, 50, 49, 163, 164],
|
||||
|
@ -562,7 +572,7 @@ class Extends
|
|||
protocol_repository: [80, 103, 89, 87, 79, 90, 91, 88, 85, 86, 84, 81, 82,
|
||||
83, 101, 112, 123, 125, 117, 119, 129, 131, 187, 186,
|
||||
190, 191, *204..215, 220, 223, 227, 228, 229, *230..235,
|
||||
*237..240, *253..256, *279..283, 300, 304, 307, 330],
|
||||
*237..240, *253..256, *279..283, 300, 304, 307, 330, *353..355],
|
||||
team: [92, 94, 93, 97, 104, 244, 245],
|
||||
label_templates: [*216..219],
|
||||
storage_locations: [*309..315],
|
||||
|
|
|
@ -360,6 +360,15 @@ en:
|
|||
form_block_deleted_html: "%{user} deleted form block %{block_name} in form %{form} in Form templates."
|
||||
form_block_rearranged_html: "%{user} rearranged form blocks in form %{form} in Form templates."
|
||||
export_form_responses_html: "%{user} exported data from form %{form} in Form templates."
|
||||
task_step_form_added_html: "%{user} added form <strong>%{form}</strong> in protocol's step %{step_position} <strong>%{step}</strong> on task %{my_module}."
|
||||
task_step_form_deleted_html: "%{user} deleted form <strong>%{form}</strong> in protocol's step %{step_position} <strong>%{step}</strong> on task %{my_module}."
|
||||
task_step_form_moved_html: "%{user} moved form <strong>%{form}</strong> in protocol's step %{step_position} <strong>%{step}</strong> to step %{step_position_destination} <strong>%{step_destination}</strong> on task %{my_module}."
|
||||
task_step_form_field_edited_html: "%{user} edited form field <strong>%{form_field_name}</strong> in form <strong>%{form}</strong> in protocol's step %{step_position} <strong>%{step}</strong> on task %{my_module}."
|
||||
task_step_form_field_submitted_html: "%{user} submitted form <strong>%{form}</strong> in protocol's step %{step_position} <strong>%{step}</strong> on task %{my_module}."
|
||||
task_step_form_field_reopened_html: "%{user} reopened form <strong>%{form}</strong> in protocol's step %{step_position} <strong>%{step}</strong> on task %{my_module}."
|
||||
protocol_step_form_added_html: "%{user} added form <strong>%{form}</strong> in protocol's step %{step_position} <strong>%{step}</strong> in Protocol repository."
|
||||
protocol_step_form_deleted_html: "%{user} deleted form <strong>%{form}</strong> in protocol's step %{step_position} <strong>%{step}</strong> in Protocol repository."
|
||||
protocol_step_form_moved_html: "%{user} moved form <strong>%{form}</strong> in protocol's step %{step_position} <strong>%{step}</strong> to step %{step_position_destination} <strong>%{step_destination}</strong> in Protocol repository."
|
||||
activity_name:
|
||||
create_project: "Project created"
|
||||
rename_project: "Project renamed"
|
||||
|
@ -671,6 +680,15 @@ en:
|
|||
form_block_deleted: "Form block deleted"
|
||||
form_block_rearranged: "Form block rearranged"
|
||||
export_form_responses: "Form data exported"
|
||||
task_step_form_added: "Task step form added"
|
||||
task_step_form_deleted: "Task step form deleted"
|
||||
task_step_form_moved: "Task step form moved"
|
||||
task_step_form_field_edited: "Task step form field edited"
|
||||
task_step_form_field_submitted: "Task step form submitted"
|
||||
task_step_form_field_reopened: "Task step form reopened"
|
||||
protocol_step_form_added: "Protocol step form added"
|
||||
protocol_step_form_deleted: "Task step form deleted"
|
||||
protocol_step_form_moved: "Task step form moved"
|
||||
activity_group:
|
||||
projects: "Projects"
|
||||
task_results: "Task results"
|
||||
|
|
|
@ -613,10 +613,11 @@ Rails.application.routes.draw do
|
|||
post :reorder, on: :collection
|
||||
end
|
||||
end
|
||||
resources :form_responses, controller: 'step_elements/form_responses', only: %i(create) do
|
||||
resources :form_responses, controller: 'step_elements/form_responses', only: %i(create destroy) do
|
||||
member do
|
||||
post :submit
|
||||
post :reset
|
||||
post :move
|
||||
end
|
||||
end
|
||||
member do
|
||||
|
|
|
@ -4,6 +4,8 @@ FactoryBot.define do
|
|||
factory :form_response do
|
||||
association :form
|
||||
association :created_by, factory: :user
|
||||
association :step_orderable_element, factory: :step_orderable_element
|
||||
|
||||
status { :pending }
|
||||
|
||||
trait :submitted do
|
||||
|
|
Loading…
Add table
Reference in a new issue