diff --git a/app/controllers/schemes_controller.rb b/app/controllers/schemes_controller.rb index 7e0eb1a58..0b4e57113 100644 --- a/app/controllers/schemes_controller.rb +++ b/app/controllers/schemes_controller.rb @@ -22,7 +22,9 @@ class SchemesController < ApplicationController end def deactivate - if params[:scheme].present? && params[:scheme][:confirm].present? && params[:scheme][:deactivation_date].present? + if params[:scheme].blank? + render "toggle_active", locals: { action: "deactivate" } + elsif params[:scheme][:confirm].present? && params[:scheme][:deactivation_date].present? confirm_deactivation else deactivation_date_errors @@ -31,16 +33,15 @@ class SchemesController < ApplicationController # @scheme.deactivation_date = deactivation_date_errors render "toggle_active", locals: { action: "deactivate" }, status: :unprocessable_entity else - deactivation_date_value = deactivation_date - if deactivation_date_value.blank? - render "toggle_active", locals: { action: "deactivate" } - else - render "toggle_active_confirm", locals: { action: "deactivate", deactivation_date: deactivation_date_value } - end + render "toggle_active_confirm", locals: { action: "deactivate", deactivation_date: } end end end + def reactivate + render "toggle_active", locals: { action: "reactivate" } + end + def new @scheme = Scheme.new end @@ -283,19 +284,17 @@ private def confirm_deactivation if @scheme.update(deactivation_date: params[:scheme][:deactivation_date]) - @scheme.lettings_logs.filter_by_before_startdate(params[:scheme][:deactivation_date]).update!(scheme: nil) flash[:notice] = "#{@scheme.service_name} has been deactivated" end redirect_to scheme_details_path(@scheme) - nil end def deactivation_date_errors - if params[:scheme].present? && params[:scheme][:deactivation_date].blank? && params[:scheme][:deactivation_date_type].blank? + if params[:scheme][:deactivation_date].blank? && params[:scheme][:deactivation_date_type].blank? @scheme.errors.add(:deactivation_date_type, message: I18n.t("validations.scheme.deactivation_date.not_selected")) end - if params[:scheme].present? && params[:scheme][:deactivation_date_type] == "other" + if params[:scheme][:deactivation_date_type] == "other" day = params[:scheme]["deactivation_date(3i)"] month = params[:scheme]["deactivation_date(2i)"] year = params[:scheme]["deactivation_date(1i)"] diff --git a/app/models/scheme.rb b/app/models/scheme.rb index a4ae000fb..70777c562 100644 --- a/app/models/scheme.rb +++ b/app/models/scheme.rb @@ -22,7 +22,6 @@ class Scheme < ApplicationRecord auto_strip_attributes :service_name attr_accessor :deactivation_date_type - attr_accessor :deactivation_date SENSITIVE = { No: 0, @@ -214,4 +213,10 @@ class Scheme < ApplicationRecord def available_from created_at end + + def status + return :active if deactivation_date.blank? + return :deactivating_soon if Time.zone.now < deactivation_date + return :deactivated if Time.zone.now >= deactivation_date + end end diff --git a/app/views/schemes/show.html.erb b/app/views/schemes/show.html.erb index 7bf7d84a2..bd4ef5e86 100644 --- a/app/views/schemes/show.html.erb +++ b/app/views/schemes/show.html.erb @@ -26,5 +26,8 @@ <% end %> <% if FeatureToggle.scheme_toggle_enabled? %> - <%= govuk_button_link_to "Deactivate this scheme", scheme_deactivate_path(@scheme), warning: true %> -<% end %> + <% if @scheme.status == :active %> + <%= govuk_button_link_to "Deactivate this scheme", scheme_deactivate_path(@scheme), warning: true %> + <% else %> + <%= govuk_button_link_to "Reactivate this scheme", scheme_reactivate_path(@scheme) %> + <% end %><% end %> diff --git a/app/views/schemes/toggle_active.html.erb b/app/views/schemes/toggle_active.html.erb index d6897571d..3eddeb771 100644 --- a/app/views/schemes/toggle_active.html.erb +++ b/app/views/schemes/toggle_active.html.erb @@ -1,27 +1,28 @@ +<% title = "#{action.humanize} #{@scheme.service_name}" %> +<% content_for :title, title %> <% content_for :before_content do %> <%= govuk_back_link( text: "Back", - href: :back, + href: scheme_details_path(@scheme), ) %> <% end %> - <%= form_with model: @scheme, url: scheme_deactivate_path(@scheme), method: "patch", local: true do |f| %>