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!