# frozen_string_literal: true

class UserBadgeSerializer < ApplicationSerializer
  include UserBadgePostAndTopicAttributesMixin

  class UserSerializer < BasicUserSerializer
    include UserPrimaryGroupMixin

    attributes :name, :moderator, :admin
  end

  attributes :id, :granted_at, :created_at, :count, :post_id, :post_number

  has_one :badge
  has_one :user, serializer: UserSerializer, root: :users
  has_one :granted_by, serializer: UserSerializer, root: :users
  has_one :topic, serializer: BasicTopicSerializer

  def include_count?
    object.respond_to? :count
  end

  def include_post_id?
    include_post_attributes?
  end

  alias include_post_number? include_post_id?

  def post_number
    object.post && object.post.post_number
  end

  def topic
    object.post.topic
  end

  def include_topic?
    include_topic_attributes?
  end
end