import datetime from typing import Optional from fastapi import APIRouter, BackgroundTasks, Depends from services.callTranscripts import CallTranscriptServices from middleware.auth_dependency import auth_required from utils.constants import DEFAULT_LIMIT, DEFAULT_ORDER, DEFAULT_ORDER_BY, DEFAULT_PAGE from schemas.ApiResponse import ApiResponse from schemas.CreateSchemas import CallTranscriptsCreate router = APIRouter() @router.get("/", dependencies=[Depends(auth_required)]) async def get_call_transcripts(limit: int = DEFAULT_LIMIT, page: int = DEFAULT_PAGE, search: str = "", orderBy: str = DEFAULT_ORDER, order: str = DEFAULT_ORDER_BY, startDate: Optional[datetime.datetime] = None, endDate: Optional[datetime.datetime] = None): if page == 0: page = 1 offset = (page - 1) * limit response = await CallTranscriptServices().get_call_transcripts(limit, offset, search, orderBy, order, startDate, endDate) return ApiResponse(data=response, message="Call transcripts retrieved successfully") @router.get("/{key_id}", dependencies=[Depends(auth_required)]) async def download_call_transcript(key_id: str): service = CallTranscriptServices() response = await service.download_call_transcript(key_id) return ApiResponse(data=response, message="Call transcript downloaded successfully") @router.post("/") async def create_call_transcript(data: CallTranscriptsCreate): service = CallTranscriptServices() await service.create_call_transcript(data) return ApiResponse(data="OK", message="Call transcript created successfully") @router.post("/bulk-download", dependencies=[Depends(auth_required)]) async def bulk_download_call_transcripts( key_ids: list[int], background_tasks: BackgroundTasks ): service = CallTranscriptServices() response = await service.bulk_download_call_transcripts(key_ids, background_tasks) return response