class Licitacao::CategoriaDoPedido < ApplicationRecord
	has_paper_trail

	belongs_to :pedido
	belongs_to :categoria, class_name: 'Base::Categoria', required: true
	belongs_to :subcategoria, class_name: 'Base::Categoria'

	def itens_do_pedido_por_categoria
		if subcategoria.present?
			pedido.itens_do_pedido.joins(:item).where("base_itens.categoria_id = ?", subcategoria.id)
		else
			pedido.itens_do_pedido.to_a.select{ |item_do_pedido|
				if item_do_pedido.item.categoria.categoria_superior.present?
					item_do_pedido.item.categoria.categoria_superior.id == categoria.id
				else
					item_do_pedido.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

	# VALORES
	def total_medio_dos_itens_por_categoria
		itens_do_pedido_por_categoria.to_a.sum(&:total_medio).to_f
	end

	def menor_total_dos_itens_por_categoria
		itens_do_pedido_por_categoria.to_a.sum(&:menor_total).to_f
	end
end
