diff --git a/app/controllers/schemes_controller.rb b/app/controllers/schemes_controller.rb index c1a3c4239..8e67c3705 100644 --- a/app/controllers/schemes_controller.rb +++ b/app/controllers/schemes_controller.rb @@ -27,7 +27,7 @@ class SchemesController < ApplicationController end def new - @resource = Scheme.new + @scheme = Scheme.new end def create @@ -40,27 +40,48 @@ class SchemesController < ApplicationController def edit if !params[:scheme] @scheme = Scheme.find(params[:id]) - render "schemes/primary_client_group", locals: { scheme: @scheme } - elsif params[:scheme][:primary_client_group] + render "schemes/primary_client_group" + elsif primary_client_group_patch? required_params = params.require(:scheme).permit(:primary_client_group) @scheme.update(required_params) - render "schemes/secondary_client_group", locals: { scheme: @scheme } - elsif params[:scheme][:secondary_client_group] - required_params = params.require(:scheme).permit(:secondaryy_client_group) + render "schemes/secondary_client_group" + elsif secondary_client_group_patch? + required_params = params.require(:scheme).permit(:secondary_client_group) @scheme.update(required_params) - render "schemes/secondary_client_group", locals: { scheme: @scheme } - elsif params[:scheme][:support] - required_params = params.require(:scheme).permit(:secondaryy_client_group) + render "schemes/support" + elsif support_patch? + required_params = params.require(:scheme).permit(:intended_stay, :support_type) @scheme.update(required_params) - render "schemes/secondary_client_group", locals: { scheme: @scheme } + render "schemes/details" + elsif details_patch? + required_params = params.require(:scheme).permit(:service_name, :sensitive, :organisation_id, :scheme_type, :registered_under_care_act, :total_units, :id) + required_params[:sensitive] = required_params[:sensitive].to_i + @scheme.update(required_params) + redirect_to schemes_path end end private + def primary_client_group_patch? + params[:scheme][:primary_client_group] + end + + def secondary_client_group_patch? + params[:scheme][:secondary_client_group] + end + + def support_patch? + params[:scheme][:intended_stay] + end + + def details_patch? + params[:scheme][:service_name] + end + def clean_params code = "S#{SecureRandom.alphanumeric(5)}".upcase - required_params = params.require(:scheme).permit(:service_name, :sensitive, :organisation_id, :scheme_type, :registered_under_care_act, :total_units).merge(code: code) + required_params = params.require(:scheme).permit(:service_name, :sensitive, :organisation_id, :scheme_type, :registered_under_care_act, :total_units, :id).merge(code: code) required_params[:sensitive] = required_params[:sensitive].to_i required_params end diff --git a/app/views/schemes/index.html.erb b/app/views/schemes/index.html.erb index 03d4b5220..9acbda5ab 100644 --- a/app/views/schemes/index.html.erb +++ b/app/views/schemes/index.html.erb @@ -7,7 +7,7 @@

Supported housing schemes

-<%= govuk_button_link_to "Create a new supported housing scheme", new_scheme_path, html: { method: :get } %> +<%= govuk_button_link_to "Create a new supported housing scheme", new_scheme_path, html: { method: :post } %> <%= render SearchComponent.new(current_user:, search_label: "Search by service name or code", value: @searched) %> diff --git a/app/views/schemes/new.html.erb b/app/views/schemes/new.html.erb index b2775e9e8..9658a8511 100644 --- a/app/views/schemes/new.html.erb +++ b/app/views/schemes/new.html.erb @@ -7,7 +7,7 @@ ) %> <% end %> -<%= form_for(@resource, as: :scheme, method: :post, url: schemes_path(scheme: @resource)) do |f| %> +<%= form_for(@scheme, as: :scheme, method: :post, url: schemes_path(scheme: @scheme)) do |f| %>
<%= f.govuk_error_summary %> diff --git a/app/views/schemes/secondary_client_group.html.erb b/app/views/schemes/secondary_client_group.html.erb index 0a9d40eed..5672ddcf7 100644 --- a/app/views/schemes/secondary_client_group.html.erb +++ b/app/views/schemes/secondary_client_group.html.erb @@ -7,7 +7,7 @@ <%= render partial: "organisations/headings", locals: { main: "Does this scheme provide for another client group?", sub: @scheme.service_name } %> -<%= form_for(@scheme, method: :patch, url: scheme_primary_path(scheme_id: @scheme.id)) do |f| %> +<%= form_for(@scheme, method: :patch, url: scheme_secondary_path(scheme_id: @scheme.id)) do |f| %>
<%= f.govuk_error_summary %> @@ -19,9 +19,9 @@ - <% primary_client_group_selection = Scheme.primary_client_groups.keys.excluding("Missing").map { |key, _| OpenStruct.new(id: key, name: key.to_s.humanize) } %> - <%= f.govuk_collection_radio_buttons :primary_client_group, - primary_client_group_selection, + <% secondary_client_group_selection = Scheme.secondary_client_groups.keys.excluding("Missing").map { |key, _| OpenStruct.new(id: key, name: key.to_s.humanize) } %> + <%= f.govuk_collection_radio_buttons :secondary_client_group, + secondary_client_group_selection, :id, :name, legend: nil %> diff --git a/config/routes.rb b/config/routes.rb index 0ee488417..b2ab9d751 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -37,6 +37,9 @@ Rails.application.routes.draw do resources :schemes do patch "primary", to: "schemes#edit" + patch "secondary", to: "schemes#edit" + patch "support", to: "schemes#edit" + patch "details", to: "schemes#edit" member do get "locations", to: "schemes#locations"