diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb index 5e40279b3..cb6a150fc 100644 --- a/app/controllers/merge_requests_controller.rb +++ b/app/controllers/merge_requests_controller.rb @@ -13,12 +13,37 @@ class MergeRequestsController < ApplicationController end def organisations + @merge_request = MergeRequest.find(params[:merge_request_id]) + @answer_options = answer_options + @merging_organisations_list = [@merge_request.requesting_organisation] + end + + def update_organisations + @merge_request = MergeRequest.find(params[:merge_request_id]) + if @merge_request.merging_organisation_ids + @merge_request.merging_organisation_ids << params[:merge_request][:merging_organisation] + @merge_request.save! + else + @merge_request.update!(merging_organisation_ids:[params[:merge_request][:merging_organisation]]) + end + @answer_options = answer_options + @merging_organisations_list = [@merge_request.requesting_organisation] + @merge_request.merging_organisations + render "organisations" end private + def answer_options + answer_options = { "" => "Select an option" } + + Organisation.all.pluck(:id, :name).each do |organisation| + answer_options[organisation[0]] = organisation[1] + end + answer_options + end + def merge_request_params - required_params = {} + required_params = params.fetch(:merge_request, {}).permit(:requesting_organisation) required_params[:requesting_organisation] = current_user.organisation required_params diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 0a8f74716..009292c7f 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -1,3 +1,7 @@ class MergeRequest < ApplicationRecord belongs_to :requesting_organisation, class_name: "Organisation" + + def merging_organisations + Organisation.where(id: merging_organisation_ids) + end end diff --git a/app/views/merge_requests/organisations.html.erb b/app/views/merge_requests/organisations.html.erb index e69de29bb..a72b848c7 100644 --- a/app/views/merge_requests/organisations.html.erb +++ b/app/views/merge_requests/organisations.html.erb @@ -0,0 +1,47 @@ +<% title = "Tell us if your organisation is merging" %> +<% content_for :title, title %> +<%# <%= govuk_back_link href: merge_request_organisation_path %> +
Which organisations are merging?
+ +<%= form_with model: @merge_request, url: merge_request_organisations_path, method: :patch do |f| %> + <%= f.govuk_error_summary %> + <%= render partial: "organisation_relationships/related_organisation_select_question", locals: { + field: :merging_organisation, + question: Form::Question.new("", { "answer_options" => @answer_options }, nil), + f:, + } %> + <%= f.govuk_submit "Add organisation", classes: "govuk-button--secondary" %> + <%= govuk_table do |table| %> + <%= table.body do |body| %> + <%= body.row do |row| %> + <% row.cell(text: @merge_request.requesting_organisation.name) %> + <% row.cell(html_attributes: { + scope: "row", + class: "govuk-!-text-align-right", + }) %> + <% end %> + <% end %> + <% @merge_request.merging_organisations&.each do |merging_organisation| %> + <%= table.body do |body| %> + <%= body.row do |row| %> + <% row.cell(text: merging_organisation.name) %> + <% row.cell(html_attributes: { + scope: "row", + class: "govuk-!-text-align-right", + }) do %> + <%= govuk_link_to("Remove", merge_request_organisations_path) %> + <% end %> + <% end %> + <% end %> + <% end %> + <% end %> + <%= govuk_details(summary_text: "Can't find the managing agent you're looking for?") do %> +List other organisations that are part of the merge but not registered on CORE. + <% end %> +<% end %> +<%= govuk_button_link_to "Continue", "#", button: true %> +