defmodule PhilomenaWeb.Admin.ArtistLinkView do
  use PhilomenaWeb, :view

  alias Philomena.Tags.Tag

  defp display_order(tags),
    do: Tag.display_order(tags)

  def link_state_class(%{aasm_state: state}) when state in ["verified", "link_verified"],
    do: "success"

  def link_state_class(%{aasm_state: state}) when state in ["unverified", "rejected"],
    do: "danger"

  def link_state_class(%{aasm_state: "contacted"}), do: "warning"
  def link_state_class(_link), do: nil

  def link_state_name(%{aasm_state: state}) do
    state
    |> String.replace("_", " ")
    |> String.capitalize()
  end

  def scope(conn) do
    []
    |> scope(conn, "lq", :lq)
    |> scope(conn, "all", :all)
  end

  defp scope(list, conn, key, key_atom) do
    case conn.params[key] do
      nil -> list
      "" -> list
      val -> [{key_atom, val} | list]
    end
  end

  def contacted?(%{aasm_state: state}), do: state == "contacted"
  def verified?(%{aasm_state: state}), do: state == "verified"
  def link_verified?(%{aasm_state: state}), do: state == "link_verified"
  def unverified?(%{aasm_state: state}), do: state == "unverified"
  def rejected?(%{aasm_state: state}), do: state == "rejected"

  def public_text(%{public: true}), do: "Yes"
  def public_text(_artist_link), do: "No"

  def public?(%{public: public}), do: !!public
end
