# apps/aroflo_connector_app/zones/users/cli.py
from __future__ import annotations

import json
import logging

import click

from ...client import AroFloClient
from ...config import AroFloConfigError
from ..registry import get_zone

log = logging.getLogger("aroflo_cli.users")


def make_client() -> AroFloClient:
    """
    Helper local para crear el cliente AroFlo, solo para comandos de Users.
    """
    return AroFloClient()


@click.group()
def users():
    """Operaciones sobre la zona Users (nueva API por zonas)."""
    pass


@users.command("customfields")
@click.option("--page", default=1, type=int, show_default=True)
@click.option(
    "--where",
    default="and|archived|=|false",
    show_default=True,
    help="WHERE clause para la API de AroFlo.",
)
@click.option("--raw", is_flag=True, help="Mostrar respuesta cruda.")
def users_customfields(page: int, where: str, raw: bool):
    """
    GET Users + JOIN customfields (zona Users con JOIN customfields).
    """
    try:
        client = make_client()
    except AroFloConfigError as exc:
        click.echo("❌ Error de configuración:")
        click.echo(str(exc))
        raise SystemExit(1)

    zone = get_zone(client, "users")

    result = zone.execute(
        "get_users_with_customfields",
        params={"page": page, "where": where},
    )

    # Más adelante podemos hacer un resumen bonito; por ahora JSON completo
    click.echo(json.dumps(result, indent=2))
