defmodule PhilomenaWeb.CommentJson do
  alias PhilomenaWeb.UserAttributionView

  def as_json(%{destroyed_content: true}) do
    nil
  end

  def as_json(%{image: %{hidden_from_users: true}} = comment) do
    %{
      id: comment.id,
      image_id: comment.image_id,
      user_id: nil,
      author: nil,
      body: nil
    }
  end

  def as_json(%{hidden_from_users: true} = comment) do
    %{
      id: comment.id,
      image_id: comment.image_id,
      user_id: if(not comment.anonymous, do: comment.user_id),
      author:
        if(comment.anonymous or is_nil(comment.user),
          do: UserAttributionView.anonymous_name(comment),
          else: comment.user.name
        ),
      body: nil
    }
  end

  def as_json(comment) do
    %{
      id: comment.id,
      image_id: comment.image_id,
      user_id: if(not comment.anonymous, do: comment.user_id),
      author:
        if(comment.anonymous or is_nil(comment.user),
          do: UserAttributionView.anonymous_name(comment),
          else: comment.user.name
        ),
      body: comment.body
    }
  end
end