diff --git a/app/controllers/schemes_controller.rb b/app/controllers/schemes_controller.rb index 7e24a6ce6..30c19bad1 100644 --- a/app/controllers/schemes_controller.rb +++ b/app/controllers/schemes_controller.rb @@ -34,57 +34,60 @@ class SchemesController < ApplicationController @scheme = Scheme.new(clean_params) @scheme.save - redirect_to edit_scheme_path(id: @scheme.id) + render "schemes/primary_client_group" end - def edit - if !params[:scheme] - @scheme = Scheme.find(params[:id]) - 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" - render "schemes/check_answers" - elsif secondary_client_group_patch? - required_params = params.require(:scheme).permit(:secondary_client_group) - @scheme.update(required_params) - # render "schemes/support" - render "schemes/check_answers" - elsif support_patch? - required_params = params.require(:scheme).permit(:intended_stay, :support_type) - @scheme.update(required_params) - # render "schemes/details" - render "schemes/check_answers" - 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) - render "schemes/check_answers" - end + def primary_client_group + @scheme = Scheme.find_by(id: params[:scheme_id]) + render "schemes/primary_client_group" end - private + def confirm_secondary_group + @scheme = Scheme.find_by(id: params[:scheme_id]) + if params[:scheme] + required_params = params.require(:scheme).permit(:primary_client_group) if params + @scheme.update(required_params) if required_params + end + render "schemes/confirm_secondary" + end - def primary_client_group_patch? - params[:scheme][:primary_client_group] + def secondary_client_group + @scheme = Scheme.find_by(id: params[:scheme_id]) + if params[:confirmed] + params[:confirmed][:selection] == "Yes" ? render("schemes/secondary_client_group") : render("schemes/support") + else + render "schemes/secondary_client_group" + end end - def secondary_client_group_patch? - params[:scheme][:secondary_client_group] + def support + @scheme = Scheme.find_by(id: params[:scheme_id]) + if params[:scheme] + required_params = params.require(:scheme).permit(:secondary_client_group) + @scheme.update(required_params) if required_params + end + render "schemes/support" end - def support_patch? - params[:scheme][:intended_stay] + def check_answers + @scheme = Scheme.find_by(id: params[:scheme_id]) + if params[:scheme] + required_params = params.require(:scheme).permit(:intended_stay, :support_type) + @scheme.update(required_params) + end + render "schemes/check_answers" end - def details_patch? - params[:scheme][:service_name] + def update + flash[:notice] = I18n.t("Scheme has been created.") + redirect_to schemes_path end + private + 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, :id).merge(code: code) + required_params = params.require(:scheme).permit(:service_name, :sensitive, :organisation_id, :scheme_type, :registered_under_care_act, :total_units, :id, :confirmed).merge(code: code) required_params[:sensitive] = required_params[:sensitive].to_i required_params end diff --git a/app/views/schemes/check_answers.html.erb b/app/views/schemes/check_answers.html.erb index 51992ab5d..47603ddf3 100644 --- a/app/views/schemes/check_answers.html.erb +++ b/app/views/schemes/check_answers.html.erb @@ -3,7 +3,7 @@ <% content_for :before_content do %> <%= govuk_back_link( text: "Back", - href: :back, + href: 'javascript:history.go(-1);', ) %> <% end %> @@ -20,4 +20,4 @@ <% end %> <% end %> -<%= govuk_button_link_to "Create scheme", root_path, html: { method: :get } %> +<%= govuk_button_link_to "Create scheme", scheme_update_path, html: { method: :put } %> diff --git a/app/views/schemes/confirm_secondary.html.erb b/app/views/schemes/confirm_secondary.html.erb new file mode 100644 index 000000000..b4699a796 --- /dev/null +++ b/app/views/schemes/confirm_secondary.html.erb @@ -0,0 +1,30 @@ +<% content_for :before_content do %> + <%= govuk_back_link( + text: "Back", + href: :back, + ) %> +<% end %> + +<%= render partial: "organisations/headings", locals: { main: "Does this scheme provide for another client group?", sub: @scheme.service_name } %> + +<%= form_for(:confirmed, method: :patch, url: scheme_secondary_path(scheme_id: @scheme.id)) do |f| %> +
+
+ +

