From dcf982c1c3b5896c6f0e477bd23859b4a3c9d4f3 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Sun, 10 Jan 2021 00:51:16 +0000 Subject: [PATCH] Fix params mangling issues in SubscriptionsController --- app/controllers/admin/subscriptions_controller.rb | 9 ++++----- .../app/services/order_management/subscriptions/form.rb | 6 ++++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/app/controllers/admin/subscriptions_controller.rb b/app/controllers/admin/subscriptions_controller.rb index adfb0404bd..298d74b876 100644 --- a/app/controllers/admin/subscriptions_controller.rb +++ b/app/controllers/admin/subscriptions_controller.rb @@ -57,14 +57,13 @@ module Admin end def unpause - params[:subscription][:paused_at] = nil - save_form_and_render + save_form_and_render(true, unpause: true) end private - def save_form_and_render(render_issues = true) - form = OrderManagement::Subscriptions::Form.new(@subscription, subscription_params) + def save_form_and_render(render_issues = true, options = {}) + form = OrderManagement::Subscriptions::Form.new(@subscription, subscription_params, options) unless form.save render json: { errors: form.json_errors }, status: :unprocessable_entity return @@ -156,7 +155,7 @@ module Admin end def subscription_params - PermittedAttributes::Subscription.new(params).call + @subscription_params ||= PermittedAttributes::Subscription.new(params).call end end end diff --git a/engines/order_management/app/services/order_management/subscriptions/form.rb b/engines/order_management/app/services/order_management/subscriptions/form.rb index 2e354835be..8ea469d8b3 100644 --- a/engines/order_management/app/services/order_management/subscriptions/form.rb +++ b/engines/order_management/app/services/order_management/subscriptions/form.rb @@ -11,19 +11,21 @@ module OrderManagement delegate :json_errors, :valid?, to: :validator delegate :order_update_issues, to: :order_syncer - def initialize(subscription, subscription_params = {}) + def initialize(subscription, subscription_params = {}, options = {}) @subscription = subscription @subscription_params = subscription_params + @options = options @estimator = OrderManagement::Subscriptions::Estimator.new(subscription) @validator = OrderManagement::Subscriptions::Validator.new(subscription) @order_syncer = OrderSyncer.new(subscription) end def save - subscription.assign_attributes(subscription_params) + subscription.assign_attributes(subscription_params.to_h) return false unless valid? subscription.transaction do + subscription.paused_at = nil if @options[:unpause] estimator.estimate! proxy_order_syncer.sync! order_syncer.sync!