class User < ApplicationRecord
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable,
         :confirmable
  
  has_many :posts, dependent: :destroy
  has_many :likes, dependent: :destroy
  has_many :comments, dependent: :destroy

  enum role: [:user, :moderator, :admin]
  after_initialize :set_default_role, if: :new_record?
  after_initialize :skip_confirmation, if: :new_record?

  validates :full_name, presence: true, length: { in: 2..32 }

  def set_default_role
    self.role ||= :user
  end

  def skip_confirmation
    return if Rails.application.email_confirmation?
    skip_confirmation!
    skip_confirmation_notification!
    skip_reconfirmation!
  end

  def gravatar_url
    gravatar_id = Digest::MD5::hexdigest(email.downcase)
    "https://secure.gravatar.com/avatar/#{gravatar_id}"
  end

  def power_user?
    role == 'admin' || role == 'moderator'
  end

  def admin?
    role == 'admin'
  end
end
