from fastapi import APIRouter, HTTPException
from fastapi.responses import FileResponse
from app.services.video_service import VideoService
from fastapi import APIRouter, HTTPException
from app.services.quiz_generator import QuizGenerator
from app.models.quiz import QuizRequest
from app.core.config import settings
import logging
import uuid

# Configurer le logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)

# Importons le quiz de test
TEST_QUIZ = {
    "id": "test-quiz",
    "theme": "Intelligence Artificielle",
    "questions": [
        {
            "question": "Qu'est-ce que le Machine Learning ?",
            "options": [
                "Un type de robot",
                "Une branche de l'IA permettant aux machines d'apprendre",
                "Un langage de programmation",
                "Un système d'exploitation"
            ],
            "correct_answer": "Une branche de l'IA permettant aux machines d'apprendre"
        },
        {
            "question": "Qu'est-ce qu'un réseau de neurones ?",
            "options": [
                "Un système inspiré du cerveau humain",
                "Un réseau social",
                "Un câble ethernet",
                "Un type de processeur"
            ],
            "correct_answer": "Un système inspiré du cerveau humain"
        },
        {
            "question": "Quel est le langage le plus utilisé en IA ?",
            "options": [
                "Java",
                "C++",
                "Python",
                "JavaScript"
            ],
            "correct_answer": "Python"
        }
    ]
}


router = APIRouter()
router = APIRouter()
quiz_generator = QuizGenerator(provider=settings.AI_PROVIDER)

@router.post("/quiz")
async def create_quiz(request: QuizRequest):
    try:
        questions = await quiz_generator.generate_quiz(
            theme=request.theme,
            num_questions=request.num_questions
        )
        # Créer un ID unique pour le quiz
        quiz_id = f"quiz_{uuid.uuid4().hex[:8]}"
        
        quiz_data = {
            "id": quiz_id,
            "theme": request.theme,
            "questions": [
                {
                    "question": q.question,
                    "options": q.options,
                    "correct_answer": q.correct_answer
                } for q in questions
            ]
        }
        
        return quiz_data
    except Exception as e:
        logger.error(f"Erreur dans create_quiz: {str(e)}")
        raise HTTPException(status_code=500, detail=str(e))
    

@router.post("/quiz/{quiz_id}/video")
async def generate_video(quiz_id: str, quiz_data: dict):
    try:
        logger.info(f"Début de la génération de vidéo pour le quiz {quiz_id}")
        logger.debug(f"Données du quiz reçues: {quiz_data}")
        
        # Vérifier que les données nécessaires sont présentes
        if not quiz_data.get("questions") or quiz_data.get("styleConfig") is None:
            raise HTTPException(status_code=400, detail="Données du quiz ou style manquants")
        
        # Générer et streamer la vidéo
        return await VideoService.generate_quiz_video(quiz_data)
        
    except Exception as e:
        logger.error(f"Erreur lors de la génération de la vidéo: {str(e)}", exc_info=True)
        raise HTTPException(status_code=500, detail=str(e))