From 5c035e0c715976b901da18289f4b73081dd309e7 Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Tue, 15 Nov 2022 12:26:17 +0000 Subject: [PATCH] feat: further separate scheme deactivation behaviour --- app/controllers/schemes_controller.rb | 27 +++++++++++++++++------- app/models/scheme.rb | 6 +++++- app/views/schemes/show.html.erb | 2 +- app/views/schemes/toggle_active.html.erb | 2 +- config/routes.rb | 4 +++- 5 files changed, 29 insertions(+), 12 deletions(-) diff --git a/app/controllers/schemes_controller.rb b/app/controllers/schemes_controller.rb index 7da934cb2..538a9efc5 100644 --- a/app/controllers/schemes_controller.rb +++ b/app/controllers/schemes_controller.rb @@ -21,23 +21,28 @@ class SchemesController < ApplicationController render_not_found and return unless @scheme end - def deactivate + def new_deactivation if params[:scheme].blank? render "toggle_active", locals: { action: "deactivate" } else - @scheme.run_deactivation_validations = true - @scheme.deactivation_date = deactivation_date - @scheme.deactivation_date_type = params[:scheme][:deactivation_date_type] - if params[:scheme][:confirm].present? - confirm_deactivation - elsif @scheme.valid? - render "toggle_active_confirm", locals: { action: "deactivate", deactivation_date: @scheme.deactivation_date, deactivation_date_type: @scheme.deactivation_date_type } + prepare_for_validation + if @scheme.valid? + redirect_to scheme_deactivate_confirm_path(@scheme, deactivation_date: @scheme.deactivation_date, deactivation_date_type: @scheme.deactivation_date_type) else render "toggle_active", locals: { action: "deactivate" }, status: :unprocessable_entity end end end + def deactivate_confirm + render "toggle_active_confirm", locals: { action: "deactivate", deactivation_date: params[:deactivation_date], deactivation_date_type: params[:deactivation_date_type] } + end + + def deactivate + prepare_for_validation + confirm_deactivation + end + def reactivate render "toggle_active", locals: { action: "reactivate" } end @@ -303,4 +308,10 @@ private Time.utc(year.to_i, month.to_i, day.to_i) if Date.valid_date?(year.to_i, month.to_i, day.to_i) end + + def prepare_for_validation + @scheme.run_deactivation_validations = true + @scheme.deactivation_date = deactivation_date + @scheme.deactivation_date_type = params[:scheme][:deactivation_date_type] + end end diff --git a/app/models/scheme.rb b/app/models/scheme.rb index 6d1cdbf64..c7ac918b9 100644 --- a/app/models/scheme.rb +++ b/app/models/scheme.rb @@ -225,8 +225,12 @@ class Scheme < ApplicationRecord status == :active end + def run_deactivation_validations + deactivation_date.present? || @run_deactivation_validations + end + def deactivation_date_errors - return unless run_deactivation_validations == true + return unless run_deactivation_validations collection_start_date = FormHandler.instance.current_collection_start_date if deactivation_date_type.blank? diff --git a/app/views/schemes/show.html.erb b/app/views/schemes/show.html.erb index ff8a25c0a..2c01c06f1 100644 --- a/app/views/schemes/show.html.erb +++ b/app/views/schemes/show.html.erb @@ -27,7 +27,7 @@ <% if FeatureToggle.scheme_toggle_enabled? %> <% if @scheme.active? %> - <%= govuk_button_link_to "Deactivate this scheme", scheme_deactivate_path(@scheme), warning: true %> + <%= govuk_button_link_to "Deactivate this scheme", scheme_new_deactivation_path(@scheme), warning: true %> <% else %> <%= govuk_button_link_to "Reactivate this scheme", scheme_reactivate_path(@scheme) %> <% end %> diff --git a/app/views/schemes/toggle_active.html.erb b/app/views/schemes/toggle_active.html.erb index 37a73ddeb..11dd2f276 100644 --- a/app/views/schemes/toggle_active.html.erb +++ b/app/views/schemes/toggle_active.html.erb @@ -6,7 +6,7 @@ href: scheme_details_path(@scheme), ) %> <% end %> -<%= form_with model: @scheme, url: scheme_deactivate_path(@scheme), method: "patch", local: true do |f| %> +<%= form_with model: @scheme, url: scheme_new_deactivation_path(@scheme), method: "patch", local: true do |f| %>
<% collection_start_date = FormHandler.instance.current_collection_start_date %> diff --git a/config/routes.rb b/config/routes.rb index 4c6619c87..a5e13b4cd 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -49,8 +49,10 @@ Rails.application.routes.draw do get "check-answers", to: "schemes#check_answers" get "edit-name", to: "schemes#edit_name" get "support-services-provider", to: "schemes#support_services_provider" - get "deactivate", to: "schemes#deactivate" + get "new-deactivation", to: "schemes#new_deactivation" + get "deactivate-confirm", to: "schemes#deactivate_confirm" get "reactivate", to: "schemes#reactivate" + patch "new-deactivation", to: "schemes#new_deactivation" patch "deactivate", to: "schemes#deactivate" resources :locations do