defmodule SimpleshopThemeWeb.WebhookController do
  use SimpleshopThemeWeb, :controller

  alias SimpleshopTheme.Webhooks

  require Logger

  @doc """
  Receives Printify webhook events.

  Events:
  - product:publish:started - Product publish initiated
  - product:updated - Product was modified
  - product:deleted - Product was deleted
  - shop:disconnected - Shop was disconnected
  """
  def printify(conn, params) do
    event_type = params["type"] || params["event"]
    resource = params["resource"] || params["data"] || %{}

    Logger.info("Received Printify webhook: #{event_type}")

    case Webhooks.handle_printify_event(event_type, resource) do
      :ok ->
        json(conn, %{status: "ok"})

      {:ok, _} ->
        json(conn, %{status: "ok"})

      {:error, reason} ->
        Logger.warning("Webhook handling failed: #{inspect(reason)}")
        # Still return 200 to prevent Printify retrying
        json(conn, %{status: "ok"})
    end
  end
end
