class ClosePeriodReminderWorker
  include Sidekiq::Worker

  def perform
    return if Invoice.count.zero?

    last_period = AccountingPeriod.order(closed_at: :desc).limit(1).last
    first_invoice = Invoice.order(created_at: :asc).limit(1).last
    return if !last_period && first_invoice.created_at > (Time.current - 1.year)
    return if last_period && last_period.end_at > (Time.current - 1.year)

    NotificationCenter.call type: 'notify_admin_close_period_reminder',
                            receiver: User.admins,
                            attached_object: last_period || Invoice.order(:created_at).first
  end
end