# app/services/notificacao/formatador.rb # # Formatação dos valores que entram numa mensagem. Existe porque o mesmo `moeda` # estava copiado em `Notificacao::Gatilhos` e em `NotificacaoService` — e agora o # catálogo de variáveis também precisa dele, o que faria três cópias. # # Métodos de módulo (sem estado): é chamado de model, job, service e view. module Notificacao module Formatador module_function # R$ 1.234,56 — separador de milhar incluído (o `number_to_currency` do Rails # depende de locale carregado, e isto roda também dentro de job). def moeda(valor) inteiro, decimais = format('%.2f', valor.to_f).split('.') inteiro = inteiro.reverse.gsub(/(\d{3})(?=\d)/, '\1.').reverse "R$ #{inteiro},#{decimais}" end def periodo(inicio, fim) return '' if inicio.blank? || fim.blank? "#{inicio.to_date.strftime('%d/%m/%Y')} a #{fim.to_date.strftime('%d/%m/%Y')}" end # Números grandes ficam ilegíveis sem separador numa mensagem de WhatsApp. def numero(valor) valor.to_i.to_s.reverse.gsub(/(\d{3})(?=\d)/, '\1.').reverse end end end