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.
This commit is contained in:
Pau Perez
2020-05-29 15:44:31 +02:00
parent 538c53fe9e
commit 24e897d145

View File

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