From 47b2296801c111289006c31cc6e78ecad1e9fe47 Mon Sep 17 00:00:00 2001 From: Joe Freund Date: Sun, 30 Jun 2019 15:06:23 -0700 Subject: [PATCH 1/4] 422 deactivate services when parent resource is deactivated --- app/controllers/resources_controller.rb | 12 ++++-------- app/controllers/services_controller.rb | 17 +++-------------- app/errors/errors.rb | 5 +++++ app/services/resources/resources.rb | 23 +++++++++++++++++++++++ app/services/services/services.rb | 20 ++++++++++++++++++++ 5 files changed, 55 insertions(+), 22 deletions(-) create mode 100644 app/errors/errors.rb create mode 100644 app/services/resources/resources.rb create mode 100644 app/services/services/services.rb diff --git a/app/controllers/resources_controller.rb b/app/controllers/resources_controller.rb index e18e5510..bcc510f4 100644 --- a/app/controllers/resources_controller.rb +++ b/app/controllers/resources_controller.rb @@ -44,14 +44,10 @@ def certify end def destroy - resource = Resource.find params[:id] - if resource.approved? - resource.inactive! - remove_from_algolia(resource) - render status: :ok - else - render status: :precondition_failed - end + puts params[:id] + Services::Resources.deactivate params[:id] + rescue Errors::PreconditionFailed + render status: :precondition_failed end # Return the total number of active (i.e., approved) resources diff --git a/app/controllers/services_controller.rb b/app/controllers/services_controller.rb index ead61828..57b250d6 100644 --- a/app/controllers/services_controller.rb +++ b/app/controllers/services_controller.rb @@ -87,14 +87,9 @@ def reject end def destroy - service = Service.find params[:id] - if service.approved? - service.inactive! - remove_from_algolia(service) - render status: :ok - else - render status: :precondition_failed - end + Services::Services.deactivate params[:id] + rescue Errors::PreconditionFailed + render status: :precondition_failed end def count @@ -103,12 +98,6 @@ def count private - def remove_from_algolia(service) - service.remove_from_index! - rescue StandardError - puts 'failed to remove rservice ' + service.id.to_s + ' from algolia index' - end - def services Service.includes(:notes, :categories, :eligibilities, :addresses, schedule: :schedule_days) end diff --git a/app/errors/errors.rb b/app/errors/errors.rb new file mode 100644 index 00000000..026e1f1c --- /dev/null +++ b/app/errors/errors.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +module Errors + class PreconditionFailed < StandardError; end +end diff --git a/app/services/resources/resources.rb b/app/services/resources/resources.rb new file mode 100644 index 00000000..52957c1f --- /dev/null +++ b/app/services/resources/resources.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module Services + module Resources + include Errors + + def self.deactivate(id) + resource = Resource.find id + raise Errors::PreconditionFailed unless resource.approved + resource.inactive! + remove_from_algolia(resource) + resource.services.each do |service| + Services.deactivate service + end + end + + def self.remove_from_algolia(resource) + resource.remove_from_index! + rescue StandardError + puts 'failed to remove resource ' + resource.id.to_s + ' from algolia index' + end + end +end diff --git a/app/services/services/services.rb b/app/services/services/services.rb new file mode 100644 index 00000000..3aab9a0b --- /dev/null +++ b/app/services/services/services.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +module Services + module Services + include Errors + + def self.deactivate(id) + service = Service.find id + raise Errors::PreconditionFailed unless service.approved + service.inactive! + remove_from_algolia(service) + end + + def self.remove_from_algolia(service) + service.remove_from_index! + rescue StandardError + puts 'failed to remove service ' + service.id.to_s + ' from algolia index' + end + end +end From 4ff170706de562881071bfa37b2a289a217ab472 Mon Sep 17 00:00:00 2001 From: Joe Freund Date: Sun, 30 Jun 2019 15:17:08 -0700 Subject: [PATCH 2/4] 422 deactivate services when parent resource is deactivated --- app/controllers/resources_controller.rb | 1 + app/controllers/services_controller.rb | 1 + app/services/resources/resources.rb | 2 +- app/services/services/services.rb | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/controllers/resources_controller.rb b/app/controllers/resources_controller.rb index bcc510f4..818375f5 100644 --- a/app/controllers/resources_controller.rb +++ b/app/controllers/resources_controller.rb @@ -46,6 +46,7 @@ def certify def destroy puts params[:id] Services::Resources.deactivate params[:id] + render status: :ok rescue Errors::PreconditionFailed render status: :precondition_failed end diff --git a/app/controllers/services_controller.rb b/app/controllers/services_controller.rb index 57b250d6..8c497561 100644 --- a/app/controllers/services_controller.rb +++ b/app/controllers/services_controller.rb @@ -88,6 +88,7 @@ def reject def destroy Services::Services.deactivate params[:id] + render status: :ok rescue Errors::PreconditionFailed render status: :precondition_failed end diff --git a/app/services/resources/resources.rb b/app/services/resources/resources.rb index 52957c1f..78a5a1da 100644 --- a/app/services/resources/resources.rb +++ b/app/services/resources/resources.rb @@ -6,7 +6,7 @@ module Resources def self.deactivate(id) resource = Resource.find id - raise Errors::PreconditionFailed unless resource.approved + raise Errors::PreconditionFailed unless resource.approved? resource.inactive! remove_from_algolia(resource) resource.services.each do |service| diff --git a/app/services/services/services.rb b/app/services/services/services.rb index 3aab9a0b..68bfaf9c 100644 --- a/app/services/services/services.rb +++ b/app/services/services/services.rb @@ -6,7 +6,7 @@ module Services def self.deactivate(id) service = Service.find id - raise Errors::PreconditionFailed unless service.approved + raise Errors::PreconditionFailed unless service.approved? service.inactive! remove_from_algolia(service) end From 6f287f39ac83f9651410e1fea98115a556fda42a Mon Sep 17 00:00:00 2001 From: Joe Freund Date: Sun, 11 Aug 2019 16:17:00 -0700 Subject: [PATCH 3/4] Added blank lines after guard clauses --- app/services/resources/resources.rb | 1 + app/services/services/services.rb | 1 + 2 files changed, 2 insertions(+) diff --git a/app/services/resources/resources.rb b/app/services/resources/resources.rb index 78a5a1da..2a452e59 100644 --- a/app/services/resources/resources.rb +++ b/app/services/resources/resources.rb @@ -7,6 +7,7 @@ module Resources def self.deactivate(id) resource = Resource.find id raise Errors::PreconditionFailed unless resource.approved? + resource.inactive! remove_from_algolia(resource) resource.services.each do |service| diff --git a/app/services/services/services.rb b/app/services/services/services.rb index 68bfaf9c..fa9b163a 100644 --- a/app/services/services/services.rb +++ b/app/services/services/services.rb @@ -7,6 +7,7 @@ module Services def self.deactivate(id) service = Service.find id raise Errors::PreconditionFailed unless service.approved? + service.inactive! remove_from_algolia(service) end From 41088cfa1311e32df6d757ad7e49dd4df3236c6d Mon Sep 17 00:00:00 2001 From: Joe Freund Date: Sun, 11 Aug 2019 16:21:59 -0700 Subject: [PATCH 4/4] Removed trailing whitespace --- app/services/resources/resources.rb | 2 +- app/services/services/services.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/services/resources/resources.rb b/app/services/resources/resources.rb index 2a452e59..904d8a90 100644 --- a/app/services/resources/resources.rb +++ b/app/services/resources/resources.rb @@ -7,7 +7,7 @@ module Resources def self.deactivate(id) resource = Resource.find id raise Errors::PreconditionFailed unless resource.approved? - + resource.inactive! remove_from_algolia(resource) resource.services.each do |service| diff --git a/app/services/services/services.rb b/app/services/services/services.rb index fa9b163a..a49d6409 100644 --- a/app/services/services/services.rb +++ b/app/services/services/services.rb @@ -7,7 +7,7 @@ module Services def self.deactivate(id) service = Service.find id raise Errors::PreconditionFailed unless service.approved? - + service.inactive! remove_from_algolia(service) end