class NotificationService class << self def send_instructeur_email_notification Instructeur .includes(assign_to: { procedure: :dossiers }) .where(assign_tos: { email_notifications_enabled: true }) .find_in_batches { |instructeurs| send_batch_of_instructeurs_email_notification(instructeurs) } end private def send_batch_of_instructeurs_email_notification(instructeurs) instructeurs .map { |instructeur| [instructeur, instructeur.email_notification_data] } .reject { |(_instructeur, data)| data.empty? } .each { |(instructeur, data)| InstructeurMailer.send_notifications(instructeur, data).deliver_later } end end end