# apps/aroflo_connector_app/cli/users_cli.py

from __future__ import annotations

import json

import click

from apps.aroflo_connector_app.features.users.service import (
    list_users,
    get_user_by_id,
)


@click.group()
def users() -> None:
    """Operaciones relacionadas con usuarios AroFlo."""
    pass


@users.command("list")
@click.option("--include-archived", is_flag=True, help="Incluir usuarios archivados.")
@click.option("--page", default=1, show_default=True)
def users_list(include_archived: bool, page: int) -> None:
    """Lista usuarios."""
    items = list_users(include_archived=include_archived, page=page)

    if not items:
        click.echo("No se encontraron usuarios.")
        return

    click.echo(f"{'ID':<15} {'Nombre':<40} Email")
    click.echo("-" * 90)
    for u in items:
        uid = u.get("userid", "")
        name = f"{u.get('givennames', '')} {u.get('surname', '')}".strip()
        email = u.get("email", "")
        click.echo(f"{uid:<15} {name:<40} {email}")


@users.command("show")
@click.argument("userid")
def users_show(userid: str) -> None:
    """Muestra el detalle de un usuario por ID."""
    user = get_user_by_id(userid)
    if not user:
        click.echo(f"Usuario {userid} no encontrado.")
        return

    click.echo(json.dumps(user, indent=2, ensure_ascii=False))
