defmodule MobilizonWeb.Resolvers.Comment do
  @moduledoc """
  Handles the comment-related GraphQL calls.
  """

  alias Mobilizon.Events.Comment
  alias Mobilizon.Users.User
  alias Mobilizon.Actors.Actor

  alias MobilizonWeb.API.Comments

  require Logger

  def create_comment(_parent, %{text: text, actor_id: actor_id}, %{
        context: %{current_user: %User{} = user}
      }) do
    with {:is_owned, %Actor{} = _organizer_actor} <- User.owns_actor(user, actor_id),
         {:ok, _, %Comment{} = comment} <-
           Comments.create_comment(%{actor_id: actor_id, text: text}) do
      {:ok, comment}
    end
  end

  def create_comment(_parent, _args, %{}) do
    {:error, "You are not allowed to create a comment if not connected"}
  end
end