class Pca::CategoriaDaAcao < ApplicationRecord
	has_paper_trail

	belongs_to :acao, class_name: 'Pca::Acao', foreign_key: 'acao_id', inverse_of: :categorias_da_acao
	belongs_to :categoria, class_name: 'Base::Categoria', required: true
	belongs_to :subcategoria, class_name: 'Base::Categoria'
  self.table_name = 'pca_categorias_da_acao'

	def itens_da_acao_por_categoria
		if subcategoria.present?
			acao.itens_da_acao.joins(:item).where("base_itens.categoria_id = ?", subcategoria.id)
		else
			acao.itens_da_acao.to_a.select{ |item_da_acao|
				if item_da_acao.item.categoria.categoria_superior.present?
					item_da_acao.item.categoria.categoria_superior.id == categoria.id
				else
					item_da_acao.item.categoria.id == categoria.id
				end
			}
		end
	end

	def categoria_do_item
		if subcategoria.present?
			subcategoria
		elsif categoria.subcategorias.empty?
			categoria
		else
			categoria.subcategorias
		end
	end
end
