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