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:
andrej-scinote 2025-01-07 12:08:51 +01:00 committed by GitHub
commit e0b6b2f1e8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 103 additions and 4 deletions

View file

@ -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

View file

@ -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

View file

@ -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],

View file

@ -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"

View file

@ -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

View file

@ -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