mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-11 18:26:50 +00:00
34 lines
1005 B
Ruby
34 lines
1005 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Sets
|
|
class OrderCycleSet < ModelSet
|
|
def initialize(collection, attributes = {})
|
|
@confirm_datetime_change = attributes.delete :confirm_datetime_change
|
|
@error_class = attributes.delete :error_class
|
|
|
|
super(OrderCycle, collection, attributes)
|
|
end
|
|
|
|
def process(order_cycle, attributes)
|
|
if @confirm_datetime_change &&
|
|
order_cycle.orders.exists? &&
|
|
datetime_value_changed(order_cycle, attributes)
|
|
raise @error_class
|
|
end
|
|
|
|
super
|
|
end
|
|
|
|
private
|
|
|
|
def datetime_value_changed(order_cycle, attributes)
|
|
# return true if either key is present in params and change in values detected
|
|
return true if attributes.key?(:orders_open_at) &&
|
|
!order_cycle.same_datetime_value(:orders_open_at, attributes[:orders_open_at])
|
|
|
|
attributes.key?(:orders_close_at) &&
|
|
!order_cycle.same_datetime_value(:orders_close_at, attributes[:orders_close_at])
|
|
end
|
|
end
|
|
end
|