class Admission::ApplicantEssay < ApplicationRecord
  include Admissions::ApplicantApplicationBroadcastable
  include Castable

  audited associated_with: :applicant

  cast_as_editor_content :body

  belongs_to :applicant
  belongs_to :essay

  delegate :application, to: :applicant

  validate :required_response

  def required_response
    required = application.application_essays.find_by(essay: essay).required
    return unless required

    sanitized_response = ActionController::Base.helpers.sanitize(body, tags: [])
    return if sanitized_response.present?

    errors.add(:body, 'cannot be blank')
  end
end
