From 3d0770b07ecb513fa77c6a231683bfbec3158f26 Mon Sep 17 00:00:00 2001 From: Kat Date: Wed, 12 Apr 2023 16:59:13 +0100 Subject: [PATCH] Save merging organisations wip --- app/controllers/merge_requests_controller.rb | 27 ++++++++++- app/models/merge_request.rb | 4 ++ .../merge_requests/organisations.html.erb | 47 +++++++++++++++++++ config/routes.rb | 1 + ...20230412111338_add_merge_requests_table.rb | 2 +- db/schema.rb | 2 +- 6 files changed, 80 insertions(+), 3 deletions(-) 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 %> +

Tell us if your organisation is merging

+ +
+
+

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 %> +

\ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 80647c28d..c35509437 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -126,6 +126,7 @@ Rails.application.routes.draw do resources :merge_requests, path: "/merge-request" do post "merge-request", to: "merge_request#create_merge_request" get "organisations", to: "merge_requests#organisations" + patch "organisations", to: "merge_requests#update_organisations" 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 356cd473d..ee588b81e 100644 --- a/db/migrate/20230412111338_add_merge_requests_table.rb +++ b/db/migrate/20230412111338_add_merge_requests_table.rb @@ -2,7 +2,7 @@ class AddMergeRequestsTable < ActiveRecord::Migration[7.0] def change create_table :merge_requests do |t| t.integer :requesting_organisation_id - t.integer :merging_organisations, array: true + t.integer :merging_organisation_ids, array: true t.timestamps end end diff --git a/db/schema.rb b/db/schema.rb index ffd9b7e3a..7113f240a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -356,7 +356,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_04_12_143245) do create_table "merge_requests", force: :cascade do |t| t.integer "requesting_organisation_id" - t.integer "merging_organisations", array: true + t.integer "merging_organisation_ids", array: true t.datetime "created_at", null: false t.datetime "updated_at", null: false end