@ -1,7 +1,20 @@
class MergeRequestsController < ApplicationController
before_action :find_resource , only : % i [ update organisations update_organisations remove_merging_organisation absorbing_organisation confirm_telephone_number new_org_name ]
before_action :find_resource , only : % i [
update
organisations
update_organisations
remove_merging_organisation
absorbing_organisation
confirm_telephone_number
new_org_name
]
before_action :authenticate_user!
before_action :authenticate_scope! , except : [ :create ]
before_action :redirect_to_next_page
def absorbing_organisation ; end
def confirm_telephone_number ; end
def new_org_name ; end
def create
ActiveRecord :: Base . transaction do
@ -13,18 +26,12 @@ class MergeRequestsController < ApplicationController
render_not_found
end
def absorbing_organisation ; end
def confirm_telephone_number ; end
def new_org_name ; end
def organisations
@answer_options = organisations_answer_options
end
def update
if params . dig ( :merge_request , :absorbing_organisation_id ) == " other "
redirect_to next_page_path
elsif @merge_request . update ( merge_request_params )
if @merge_request . update ( merge_request_params )
redirect_to next_page_path
else
render previous_template , status : :unprocessable_entity
@ -49,6 +56,35 @@ class MergeRequestsController < ApplicationController
private
def page
params . dig ( :merge_request , :page )
end
def next_page_path
case page
when " absorbing_organisation "
if create_new_org?
new_org_name_merge_request_path ( @merge_request )
else
confirm_telephone_number_merge_request_path ( @merge_request )
end
when " organisations "
absorbing_organisation_merge_request_path ( @merge_request )
end
end
def previous_template
page
end
def redirect_to_next_page
redirect_to next_page_path if create_new_org?
end
def create_new_org?
params . dig ( :merge_request , :absorbing_organisation_id ) == " other "
end
def organisations_answer_options
answer_options = { " " = > " Select an option " }
@ -84,25 +120,6 @@ private
@merge_request = MergeRequest . find ( params [ :id ] )
end
def next_page_path
if params . dig ( :merge_request , :absorbing_organisation_id ) == " other "
# TODO: flow to be implemented in follow up PR
new_org_name_merge_request_path ( @merge_request )
elsif params . dig ( :merge_request , :absorbing_organisation_id ) . present?
confirm_telephone_number_merge_request_path ( @merge_request )
else
absorbing_organisation_merge_request_path ( @merge_request )
end
end
def previous_template
if params . dig ( :merge_request , :absorbing_organisation_id ) . present?
:absorbing_organisation
else
:organisations
end
end
def authenticate_scope!
if current_user . organisation != @merge_request . requesting_organisation && ! current_user . support?
render_not_found