from fastapi import APIRouter, Depends, status

from app.deps import verify_internal_token
from app.schemas.case_studies import (
    CaseStudyGenerateRequest,
    CaseStudyGenerateResponse,
    CaseStudyGradeRequest,
    CaseStudyGradeResponse,
)
from app.services.case_studies import CaseStudiesService

router = APIRouter(prefix="/case-studies")
_service = CaseStudiesService()


@router.post(
    "/generate",
    response_model=CaseStudyGenerateResponse,
    status_code=status.HTTP_200_OK,
    summary="Case Study Simulator (Generate)",
    dependencies=[Depends(verify_internal_token)],
)
async def generate_case_study(
    payload: CaseStudyGenerateRequest,
) -> CaseStudyGenerateResponse:
    return await _service.generate(payload)


@router.post(
    "/grade",
    response_model=CaseStudyGradeResponse,
    status_code=status.HTTP_200_OK,
    summary="Case Study Grading",
    dependencies=[Depends(verify_internal_token)],
)
async def grade_case_study(payload: CaseStudyGradeRequest) -> CaseStudyGradeResponse:
    return await _service.grade(payload)
