diff --git a/app/controllers/schemes_controller.rb b/app/controllers/schemes_controller.rb index d249d129d..27fa0b44c 100644 --- a/app/controllers/schemes_controller.rb +++ b/app/controllers/schemes_controller.rb @@ -26,16 +26,18 @@ class SchemesController < ApplicationController if @scheme.errors.present? render "toggle_active", locals: { action: "deactivate" }, status: :unprocessable_entity - elsif deactivation_date_value.blank? - render "toggle_active", locals: { action: "deactivate" } - elsif params[:scheme][:confirm].present? - if @scheme.update(deactivation_date: deactivation_date_value) - # update the logs - flash[:notice] = "#{@scheme.service_name} has been deactivated" - end - redirect_to scheme_details_path(@scheme) else - render "toggle_active_confirm", locals: { action: "deactivate", deactivation_date: deactivation_date_value } + if deactivation_date_value.blank? + render "toggle_active", locals: { action: "deactivate" } + elsif (params[:scheme][:confirm].present?) + if @scheme.update(deactivation_date: deactivation_date_value) + # update the logs + flash[:notice] = "#{@scheme.service_name} has been deactivated" + end + redirect_to scheme_details_path(@scheme) + else + render "toggle_active_confirm", locals: {action: "deactivate", deactivation_date: deactivation_date_value} + end end end @@ -146,24 +148,18 @@ class SchemesController < ApplicationController end def deactivation_date - return if params[:scheme].blank? - return @scheme.errors.add(:deactivation_date, message: I18n.t("validations.scheme.deactivation_date.not_selected")) if params[:scheme][:deactivation_date].blank? + return unless params[:scheme].present? + return @scheme.errors.add(:deactivation_date, message: I18n.t("validations.scheme.deactivation_date.not_selected")) unless params[:scheme][:deactivation_date].present? return params[:scheme][:deactivation_date] unless params[:scheme][:deactivation_date] == "other" day = params[:scheme]["deactivation_date(3i)"] month = params[:scheme]["deactivation_date(2i)"] year = params[:scheme]["deactivation_date(1i)"] - if [day, month, year].any?(&:blank?) - { day:, month:, year: }.each do |period, value| - @scheme.errors.add(:deactivation_date, message: I18n.t("validations.scheme.deactivation_date.not_entered", period: period.to_s)) if value.blank? - end - elsif !Date.valid_date?(year.to_i, month.to_i, day.to_i) - @scheme.errors.add(:deactivation_date, message: I18n.t("validations.scheme.deactivation_date.invalid")) - elsif !year.to_i.between?(2000, 2200) - @scheme.errors.add(:deactivation_date, message: I18n.t("validations.scheme.deactivation_date.invalid")) - else + if [day, month, year].all?(&:present?) && Date.valid_date?(year.to_i, month.to_i, day.to_i) && year.to_i.between?(2000, 2200) Date.new(year.to_i, month.to_i, day.to_i) + else + @scheme.errors.add(:deactivation_date, message: I18n.t("validations.scheme.deactivation_date.not_entered")) end end diff --git a/app/views/schemes/toggle_active.html.erb b/app/views/schemes/toggle_active.html.erb index 0d5972d99..41e5b831e 100644 --- a/app/views/schemes/toggle_active.html.erb +++ b/app/views/schemes/toggle_active.html.erb @@ -5,7 +5,7 @@ ) %> <% end %> -<%= form_with model: @scheme, url: scheme_deactivate_path(@scheme), method: "get", local: true do |f| %> +<%= form_with model: @scheme, url: scheme_deactivate_path(@scheme), method: "patch", local: true do |f| %>
<%= f.govuk_error_summary %> diff --git a/app/views/schemes/toggle_active_confirm.html.erb b/app/views/schemes/toggle_active_confirm.html.erb index af052e890..ed4d6203f 100644 --- a/app/views/schemes/toggle_active_confirm.html.erb +++ b/app/views/schemes/toggle_active_confirm.html.erb @@ -1,4 +1,4 @@ -<%= form_with model: @scheme, url: scheme_deactivate_path(@scheme), method: "get", local: true do |f| %> +<%= form_with model: @scheme, url: scheme_deactivate_path(@scheme), method: "patch", local: true do |f| %> <% content_for :before_content do %> <%= govuk_back_link(href: :back) %> <% end %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 4f4aab23d..81be77398 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -314,8 +314,7 @@ en: scheme: deactivation_date: not_selected: "Select one of the options" - not_entered: "Enter a %{period}" - invalid: "Enter a valid date" + not_entered: "Enter a date" soft_validations: net_income: diff --git a/config/routes.rb b/config/routes.rb index 7f3d36cac..653d352eb 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -50,6 +50,7 @@ Rails.application.routes.draw do get "edit-name", to: "schemes#edit_name" get "support-services-provider", to: "schemes#support_services_provider" get "deactivate", to: "schemes#deactivate" + patch "deactivate", to: "schemes#deactivate" member do resources :locations do