# app/models/configuracao.rb class Configuracao < ApplicationRecord # Chaves válidas do sistema CHAVES = %w[ preco_entrega preco_retirada preco_bonus preco_desconto notificacao_whatsapp notificacao_email empresa_nome empresa_logo ].freeze CHAVES_MOEDA = %w[ preco_entrega preco_retirada preco_bonus preco_desconto ].freeze validates :chave, presence: true, inclusion: { in: CHAVES }, uniqueness: true validates :valor, presence: true # ── Acesso rápido ─────────────────────────────────────────── def self.valor(chave) find_by(chave: chave)&.valor end def self.preco_entrega valor('preco_entrega').to_f end def self.preco_retirada valor('preco_retirada').to_f end def self.preco_bonus valor('preco_bonus').to_f end def self.preco_desconto valor('preco_desconto').to_f end # Mapa usado pelo DashboardController (Fase 3) def self.mapa_de_precos { entrega: preco_entrega, retirada: preco_retirada, bonus: preco_bonus, desconto: preco_desconto } end LABELS = { 'preco_entrega' => 'Entrega Normal', 'preco_retirada' => 'Retirada', 'preco_bonus' => 'Bônus', 'preco_desconto' => 'Desconto', 'notificacao_whatsapp' => 'Notificação WhatsApp', 'notificacao_email' => 'Notificação E-mail', 'empresa_nome' => 'Nome da Empresa' }.freeze ICONES = { 'preco_entrega' => '🚚', 'preco_retirada' => '📦', 'preco_bonus' => '⭐', 'preco_desconto' => '⚠️', 'notificacao_whatsapp' => '💬', 'notificacao_email' => '✉️', 'empresa_nome' => '🏢' }.freeze # Usados pelas views admin/configuracoes (Fase 2) def tipo_label LABELS[chave] || chave.humanize end def icone ICONES[chave] || '⚙️' end def moeda? CHAVES_MOEDA.include?(chave) end def valor_formatado return "R$ #{format('%.2f', valor.to_f).gsub('.', ',')}" if moeda? valor end end