@ -4,6 +4,26 @@ class FormController < ApplicationController
before_action :find_resource_by_named_id , except : % i [ review ]
before_action :find_resource_by_named_id , except : % i [ review ]
before_action :check_collection_period , only : % i [ submit_form show_page ]
before_action :check_collection_period , only : % i [ submit_form show_page ]
def update_owning_org ( log )
return unless current_user
return if current_user . support?
stock_owners = current_user . organisation . stock_owners
if current_user . organisation . holds_own_stock?
return if stock_owners . count > = 1
log . update! ( owning_organisation : current_user . organisation )
else
return if stock_owners . count . zero?
return if stock_owners . count > 1
log . update! ( owning_organisation : stock_owners . first )
end
false
end
def submit_form
def submit_form
if @log
if @log
@page = form . get_page ( params [ @log . model_name . param_key ] [ :page ] )
@page = form . get_page ( params [ @log . model_name . param_key ] [ :page ] )
@ -11,6 +31,7 @@ class FormController < ApplicationController
mandatory_questions_with_no_response = mandatory_questions_with_no_response ( responses_for_page )
mandatory_questions_with_no_response = mandatory_questions_with_no_response ( responses_for_page )
if mandatory_questions_with_no_response . empty? && @log . update ( responses_for_page . merge ( updated_by : current_user ) )
if mandatory_questions_with_no_response . empty? && @log . update ( responses_for_page . merge ( updated_by : current_user ) )
update_owning_org ( @log )
flash [ :notice ] = " You have successfully updated #{ @page . questions . map ( & :check_answer_label ) . first . downcase } " if previous_interruption_screen_page_id . present?
flash [ :notice ] = " You have successfully updated #{ @page . questions . map ( & :check_answer_label ) . first . downcase } " if previous_interruption_screen_page_id . present?
redirect_to ( successful_redirect_path )
redirect_to ( successful_redirect_path )
else
else