class Admission::Registration < ApplicationRecord
  belongs_to :school

  delegate :admission_registration_fields, to: :school

  after_create :send_email

  validates :first_name, :last_name, presence: true, length: { maximum: 24 }
  validates :email, presence: true, length: { maximum: 128 },
    format: { with: URI::MailTo::EMAIL_REGEXP }

  def self.decode(token)
    JWT.decode(token, Rails.application.secrets.secret_key_base, false).first
  end

  def expired?
    created_at < 48.hours.ago
  end

  private
    def send_email
      Mailgun::TemplateService.call(
        'Sycamore School <noreply@sycamoreschool.com>',
        email,
        "Complete Registration for #{school.name}",
        'admissions-new-account-verification',
        variables: {
          first_name: first_name,
          last_name: last_name,
          email_address: email,
          token_url:
            "#{Rails.application.secrets.vue_base_url}/family/admissions/registration/#{token}",
          school_name: school.name,
          school_phone: school.phone
        },
        tags: [school.id.to_s, 'admissions', 'account-verification']
      )
    end

    def token
      JWT.encode(id, Rails.application.secrets.secret_key_base)
    end
end
