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