Atualização do READ.ME
This commit is contained in:
@@ -24,16 +24,37 @@ module Notificacao
|
||||
class Despachante
|
||||
# Dispara em background. Nunca levanta: uma notificação não pode derrubar o
|
||||
# fechamento de um pagamento (mesma regra do NotificacaoService).
|
||||
# Dispara UM evento específico (disparo manual pelo botão da tela).
|
||||
def self.disparar(chave:, dados: {}, assunto: nil, corpo: nil, envolvido: nil)
|
||||
evento = EventoNotificacao.ativos.find_by(chave: chave.to_s)
|
||||
return if evento.nil?
|
||||
|
||||
NotificacaoJob.perform_later(evento.id, (dados || {}).stringify_keys,
|
||||
assunto.to_s, corpo.to_s, envolvido&.id)
|
||||
agendar(evento, dados: dados, assunto: assunto, corpo: corpo, envolvido: envolvido)
|
||||
rescue StandardError => e
|
||||
Rails.logger.error("[Despachante] falha ao agendar #{chave}: #{e.class}: #{e.message}")
|
||||
end
|
||||
|
||||
# Dispara TODOS os eventos ativos de um gatilho.
|
||||
#
|
||||
# É o que o código de negócio usa. Buscar pela `chave` (como era antes) fazia
|
||||
# só o evento de SISTEMA disparar: um evento criado pelo ADM com o mesmo
|
||||
# gatilho ficava mudo para sempre, sem erro nenhum — a tela oferecia o
|
||||
# gatilho e nada acontecia. Com N eventos no mesmo gatilho, cada um tem seus
|
||||
# próprios grupos e sua própria mensagem, que é o ponto de poder cadastrar.
|
||||
def self.disparar_gatilho(gatilho:, dados: {}, assunto: nil, corpo: nil, envolvido: nil)
|
||||
EventoNotificacao.ativos.where(gatilho: gatilho.to_s).find_each do |evento|
|
||||
agendar(evento, dados: dados, assunto: assunto, corpo: corpo, envolvido: envolvido)
|
||||
end
|
||||
rescue StandardError => e
|
||||
Rails.logger.error("[Despachante] falha ao agendar gatilho #{gatilho}: #{e.class}: #{e.message}")
|
||||
end
|
||||
|
||||
def self.agendar(evento, dados:, assunto:, corpo:, envolvido:)
|
||||
NotificacaoJob.perform_later(evento.id, (dados || {}).stringify_keys,
|
||||
assunto.to_s, corpo.to_s, envolvido&.id)
|
||||
end
|
||||
private_class_method :agendar
|
||||
|
||||
def initialize(evento, dados: {}, assunto: nil, corpo: nil, envolvido: nil)
|
||||
@evento = evento
|
||||
@dados = (dados || {}).stringify_keys
|
||||
|
||||
Reference in New Issue
Block a user