from abc import ABC, abstractmethod

from fastapi_modules.fastapi_leaudit.domian.Dto.evaluationPointDto import (
    EvaluationPointCreateDTO,
    EvaluationPointUpdateDTO,
)
from fastapi_modules.fastapi_leaudit.domian.vo.evaluationPointVo import (
    AttributeTypeListVO,
    EvaluationPointDeleteVO,
    EvaluationPointListVO,
    EvaluationPointVO,
)


class IEvaluationPointService(ABC):
    """评查点服务接口。"""

    @abstractmethod
    async def ListPoints(
        self,
        Name: str | None,
        Code: str | None,
        Risk: str | None,
        IsEnabled: bool | None,
        GroupPid: int | None,
        GroupId: int | None,
        DocumentAttributeType: str | None,
        Area: str | None,
        Page: int,
        PageSize: int,
    ) -> EvaluationPointListVO:
        ...

    @abstractmethod
    async def GetPoint(self, PointId: int) -> EvaluationPointVO:
        ...

    @abstractmethod
    async def CreatePoint(self, Body: EvaluationPointCreateDTO) -> EvaluationPointVO:
        ...

    @abstractmethod
    async def UpdatePoint(self, PointId: int, Body: EvaluationPointUpdateDTO) -> EvaluationPointVO:
        ...

    @abstractmethod
    async def DeletePoint(self, PointId: int) -> EvaluationPointDeleteVO:
        ...

    @abstractmethod
    async def GetAttributeTypes(self) -> AttributeTypeListVO:
        ...
