# app/controllers/configuracoes_controller.rb
class Admin::ConfiguracoesController < ApplicationController
  before_action :set_configuracao, only: [:edit, :update]

  def index
    authorize Configuracao
    # Só os pilares de PREÇO (empresa/notificações não são preço e não entram aqui)
    @configuracoes = Configuracao.where(chave: Configuracao::CHAVES_MOEDA).order(:chave)
  end

  def edit
    authorize @configuracao
  end

  def update
    authorize @configuracao

    valor_anterior = @configuracao.valor

    if @configuracao.update(configuracao_params)
      AuditoriaLog.registrar(user: current_user, acao: 'editar_preco', entidade: 'Configuracao', entidade_id: @configuracao.id, dados_novos: { detalhes: "#{@configuracao.chave}: R$ #{valor_anterior} → R$ #{@configuracao.valor}" }, request: request)
      redirect_to admin_configuracoes_path, notice: "Preço de #{@configuracao.tipo_label} atualizado."
    else
      render :edit, status: :unprocessable_entity
    end
  end

  # POST /configuracoes/toggle_tema
  def toggle_tema
    skip_authorization
    session[:tema] = session[:tema] == 'light' ? 'dark' : 'light'
    redirect_back(fallback_location: dashboard_path)
  end

  private

  def set_configuracao
    @configuracao = Configuracao.find(params[:id])
  end

  def configuracao_params
    params.require(:configuracao).permit(:valor, :descricao)
  end
end
