# 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