#apps/aroflo_connector_app/zones/permissiongroups/__init__.py
from __future__ import annotations

from typing import Any, Dict, List, Optional

from ..base import Zone, ZoneOperation
from . import base as base_section


SECTIONS = [
    base_section,
]


class PermissionGroupsZone(Zone):
    code = "permissiongroups"
    label = "PermissionGroups"
    description = "PermissionGroups zone (READ ONLY)."

    def __init__(self, client: Any):
        super().__init__(client=client)

        ops: List[ZoneOperation] = []
        for section in SECTIONS:
            ops.extend(section.get_operations())

        # backing field para cumplir con @property operations
        self._operations: List[ZoneOperation] = ops

    @property
    def operations(self) -> List[ZoneOperation]:
        return self._operations

    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"[PermissionGroupsZone] Operación no soportada: {operation_code}")
