# == Schema Information
#
# Table name: annotations
#
#  id          :integer          not null, primary key
#  text        :text
#  type        :integer          default(0), not null
#  created_at  :datetime
#  updated_at  :datetime
#  org_id      :integer
#  question_id :integer
#
# Indexes
#
#  index_annotations_on_question_id  (question_id)
#
# Foreign Keys
#
#  fk_rails_...  (org_id => orgs.id)
#  fk_rails_...  (question_id => questions.id)
#

class Annotation < ActiveRecord::Base
  enum type: [ :example_answer, :guidance]
  ##
  # Associations
  belongs_to :org
  belongs_to :question
  has_one :section, through: :question
  has_one :phase, through: :question
  has_one :template, through: :question

  ##
  # I liked type as the name for the enum so overriding inheritance column
  self.inheritance_column = nil

  validates :question, :org,  presence: {message: _("can't be blank")}

  ##
  # returns the text from the annotation
  #
  # @return [String] the text from the annotation
  def to_s
    "#{text}"
  end


  ##
  # deep copy the given annotation and all it's associations
  #
  # @params [Annotation] annotation to be deep copied
  # @return [Annotation] the saved, copied annotation
  def self.deep_copy(annotation)
    annotation_copy = annotation.dup
    annotation_copy.save!
    return annotation_copy
  end

  def deep_copy(**options)
    copy = self.dup
    copy.question_id = options.fetch(:question_id, nil)
    return copy
  end
end
