class Substitute < ApplicationRecord
	include PortionsHelper
	belongs_to :equalable, polymorphic: true
	# belongs_to :workout, optional: true
	belongs_to :portion, optional: true
	validates :portion, uniqueness: { scope: :equalable, message: "Está relación ya existe" }, unless: Proc.new { |sub| sub.portion.blank? }

	def unidad
		self.portion.unidad
	end

	def shortcut
		if portion
	    	return [humanize_portion(quantity), portion.unidad, portion.name].join(" ")
		else
			return ""
		end
	end

	def facts
		"<span>Cal: #{calories}</span><span>Prot: #{proteins}</span><span>Carb: #{carbs}</span><span>Grasa #{fats}</span>"
	end

	def calories
		return get_fact(self.portion.calories) if self.portion
		return 0
	end

	def proteins
		return get_fact(self.portion.proteins) if self.portion
		return 0
	end

	def carbs
		return get_fact(self.portion.carbs) if self.portion
		return 0
	end

	def fiber
		return get_fact(self.portion.fiber) if self.portion
		return 0
	end

	def fats
		return get_fact(self.portion.fats) if self.portion
		return 0
	end

	private

	def get_fact(fact)
	((fact.to_f * quantity.to_f) / self.portion.quantity.to_f).round(2)
	end

end