1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-13 23:48:55 +01:00
fab-manager/app/workers/supporting_documents_reminder_worker.rb

27 lines
1.6 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
# Asynchronously export the accounting data (AccountingLines) to an external accounting software
class SupportingDocumentsReminderWorker
include Sidekiq::Worker
def perform
users_to_notify = User.members
.supporting_documents_reminder_not_sent
.where("users.created_at < ?", 2.days.ago)
.left_outer_joins(supporting_document_files: { supporting_document_type: :groups })
.where("groups.id = users.group_id OR groups.id IS NULL")
.select("users.*, count(supporting_document_files.id)")
.group("users.id")
.having("(count(supporting_document_files.id)) < (SELECT count(supporting_document_types.id) "\
"FROM supporting_document_types "\
"INNER JOIN supporting_document_types_groups "\
"ON supporting_document_types_groups.supporting_document_type_id = supporting_document_types.id "\
"WHERE supporting_document_types_groups.group_id = users.group_id)")
users_to_notify.each do |user|
NotificationCenter.call type: 'notify_user_supporting_document_reminder',
receiver: user,
attached_object: user
user.update_column(:supporting_documents_reminder_sent_at, DateTime.current)
end
end
end