defmodule SimpleshopTheme.Setup do
  @moduledoc """
  Aggregates setup status checks for the admin setup flow.
  """

  alias SimpleshopTheme.{Accounts, Products, Settings}

  @doc """
  Returns a map describing the current setup status.

  Used by the admin setup checklist and ThemeHook gate to determine
  what's been completed and whether the shop can go live.
  """
  def setup_status do
    conn = Products.get_provider_connection_by_type("printify")
    product_count = Products.count_products_for_connection(conn && conn.id)

    printify_connected = conn != nil and conn.api_key_encrypted != nil
    products_synced = product_count > 0
    stripe_connected = Settings.has_secret?("stripe_api_key")
    site_live = Settings.site_live?()

    %{
      admin_created: Accounts.has_admin?(),
      printify_connected: printify_connected,
      products_synced: products_synced,
      product_count: product_count,
      stripe_connected: stripe_connected,
      site_live: site_live,
      can_go_live: printify_connected and products_synced and stripe_connected
    }
  end
end
