# apps/aroflo_connector_app/zones/users/base.py
from __future__ import annotations
from typing import Any, Dict, List
from ..base import ZoneOperation


def get_operations() -> List[ZoneOperation]:
    return [
        ZoneOperation(
            code="get_users",
            label="Get Users",
            description="Listado de usuarios con filtros opcionales.",
        ),
        ZoneOperation(
            code="get_users_with_position",
            label="Get Users with set position",
            description="Usuarios filtrados por posición / rol.",
        ),
        ZoneOperation(
            code="get_user",
            label="Get a specific User",
            description="Obtiene un usuario por ID.",
        ),
        ZoneOperation(
            code="create_user",
            label="Create User",
            description="Crea un nuevo usuario en AroFlo.",
            http_method="POST",
        ),
        ZoneOperation(
            code="update_mobile",
            label="Update Users mobile number",
            description="Actualiza el móvil del usuario.",
            http_method="POST",
        ),
    ]


def supports(operation_code: str) -> bool:
    return any(op.code == operation_code for op in get_operations())


def execute(operation_code: str, client: Any, params: Dict[str, Any]) -> Any:
    """
    Aquí luego afinamos los mapeos exactos de Users "base".
    Por ahora puedes dejarlo con pass / NotImplemented si quieres centrarte
    solo en JOIN customfields.
    """
    raise NotImplementedError("[Users.base] Aún no implementado")
