@ -1,19 +1,10 @@
class FormController < ApplicationController
class FormController < ApplicationController
before_action :authenticate_user!
before_action :authenticate_user!
before_action :find_resource , only : [ :submit_form , : review]
before_action :find_resource , only : % i [ submit_form review ]
before_action :find_resource_by_named_id , except : [ :submit_form , : review]
before_action :find_resource_by_named_id , except : % i [ submit_form review ]
def submit_form
def submit_form
if @case_log
if @case_log
if is_referrer_review?
if @case_log . completed?
redirect_to ( case_logs_path , flash : { notice : " Log #{ @case_log . id } has been submitted " } )
else
@case_log . errors . add :base , " All mandatory fields have not been completed, please refer to section status "
session [ :review_errors ] = @case_log . errors . to_json
redirect_to ( review_case_log_path )
end
else
@page = @case_log . form . get_page ( params [ :case_log ] [ :page ] )
@page = @case_log . form . get_page ( params [ :case_log ] [ :page ] )
responses_for_page = responses_for_page ( @page )
responses_for_page = responses_for_page ( @page )
if @case_log . update ( responses_for_page )
if @case_log . update ( responses_for_page )
@ -31,14 +22,12 @@ class FormController < ApplicationController
session [ :errors ] = @case_log . errors . to_json
session [ :errors ] = @case_log . errors . to_json
redirect_to ( send ( redirect_path , @case_log ) )
redirect_to ( send ( redirect_path , @case_log ) )
end
end
end
else
else
render_not_found
render_not_found
end
end
end
end
def check_answers
def check_answers
session [ :review_errors ] = nil
if @case_log
if @case_log
current_url = request . env [ " PATH_INFO " ]
current_url = request . env [ " PATH_INFO " ]
subsection = @case_log . form . get_subsection ( current_url . split ( " / " ) [ - 2 ] )
subsection = @case_log . form . get_subsection ( current_url . split ( " / " ) [ - 2 ] )
@ -50,11 +39,6 @@ class FormController < ApplicationController
def review
def review
if @case_log
if @case_log
if session [ :review_errors ]
JSON ( session [ :review_errors ] ) . each do | field , messages |
messages . each { | message | @case_log . errors . add field . to_sym , message }
end
end
render " form/review "
render " form/review "
else
else
render_not_found
render_not_found
@ -127,9 +111,4 @@ private
referrer = request . headers [ " HTTP_REFERER " ] . presence || " "
referrer = request . headers [ " HTTP_REFERER " ] . presence || " "
referrer . present? && CGI . parse ( referrer . split ( " ? " ) [ - 1 ] ) . present? && CGI . parse ( referrer . split ( " ? " ) [ - 1 ] ) [ " referrer " ] [ 0 ] == " check_answers "
referrer . present? && CGI . parse ( referrer . split ( " ? " ) [ - 1 ] ) . present? && CGI . parse ( referrer . split ( " ? " ) [ - 1 ] ) [ " referrer " ] [ 0 ] == " check_answers "
end
end
def is_referrer_review?
referrer = request . headers [ " HTTP_REFERER " ] . presence || " "
referrer . present? && referrer . split ( " / " ) [ - 1 ] . present? && referrer . split ( " / " ) [ - 1 ] == " review "
end
end
end