File size: 1,178 Bytes
d29a5a0
551802e
 
 
 
 
 
 
 
 
 
 
 
d29a5a0
551802e
 
 
d29a5a0
551802e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
from typing import Any, Optional

from app.modules.cases.service import CaseService
from core.plugin_system.facades import BaseFacade
from core.plugin_system.permissions import PluginPermission


class CasePluginFacade(BaseFacade):
    """
    Facade for Case operations exposed to plugins.
    """

    def __init__(
        self, service: CaseService, plugin_id: str, permissions: list[str] = None
    ):
        super().__init__(service, plugin_id, permissions)

    def get_case(self, case_id: str) -> Optional[dict[str, Any]]:
        """
        Get safe case details.
        Requires: READ_CASE
        """
        if not self._check_permission(PluginPermission.READ_CASE):
            return None

        try:
            # Assuming get_case exists on CaseService (we will verify)
            case = self._service.get_case(case_id)
            if not case:
                return None

            return {
                "id": case.id,
                "title": case.title,
                "status": case.status,
                "priority": case.priority,
                "created_at": case.created_at,
            }
        except Exception:
            return None