# frozen_string_literal: true

require_relative "post_item_excerpt"

class UserActionSerializer < ApplicationSerializer
  include PostItemExcerpt

  attributes :action_type,
             :created_at,
             :avatar_template,
             :acting_avatar_template,
             :slug,
             :topic_id,
             :target_user_id,
             :target_name,
             :target_username,
             :post_number,
             :post_id,
             :reply_to_post_number,
             :username,
             :name,
             :user_id,
             :acting_username,
             :acting_name,
             :acting_user_id,
             :title,
             :deleted,
             :hidden,
             :post_type,
             :action_code,
             :action_code_who,
             :action_code_path,
             :edit_reason,
             :category_id,
             :closed,
             :archived

  def avatar_template
    User.avatar_template(object.username, object.uploaded_avatar_id)
  end

  def acting_avatar_template
    User.avatar_template(object.acting_username, object.acting_uploaded_avatar_id)
  end

  def include_acting_avatar_template?
    object.acting_username.present?
  end

  def include_name?
    SiteSetting.enable_names?
  end

  def include_target_name?
    include_name?
  end

  def include_acting_name?
    include_name?
  end

  def slug
    Slug.for(object.title)
  end

  def include_slug?
    object.title.present?
  end

  def include_reply_to_post_number?
    object.action_type == UserAction::REPLY
  end

  def include_edit_reason?
    object.action_type == UserAction::EDIT
  end

  def closed
    object.topic_closed
  end

  def archived
    object.topic_archived
  end

  def include_action_code_who?
    action_code_who.present?
  end

  def action_code_who
    object.action_code_who
  end

  def include_action_code_path?
    action_code_path.present?
  end

  def action_code_path
    object.action_code_path
  end
end