+ <%= content_for(:title) %> +

+ + <% selection = ["Yes", "No"].map { |key, _| OpenStruct.new(id: key, name: key.to_s.humanize) } %> + + <%= f.govuk_collection_radio_buttons :selection, + selection, + :id, + :name, + legend: nil + %> + + <%= f.govuk_submit "Save and continue" %> +
+
+<% end %> diff --git a/app/views/schemes/details.html.erb b/app/views/schemes/details.html.erb index 774b14906..36c365167 100644 --- a/app/views/schemes/details.html.erb +++ b/app/views/schemes/details.html.erb @@ -3,7 +3,7 @@ <% content_for :before_content do %> <%= govuk_back_link( text: "Back", - href: :back, + href: 'javascript:history.go(-1);', ) %> <% end %> diff --git a/app/views/schemes/primary_client_group.html.erb b/app/views/schemes/primary_client_group.html.erb index ba82a86ae..fb1322e65 100644 --- a/app/views/schemes/primary_client_group.html.erb +++ b/app/views/schemes/primary_client_group.html.erb @@ -1,13 +1,13 @@ <% content_for :before_content do %> <%= govuk_back_link( text: "Back", - href: :back, + href: 'javascript:history.go(-1);', ) %> <% end %> <%= render partial: "organisations/headings", locals: { main: "What client group is this scheme intended for?", 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_confirm_secondary_path(scheme_id: @scheme.id)) 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 5672ddcf7..774ce7ded 100644 --- a/app/views/schemes/secondary_client_group.html.erb +++ b/app/views/schemes/secondary_client_group.html.erb @@ -1,13 +1,13 @@ <% content_for :before_content do %> <%= govuk_back_link( text: "Back", - href: :back, + href: 'javascript:history.go(-1);', ) %> <% end %> -<%= render partial: "organisations/headings", locals: { main: "Does this scheme provide for another client group?", sub: @scheme.service_name } %> +<%= render partial: "organisations/headings", locals: { main: "What is the other client group?", sub: @scheme.service_name } %> -<%= form_for(@scheme, method: :patch, url: scheme_secondary_path(scheme_id: @scheme.id)) do |f| %> +<%= form_for(@scheme, method: :patch, url: scheme_support_path(scheme_id: @scheme.id)) do |f| %>
<%= f.govuk_error_summary %> diff --git a/app/views/schemes/support.html.erb b/app/views/schemes/support.html.erb index 5f512cea4..f71b24fd1 100644 --- a/app/views/schemes/support.html.erb +++ b/app/views/schemes/support.html.erb @@ -1,13 +1,13 @@ <% content_for :before_content do %> <%= govuk_back_link( text: "Back", - href: :back, + href: 'javascript:history.go(-1);', ) %> <% end %> <%= render partial: "organisations/headings", locals: { main: "What support does this scheme provide?", sub: @scheme.service_name } %> -<%= form_for(@scheme, method: :patch, url: scheme_support_path(scheme_id: @scheme.id)) do |f| %> +<%= form_for(@scheme, method: :patch, url: scheme_check_answers_path(scheme_id: @scheme.id)) do |f| %>
<%= f.govuk_error_summary %> diff --git a/config/routes.rb b/config/routes.rb index b2ab9d751..d1ed89353 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -36,10 +36,17 @@ Rails.application.routes.draw do end resources :schemes do - patch "primary", to: "schemes#edit" - patch "secondary", to: "schemes#edit" - patch "support", to: "schemes#edit" - patch "details", to: "schemes#edit" + patch "primary", to: "schemes#primary_client_group" + get "primary", to: "schemes#primary_client_group" + patch "secondary", to: "schemes#secondary_client_group" + get "secondary", to: "schemes#secondary_client_group" + patch "support", to: "schemes#support" + get "support", to: "schemes#support" + get "update", to: "schemes#update" + patch "check_answers", to: "schemes#check_answers" + get "check_answers", to: "schemes#check_answers" + patch "confirm_secondary", to: "schemes#confirm_secondary_group" + get "confirm_secondary", to: "schemes#confirm_secondary_group" member do get "locations", to: "schemes#locations"