Implantação da geração de mensagem de forma livre e mudança na engine de mensagem
This commit is contained in:
26
app/jobs/notificacao_job.rb
Normal file
26
app/jobs/notificacao_job.rb
Normal file
@@ -0,0 +1,26 @@
|
||||
# app/jobs/notificacao_job.rb
|
||||
#
|
||||
# Entrega das notificações fora da requisição web.
|
||||
#
|
||||
# POR QUE JOB: o envio de WhatsApp pausa entre uma mensagem e outra (o canal por
|
||||
# QR bane número que dispara em rajada). Um `sleep` de 5s vezes 30 contatos
|
||||
# dentro do controller pendura o worker Puma por dois minutos e meio.
|
||||
#
|
||||
# ⚠️ O adapter é o :async do Rails (fila em memória, igual ao `deliver_later` que
|
||||
# o app já usa): job pendente se perde se o container reiniciar. Para
|
||||
# notificação isso é aceitável — o log em notificacao_envios mostra o que
|
||||
# ficou 'pendente' e a tela permite reenviar.
|
||||
class NotificacaoJob < ApplicationJob
|
||||
queue_as :default
|
||||
|
||||
def perform(evento_id, dados = {}, assunto = nil, corpo = nil, envolvido_id = nil)
|
||||
evento = EventoNotificacao.find_by(id: evento_id)
|
||||
return if evento.nil? || !evento.ativo?
|
||||
|
||||
envolvido = envolvido_id && User.find_by(id: envolvido_id)
|
||||
Notificacao::Despachante.new(evento, dados: dados, assunto: assunto,
|
||||
corpo: corpo, envolvido: envolvido).executar
|
||||
rescue StandardError => e
|
||||
Rails.logger.error("[NotificacaoJob] evento #{evento_id}: #{e.class}: #{e.message}")
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user