28 lines
887 B
Ruby
28 lines
887 B
Ruby
# app/services/notificacao/resultado.rb
|
|
#
|
|
# Retorno dos testes de envio. Existe para o controller não precisar saber nada
|
|
# sobre SMTP nem sobre a API do Twilio — só perguntar `ok?` e jogar no flash.
|
|
module Notificacao
|
|
Resultado = Struct.new(:ok, :mensagem, :detalhe, keyword_init: true) do
|
|
def self.sucesso(mensagem)
|
|
new(ok: true, mensagem: mensagem)
|
|
end
|
|
|
|
def self.falha(mensagem, detalhe = nil)
|
|
new(ok: false, mensagem: mensagem, detalhe: detalhe)
|
|
end
|
|
|
|
def ok?
|
|
!!ok
|
|
end
|
|
|
|
# O detalhe técnico (mensagem crua do servidor/Twilio) só aparece no erro —
|
|
# é o que permite ao admin resolver sozinho sem abrir o log do container.
|
|
def para_flash
|
|
texto = mensagem.to_s
|
|
texto += " [detalhe técnico: #{detalhe.to_s.truncate(180)}]" if !ok? && detalhe.present?
|
|
{ ok? ? :notice : :alert => texto }
|
|
end
|
|
end
|
|
end
|