# frozen_string_literal: true

class Schedule < ApplicationRecord
  has_paper_trail meta: { custom_data: proc { |schedule| schedule.order_cycle_ids.to_s } }

  has_many :order_cycle_schedules, dependent: :destroy
  has_many :order_cycles, through: :order_cycle_schedules
  has_many :coordinators, -> { distinct }, through: :order_cycles

  scope :with_coordinator, lambda { |enterprise|
                             joins(:order_cycles)
                               .where(order_cycles: { coordinator_id: enterprise.id })
                               .select('DISTINCT schedules.*')
                           }

  def current_or_next_order_cycle
    order_cycles.where('orders_close_at > (?)', Time.zone.now).order('orders_close_at ASC').first
  end
end
