mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-09 23:06:06 +00:00
Extract #editable_order_cycles
This makes it far easier to spot what's the difference between create and update regarding the editable order cycles. I stop here before a slightly deeper refactor which would make the PR quite hard to review. This will come an upcoming one.
This commit is contained in:
@@ -5,7 +5,7 @@ module Admin
|
||||
class SchedulesController < ResourceController
|
||||
before_filter :adapt_params, only: [:update]
|
||||
before_filter :check_editable_order_cycle_ids_create, only: [:create]
|
||||
before_filter :check_editable_order_cycle_ids, only: [:update]
|
||||
before_filter :check_editable_order_cycle_ids_update, only: [:update]
|
||||
before_filter :check_dependent_subscriptions, only: [:destroy]
|
||||
update.after :sync_subscriptions
|
||||
|
||||
@@ -87,29 +87,34 @@ module Admin
|
||||
return unless params[:order_cycle_ids]
|
||||
|
||||
requested = params[:order_cycle_ids]
|
||||
@existing_order_cycle_ids = []
|
||||
|
||||
@existing_order_cycle_ids = @schedule.persisted? ? @schedule.order_cycle_ids : []
|
||||
|
||||
permitted = OrderCycle.where(id: params[:order_cycle_ids] | @existing_order_cycle_ids).merge(OrderCycle.managed_by(spree_current_user)).pluck(:id)
|
||||
|
||||
result = @existing_order_cycle_ids
|
||||
result |= (requested & permitted) # add any requested & permitted ids
|
||||
result -= ((result & permitted) - requested) # remove any existing and permitted ids that were not specifically requested
|
||||
result = editable_order_cycles(requested)
|
||||
|
||||
params[:order_cycle_ids] = result
|
||||
end
|
||||
|
||||
def check_editable_order_cycle_ids
|
||||
return unless params[:schedule][:order_cycle_ids] || params[:order_cycle_ids]
|
||||
def check_editable_order_cycle_ids_update
|
||||
return unless params[:schedule][:order_cycle_ids]
|
||||
|
||||
requested = params[:schedule][:order_cycle_ids]
|
||||
@existing_order_cycle_ids = @schedule.persisted? ? @schedule.order_cycle_ids : []
|
||||
permitted = OrderCycle.where(id: params[:schedule][:order_cycle_ids] | @existing_order_cycle_ids).merge(OrderCycle.managed_by(spree_current_user)).pluck(:id)
|
||||
@existing_order_cycle_ids = @schedule.order_cycle_ids
|
||||
|
||||
result = editable_order_cycles(requested)
|
||||
|
||||
params[:schedule][:order_cycle_ids] = result
|
||||
@object.order_cycle_ids = result
|
||||
end
|
||||
|
||||
def editable_order_cycles(requested)
|
||||
permitted = OrderCycle
|
||||
.where(id: params[:order_cycle_ids] | @existing_order_cycle_ids)
|
||||
.merge(OrderCycle.managed_by(spree_current_user))
|
||||
.pluck(:id)
|
||||
result = @existing_order_cycle_ids
|
||||
result |= (requested & permitted) # add any requested & permitted ids
|
||||
result -= ((result & permitted) - requested) # remove any existing and permitted ids that were not specifically requested
|
||||
params[:schedule][:order_cycle_ids] = result
|
||||
@object.order_cycle_ids = result
|
||||
result
|
||||
end
|
||||
|
||||
def check_dependent_subscriptions
|
||||
|
||||
Reference in New Issue
Block a user