2019-05-02 17:17:27 -05:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2013-10-23 13:40:39 -05:00
|
|
|
class CategoryDetailedSerializer < BasicCategorySerializer
|
2013-12-13 14:15:51 -06:00
|
|
|
attributes :topic_count,
|
|
|
|
:post_count,
|
|
|
|
:topics_day,
|
2013-04-05 15:09:27 -05:00
|
|
|
:topics_week,
|
|
|
|
:topics_month,
|
|
|
|
:topics_year,
|
2016-08-29 03:25:46 -05:00
|
|
|
:topics_all_time,
|
2013-10-31 17:02:24 -05:00
|
|
|
:is_uncategorized,
|
|
|
|
:subcategory_ids
|
2013-02-05 13:16:51 -06:00
|
|
|
|
2016-08-18 18:47:00 -05:00
|
|
|
has_many :displayable_topics, serializer: ListableTopicSerializer, embed: :objects, key: :topics
|
|
|
|
|
2023-01-09 06:20:10 -06:00
|
|
|
has_many :subcategory_list,
|
|
|
|
serializer: CategoryDetailedSerializer,
|
|
|
|
embed: :objects,
|
|
|
|
key: :subcategory_list
|
2021-10-05 13:12:31 -05:00
|
|
|
|
2016-08-18 18:47:00 -05:00
|
|
|
def include_displayable_topics?
|
|
|
|
displayable_topics.present?
|
|
|
|
end
|
|
|
|
|
2021-10-05 13:12:31 -05:00
|
|
|
def include_subcategory_list?
|
|
|
|
subcategory_list.present?
|
|
|
|
end
|
|
|
|
|
2014-02-05 17:39:26 -06:00
|
|
|
def is_uncategorized
|
|
|
|
object.id == SiteSetting.uncategorized_category_id
|
|
|
|
end
|
2013-12-13 14:15:51 -06:00
|
|
|
|
2014-02-05 17:39:26 -06:00
|
|
|
def include_is_uncategorized?
|
|
|
|
is_uncategorized
|
2013-02-05 13:16:51 -06:00
|
|
|
end
|
|
|
|
|
2014-02-05 17:39:26 -06:00
|
|
|
def topics_day
|
|
|
|
count_with_subcategories(:topics_day)
|
2013-12-13 14:15:51 -06:00
|
|
|
end
|
|
|
|
|
2014-02-05 17:39:26 -06:00
|
|
|
def topics_week
|
|
|
|
count_with_subcategories(:topics_week)
|
2013-12-13 14:15:51 -06:00
|
|
|
end
|
|
|
|
|
2014-02-05 17:39:26 -06:00
|
|
|
def topics_month
|
|
|
|
count_with_subcategories(:topics_month)
|
2013-05-27 13:15:20 -05:00
|
|
|
end
|
|
|
|
|
2014-02-05 17:39:26 -06:00
|
|
|
def topics_year
|
|
|
|
count_with_subcategories(:topics_year)
|
2013-05-27 13:15:20 -05:00
|
|
|
end
|
|
|
|
|
2016-08-29 03:25:46 -05:00
|
|
|
def topics_all_time
|
|
|
|
count_with_subcategories(:topic_count)
|
|
|
|
end
|
|
|
|
|
2014-02-05 17:39:26 -06:00
|
|
|
def count_with_subcategories(method)
|
2019-05-06 20:27:05 -05:00
|
|
|
count = object.public_send(method) || 0
|
|
|
|
|
2023-01-09 06:20:10 -06:00
|
|
|
object.subcategories.each { |category| count += (category.public_send(method) || 0) }
|
2019-05-06 20:27:05 -05:00
|
|
|
|
2014-11-17 01:02:17 -06:00
|
|
|
count
|
2013-10-31 17:02:24 -05:00
|
|
|
end
|
2013-02-05 13:16:51 -06:00
|
|
|
end
|