module Patrimonio::CentroDeCustosHelper

  def imprimir_centros(centros, nivel = 0)
    # Caso não haja centros, retorna vazio para não gerar erros
    return ''.html_safe if centros.blank?

    # Monta as linhas de cada centro e, se houver filhos, chama recursivamente
    centros.map do |centro|
      # Linha deste centro
      row = content_tag(:tr) do
        # Primeira coluna (esquerda)
        col_esquerda = content_tag(
          :td,
          centro.try(:codigo_e_descricao),
          class: 'alinhar_a_esquerda',
          style: "padding-left: #{5 +(nivel * 15)}px"
        )

        # Segunda coluna (direita)
        col_direita = content_tag(
          :td,
          centro.bens_patrimoniais_nesse_centro_de_custo.size,
          class: 'alinhar_a_direita'
        )

        # Junta as duas colunas
        col_esquerda + col_direita
      end

      # Se o centro tiver filhos, imprime recursivamente
      children = if centro.centro_de_custos_filhos.present?
        imprimir_centros(centro.centro_de_custos_filhos.order("string_to_array(codigo, '.')::int[]"), nivel + 1)
      else
        ''.html_safe
      end

      # Retorna a linha do centro + as linhas dos filhos (se houver)
      row + children
    end.join.html_safe  # .join para concatenar, .html_safe para marcar como HTML válido
  end

end
