diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb
index d1e67dfa8..9dd331b46 100644
--- a/app/controllers/merge_requests_controller.rb
+++ b/app/controllers/merge_requests_controller.rb
@@ -1,6 +1,6 @@
class MergeRequestsController < ApplicationController
before_action :authenticate_user!
- before_action :find_resource, only: %i[organisations update_organisations remove_merging_organsiation]
+ before_action :find_resource, only: %i[organisations update_organisations remove_merging_organisation update_other_merging_organisations]
def create
@merge_request = MergeRequest.create!(merge_request_params)
@@ -26,7 +26,15 @@ class MergeRequestsController < ApplicationController
end
end
- def remove_merging_organsiation
+ def update_other_merging_organisations
+ if @merge_request.update(other_merging_organisaitions_params)
+ redirect_to merge_request_absorbing_organisation_path(@merge_request)
+ else
+ render :organisations, status: :unprocessable_entity
+ end
+ end
+
+ def remove_merging_organisation
MergeRequestOrganisation.find_by(merge_request_organisation_params).destroy!
@merge_request.reload
@answer_options = organisations_answer_options
@@ -46,7 +54,7 @@ private
end
def merge_request_params
- merge_params = params.fetch(:merge_request, {}).permit(:requesting_organisation_id)
+ merge_params = params.fetch(:merge_request, {}).permit(:requesting_organisation_id, :other_merging_organisations)
if current_user.data_coordinator? || current_user.data_provider?
merge_params[:requesting_organisation_id] = current_user.organisation.id
@@ -59,6 +67,10 @@ private
{ merge_request: @merge_request, merging_organisation: Organisation.find(params[:merge_request][:merging_organisation]) }
end
+ def other_merging_organisaitions_params
+ params.fetch(:merge_request, {}).permit(:other_merging_organisations)
+ end
+
def find_resource
@merge_request = MergeRequest.find(params[:merge_request_id])
end
diff --git a/app/views/merge_requests/organisations.html.erb b/app/views/merge_requests/organisations.html.erb
index 3b8ce2de7..b32a5c6eb 100644
--- a/app/views/merge_requests/organisations.html.erb
+++ b/app/views/merge_requests/organisations.html.erb
@@ -5,11 +5,10 @@
-
Add all organisations to be merged - we have already added your own.
+
Which organisations are merging?
<%= form_with model: @merge_request, url: merge_request_organisations_path, method: :patch do |f| %>
<%= f.govuk_error_summary %>
-
Start typing to search
<%= render partial: "organisation_relationships/related_organisation_select_question", locals: {
field: :merging_organisation,
question: Form::Question.new("", { "answer_options" => @answer_options }, nil),
@@ -40,8 +39,11 @@
<% end %>
<% end %>
<% end %>
- <%= govuk_details(summary_text: "I cannot find an organisation on the list") do %>
+<% end %>
+<%= form_with model: @merge_request, url: merge_request_other_merging_organisations_path, method: :patch do |f| %>
+ <%= govuk_details(summary_text: "Can't find the managing agent you're looking for?") do %>
+ <%= f.govuk_text_area :other_merging_organisations, label: { text: "Other organisations" }, hint: { text: "List other organisations that are part of the merge but not registered on CORE." }, rows: 9 %>
<% end %>
+ <%= f.govuk_submit "Continue" %>
<% end %>
-<%= govuk_button_link_to "Continue", "#", button: true %>
diff --git a/config/routes.rb b/config/routes.rb
index 91518790b..e3261f81f 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -127,7 +127,9 @@ Rails.application.routes.draw do
post "merge-request", to: "merge_request#create_merge_request"
get "organisations", to: "merge_requests#organisations"
patch "organisations", to: "merge_requests#update_organisations"
- get "organisations/remove", to: "merge_requests#remove_merging_organsiation"
+ get "organisations/remove", to: "merge_requests#remove_merging_organisation"
+ patch "other-merging-organisations", to: "merge_requests#update_other_merging_organisations"
+ get "absorbing_organisation", to: "merge_requests#absorbing_organisation"
end
resources :lettings_logs, path: "/lettings-logs" do
diff --git a/db/migrate/20230412111338_add_merge_requests_table.rb b/db/migrate/20230412111338_add_merge_requests_table.rb
index 79f68de80..2aaeb2989 100644
--- a/db/migrate/20230412111338_add_merge_requests_table.rb
+++ b/db/migrate/20230412111338_add_merge_requests_table.rb
@@ -2,6 +2,7 @@ class AddMergeRequestsTable < ActiveRecord::Migration[7.0]
def change
create_table :merge_requests do |t|
t.integer :requesting_organisation_id
+ t.text :other_merging_organisations
t.timestamps
end
end
diff --git a/db/schema.rb b/db/schema.rb
index 6c16aec2a..0d5c702db 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -363,6 +363,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_04_13_135407) do
create_table "merge_requests", force: :cascade do |t|
t.integer "requesting_organisation_id"
+ t.text "other_merging_organisations"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
@@ -532,6 +533,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_04_13_135407) do
t.integer "prevten"
t.integer "mortgageused"
t.integer "wchair"
+ t.integer "income2_value_check"
t.integer "armedforcesspouse"
t.datetime "hodate", precision: nil
t.integer "hoday"
@@ -556,14 +558,13 @@ ActiveRecord::Schema[7.0].define(version: 2023_04_13_135407) do
t.integer "retirement_value_check"
t.integer "hodate_check"
t.integer "extrabor_value_check"
- t.integer "grant_value_check"
- t.integer "staircase_bought_value_check"
t.integer "deposit_and_mortgage_value_check"
t.integer "shared_ownership_deposit_value_check"
+ t.integer "grant_value_check"
+ t.integer "value_value_check"
t.integer "old_persons_shared_ownership_value_check"
- t.integer "income2_value_check"
+ t.integer "staircase_bought_value_check"
t.integer "monthly_charges_value_check"
- t.integer "value_value_check"
t.integer "details_known_5"
t.integer "details_known_6"
t.integer "saledate_check"
@@ -573,10 +574,9 @@ ActiveRecord::Schema[7.0].define(version: 2023_04_13_135407) do
t.integer "ethnicbuy2"
t.integer "proplen_asked"
t.string "old_id"
- t.integer "pregblank"
t.integer "buy2living"
t.integer "prevtenbuy2"
- t.integer "nationalbuy2"
+ t.integer "pregblank"
t.string "uprn"
t.integer "uprn_known"
t.integer "uprn_confirmed"
@@ -584,10 +584,11 @@ ActiveRecord::Schema[7.0].define(version: 2023_04_13_135407) do
t.string "address_line2"
t.string "town_or_city"
t.string "county"
+ t.integer "nationalbuy2"
t.integer "discounted_sale_value_check"
t.integer "student_not_child_value_check"
- t.integer "buyer_livein_value_check"
t.integer "percentage_discount_value_check"
+ t.integer "buyer_livein_value_check"
t.index ["bulk_upload_id"], name: "index_sales_logs_on_bulk_upload_id"
t.index ["created_by_id"], name: "index_sales_logs_on_created_by_id"
t.index ["old_id"], name: "index_sales_logs_on_old_id", unique: true
diff --git a/spec/requests/merge_requests_controller_spec.rb b/spec/requests/merge_requests_controller_spec.rb
index 60f080853..58bd26a61 100644
--- a/spec/requests/merge_requests_controller_spec.rb
+++ b/spec/requests/merge_requests_controller_spec.rb
@@ -122,6 +122,22 @@ RSpec.describe MergeRequestsController, type: :request do
end
end
end
+
+ describe "#other_merging_organisations" do
+ let(:params) { { merge_request: { other_merging_organisations: "A list of other merging organisations" } } }
+
+ context "when adding other merging organisations" do
+ before do
+ MergeRequestOrganisation.create!(merge_request_id: merge_request.id, merging_organisation_id: other_organisation.id)
+ patch "/merge-request/#{merge_request.id}/other-merging-organisations", headers:, params:
+ end
+
+ it "updates the merge request" do
+ merge_request.reload
+ expect(merge_request.other_merging_organisations).to eq("A list of other merging organisations")
+ end
+ end
+ end
end
context "when user is signed in as a support user" do