mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-30 21:27:17 +00:00
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user