class Obra::SubcomponenteDaOperacaoDeCredito < ApplicationRecord
	has_paper_trail

	delegate :operacao_de_credito, to: :componente_da_operacao_de_credito

	belongs_to :componente_da_operacao_de_credito, class_name: "Obra::ComponenteDaOperacaoDeCredito"

	has_many :acoes_do_componente, class_name: "Obra::AcaoDoComponente", dependent: :destroy

	accepts_nested_attributes_for :acoes_do_componente, reject_if: :all_blank, allow_destroy: true

	validates :descricao, presence: true

	before_create :gerar_numero
	after_destroy :reordenar_numero

	private

	def gerar_numero
		self.codigo = operacao_de_credito.componentes_da_operacao_de_credito.maximum(:codigo).to_i + 1
	end

	def reordenar_numero
		proximo_numero = 1
		if operacao_de_credito.componentes_da_operacao_de_credito.any?
			operacao_de_credito.componentes_da_operacao_de_credito.order(:codigo).each do |foto|
				foto.update_column(:codigo, proximo_numero)
				proximo_numero += 1
			end
		end
	end
end
