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