class Transaction
  def self.execute(options = {})
    if options[:reset_user_id] == true
      UserInfo.current_user_id = 1
    end
    original_interface_handle = ApplicationHandleInfo.current
    if options[:interface_handle]
      ApplicationHandleInfo.current = options[:interface_handle]
    end
    ActiveRecord::Base.transaction do
      PushMessages.init
      yield
      if options[:interface_handle]
        ApplicationHandleInfo.current = original_interface_handle
      end
      Observer::Transaction.commit(
        disable_notification: options[:disable_notification],
        disable: options[:disable],
      )
      PushMessages.finish
    end
  end
end
