# apps/aroflo_connector_app/zones/users/__init__.py
from __future__ import annotations
from typing import Any, Dict, List, Optional
from ..base import Zone, ZoneOperation
from . import base as base_section
from . import join_customfields

SECTIONS = [
    base_section,
    join_customfields,
]


class UsersZone(Zone):
    code = "users"
    label = "Users"
    description = "Operaciones relacionadas con usuarios (incluye JOINs)."

    @property
    def operations(self) -> List[ZoneOperation]:
        ops: List[ZoneOperation] = []
        for section in SECTIONS:
            ops.extend(section.get_operations())
        return ops

    def execute(
        self,
        operation_code: str,
        params: Optional[Dict[str, Any]] = None,
    ) -> Any:
        params = params or {}

        for section in SECTIONS:
            if section.supports(operation_code):
                return section.execute(operation_code, self.client, params)

        raise ValueError(f"Operación '{operation_code}' no soportada en UsersZone")

