From 24e897d145dd9729ab4671ea387cc10167ce2eb0 Mon Sep 17 00:00:00 2001 From: Pau Perez Date: Fri, 29 May 2020 15:44:31 +0200 Subject: [PATCH] Do not build OC with schedules at the same time It's not possible when neither the OC nor the schedule has an id due to the new join table order_cycle_schedules. --- app/services/order_cycle_form.rb | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app/services/order_cycle_form.rb b/app/services/order_cycle_form.rb index f83b2c57e2..87292a8a0c 100644 --- a/app/services/order_cycle_form.rb +++ b/app/services/order_cycle_form.rb @@ -8,14 +8,17 @@ class OrderCycleForm @order_cycle_params = order_cycle_params @user = user @permissions = OpenFoodNetwork::Permissions.new(user) + @schedule_ids = order_cycle_params.delete(:schedule_ids) end def save - build_schedule_ids + schedule_ids = build_schedule_ids order_cycle.assign_attributes(order_cycle_params) return false unless order_cycle.valid? order_cycle.transaction do + order_cycle.save! + order_cycle.schedule_ids = schedule_ids order_cycle.save! apply_exchange_changes sync_subscriptions @@ -42,7 +45,7 @@ class OrderCycleForm end def schedule_ids? - order_cycle_params[:schedule_ids].present? + @schedule_ids.present? end def build_schedule_ids @@ -51,7 +54,7 @@ class OrderCycleForm result = existing_schedule_ids result |= (requested_schedule_ids & permitted_schedule_ids) # Add permitted and requested result -= ((result & permitted_schedule_ids) - requested_schedule_ids) # Remove permitted but not requested - order_cycle_params[:schedule_ids] = result + result end def sync_subscriptions @@ -70,7 +73,7 @@ class OrderCycleForm end def requested_schedule_ids - order_cycle_params[:schedule_ids].map(&:to_i) + @schedule_ids.map(&:to_i) end def permitted_schedule_ids