mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-08 21:06:24 +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]
|
not_applicable: form_field_value_params[:not_applicable]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
log_form_field_value_create_activity
|
||||||
|
|
||||||
render json: @form_field_value, serializer: FormFieldValueSerializer, user: current_user
|
render json: @form_field_value, serializer: FormFieldValueSerializer, user: current_user
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -37,4 +39,28 @@ class FormFieldValuesController < ApplicationController
|
||||||
def check_create_permissions
|
def check_create_permissions
|
||||||
render_403 unless can_submit_form_response?(@form_response)
|
render_403 unless can_submit_form_response?(@form_response)
|
||||||
end
|
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
|
end
|
||||||
|
|
|
@ -13,6 +13,7 @@ module StepElements
|
||||||
ActiveRecord::Base.transaction do
|
ActiveRecord::Base.transaction do
|
||||||
@form_response = FormResponse.create!(form: @form, created_by: current_user)
|
@form_response = FormResponse.create!(form: @form, created_by: current_user)
|
||||||
create_in_step!(@step, @form_response)
|
create_in_step!(@step, @form_response)
|
||||||
|
log_step_form_activity(:form_added, @step, { form: @form.id })
|
||||||
end
|
end
|
||||||
|
|
||||||
render_step_orderable_element(@form_response)
|
render_step_orderable_element(@form_response)
|
||||||
|
@ -22,6 +23,7 @@ module StepElements
|
||||||
render_403 and return unless can_submit_form_response?(@form_response)
|
render_403 and return unless can_submit_form_response?(@form_response)
|
||||||
|
|
||||||
@form_response.submit!(current_user)
|
@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)
|
render_step_orderable_element(@form_response)
|
||||||
end
|
end
|
||||||
|
@ -30,10 +32,29 @@ module StepElements
|
||||||
render_403 and return unless can_reset_form_response?(@form_response)
|
render_403 and return unless can_reset_form_response?(@form_response)
|
||||||
|
|
||||||
new_form_response = @form_response.reset!(current_user)
|
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)
|
render_step_orderable_element(new_form_response)
|
||||||
end
|
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
|
private
|
||||||
|
|
||||||
def form_response_params
|
def form_response_params
|
||||||
|
@ -57,5 +78,26 @@ module StepElements
|
||||||
|
|
||||||
render_404 unless @form_response
|
render_404 unless @form_response
|
||||||
end
|
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
|
||||||
end
|
end
|
||||||
|
|
|
@ -544,7 +544,17 @@ class Extends
|
||||||
form_block_edited: 343,
|
form_block_edited: 343,
|
||||||
form_block_deleted: 344,
|
form_block_deleted: 344,
|
||||||
form_block_rearranged: 345,
|
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 = {
|
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,
|
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],
|
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,
|
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],
|
task_inventory: [55, 56, 146, 147, 183],
|
||||||
experiment: [*27..31, 57, 141, 165],
|
experiment: [*27..31, 57, 141, 165],
|
||||||
reports: [48, 50, 49, 163, 164],
|
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,
|
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,
|
83, 101, 112, 123, 125, 117, 119, 129, 131, 187, 186,
|
||||||
190, 191, *204..215, 220, 223, 227, 228, 229, *230..235,
|
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],
|
team: [92, 94, 93, 97, 104, 244, 245],
|
||||||
label_templates: [*216..219],
|
label_templates: [*216..219],
|
||||||
storage_locations: [*309..315],
|
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_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."
|
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."
|
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:
|
activity_name:
|
||||||
create_project: "Project created"
|
create_project: "Project created"
|
||||||
rename_project: "Project renamed"
|
rename_project: "Project renamed"
|
||||||
|
@ -671,6 +680,15 @@ en:
|
||||||
form_block_deleted: "Form block deleted"
|
form_block_deleted: "Form block deleted"
|
||||||
form_block_rearranged: "Form block rearranged"
|
form_block_rearranged: "Form block rearranged"
|
||||||
export_form_responses: "Form data exported"
|
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:
|
activity_group:
|
||||||
projects: "Projects"
|
projects: "Projects"
|
||||||
task_results: "Task results"
|
task_results: "Task results"
|
||||||
|
|
|
@ -613,10 +613,11 @@ Rails.application.routes.draw do
|
||||||
post :reorder, on: :collection
|
post :reorder, on: :collection
|
||||||
end
|
end
|
||||||
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
|
member do
|
||||||
post :submit
|
post :submit
|
||||||
post :reset
|
post :reset
|
||||||
|
post :move
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
member do
|
member do
|
||||||
|
|
|
@ -4,6 +4,8 @@ FactoryBot.define do
|
||||||
factory :form_response do
|
factory :form_response do
|
||||||
association :form
|
association :form
|
||||||
association :created_by, factory: :user
|
association :created_by, factory: :user
|
||||||
|
association :step_orderable_element, factory: :step_orderable_element
|
||||||
|
|
||||||
status { :pending }
|
status { :pending }
|
||||||
|
|
||||||
trait :submitted do
|
trait :submitted do
|
||||||
|
|
Loading…
Add table
Reference in a new issue