defmodule PhilomenaWeb.AvatarController do
  use PhilomenaWeb, :controller

  alias Philomena.Users

  plug PhilomenaWeb.FilterBannedUsersPlug

  plug PhilomenaWeb.ScraperPlug,
       [params_name: "user", params_key: "avatar"] when action in [:update]

  def edit(conn, _params) do
    changeset = Users.change_user(conn.assigns.current_user)
    render(conn, "edit.html", title: "Editing Avatar", changeset: changeset)
  end

  def update(conn, %{"user" => user_params}) do
    case Users.update_avatar(conn.assigns.current_user, user_params) do
      {:ok, _user} ->
        conn
        |> put_flash(:info, "Successfully updated avatar.")
        |> redirect(to: Routes.avatar_path(conn, :edit))

      {:error, :user, changeset, _changes} ->
        render(conn, "edit.html", changeset: changeset)
    end
  end

  def delete(conn, _params) do
    {:ok, _user} = Users.remove_avatar(conn.assigns.current_user)

    conn
    |> put_flash(:info, "Successfully removed avatar.")
    |> redirect(to: Routes.avatar_path(conn, :edit))
  end
end