from pipecat.services.llm_service import FunctionCallParams

from app_resources import AppResources
from use_cases.get_service_availability import GetServiceAvailabilityUseCase


class GetServiceAvailabilityTool:
    def __init__(self, use_case: GetServiceAvailabilityUseCase):
        self._use_case = use_case

    async def __call__(self, params: FunctionCallParams) -> None:
        resources: AppResources = params.app_resources
        args = dict(params.arguments)

        service_names = args.get("serviceNames") or []
        date = args.get("date")

        if not service_names:
            await params.result_callback({"error": "serviceNames is required."})
            return

        if not date:
            await params.result_callback({"error": "date is required (YYYY-MM-DD)."})
            return

        message = await self._use_case.execute(
            salon_id=resources.salon_id,
            timezone=resources.timezone,
            service_names=service_names,
            date=date,
        )
        await params.result_callback(message)
