module Base::FontesDeRecursos
	class Fonte2018 < Base::FonteDeRecursos
		belongs_to :classificacao_da_fonte_de_recursos
		belongs_to :grupo_da_fonte_de_recursos

		default_scope { includes(:grupo_da_fonte_de_recursos).order("base_grupos_das_fontes_de_recursos.codigo", :codigo) }

		validates_presence_of :modulo_id, :modulo_type, :grupo_da_fonte_de_recursos_id

		validates_uniqueness_of :codigo, scope: [:modulo_id, :modulo_type]
		validates_uniqueness_of :descricao, scope: [:modulo_id, :modulo_type]

		validate :valor_minimo_saude, unless: Proc.new{ |fonte| fonte.percentual_minimo_de_destinacao.blank? }
		validate :valor_minimo_educacao, unless: Proc.new{ |fonte| fonte.percentual_minimo_de_destinacao.blank? }

		def codigo_e_descricao
			"#{codigo_completo} - #{descricao}"
		end

		def codigo_completo
			"#{grupo_da_fonte_de_recursos.codigo.to_i}""#{codigo}"
		end

		private
		def valor_minimo_saude
			if self.codigo == "03" && self.percentual_minimo_de_destinacao < 15
				errors.add(:percentual_minimo_de_destinacao, 'O percentual para sáude não pode ser menor que 15%')
			end
		end

		def valor_minimo_educacao
			if self.codigo == "02" && self.percentual_minimo_de_destinacao < 25
				errors.add(:percentual_minimo_de_destinacao, 'O percentual para educação não pode ser menor que 25%')
			end
		end
	end
end
