Files
openfoodnetwork/app/services/permitted_attributes/order_cycle.rb
Luis Ramos 2d4326ded3 Replace empty? with blank? which is equivalent but a bit more resilient, returns false for nil
Present is not blank, so unless blank? becomes if present?
2020-07-01 14:08:07 +01:00

50 lines
1.5 KiB
Ruby

# frozen_string_literal: true
module PermittedAttributes
class OrderCycle
def initialize(params)
@params = params
end
def call
return @params[:order_cycle] if @params[:order_cycle].blank?
@params.require(:order_cycle).permit(
:name, :orders_open_at, :orders_close_at, :coordinator_id,
incoming_exchanges: permitted_exchange_attributes,
outgoing_exchanges: permitted_exchange_attributes,
schedule_ids: [], coordinator_fee_ids: []
)
end
private
def permitted_exchange_attributes
[
:id, :sender_id, :receiver_id, :enterprise_id, :incoming, :active,
:select_all_variants, :receival_instructions,
:pickup_time, :pickup_instructions,
:tag_list,
tags: [:text],
enterprise_fee_ids: [],
variants: permitted_variant_ids
]
end
# In rails 5 we will be able to permit random hash keys simply with :variants => {}
# See https://github.com/rails/rails/commit/e86524c0c5a26ceec92895c830d1355ae47a7034
#
# Until then, we need to create an array of variant IDs in order to permit them
def permitted_variant_ids
variant_ids(@params[:order_cycle][:incoming_exchanges]) +
variant_ids(@params[:order_cycle][:outgoing_exchanges])
end
def variant_ids(exchange_params)
return [] unless exchange_params
exchange_params.map { |exchange| exchange[:variants].map { |key, _value| key } }.flatten
end
end
end