// ═══════════════════════════════════════════════════════════════════════════ // DOUBT API - Submit doubts, Solve doubts // ═══════════════════════════════════════════════════════════════════════════ import { NextRequest, NextResponse } from 'next/server'; import { sessionManager } from '@/lib/session-manager'; export const runtime = 'nodejs'; export const dynamic = 'force-dynamic'; export async function POST(request: NextRequest) { try { const body = await request.json(); const { action, sessionId, studentId, studentName, question, image, slideNumber, doubtId, annotatedImage, teacherResponse } = body; if (!sessionId) { return NextResponse.json({ success: false, error: 'Missing sessionId' }, { status: 400 }); } // CREATE DOUBT if (action === 'create') { if (!studentId || !studentName || !question) { return NextResponse.json({ success: false, error: 'Missing required fields for doubt creation' }, { status: 400 }); } const doubt = await sessionManager.createDoubt( sessionId, studentId, studentName, question, image, slideNumber ); return NextResponse.json({ success: true, data: doubt }); } // SOLVE DOUBT if (action === 'solve') { if (!doubtId) { return NextResponse.json({ success: false, error: 'Missing doubtId' }, { status: 400 }); } const doubt = await sessionManager.solveDoubt( sessionId, doubtId, annotatedImage, teacherResponse ); if (!doubt) { return NextResponse.json({ success: false, error: 'Doubt not found' }, { status: 404 }); } return NextResponse.json({ success: true, data: doubt }); } // UPDATE STATUS if (action === 'update_status') { if (!doubtId) { return NextResponse.json({ success: false, error: 'Missing doubtId' }, { status: 400 }); } // Broadcast update await sessionManager.broadcast(sessionId, 'doubt_update', { doubtId, status: body.status }); return NextResponse.json({ success: true }); } return NextResponse.json({ success: false, error: 'Invalid action' }, { status: 400 }); } catch (error) { console.error('Doubt API error:', error); return NextResponse.json({ success: false, error: 'Internal server error' }, { status: 500 }); } } export async function GET(request: NextRequest) { try { const { searchParams } = new URL(request.url); const sessionId = searchParams.get('sessionId'); if (!sessionId) { return NextResponse.json({ success: false, error: 'Missing sessionId' }, { status: 400 }); } const doubts = sessionManager.getDoubts(sessionId); return NextResponse.json({ success: true, data: doubts }); } catch (error) { console.error('Doubt API error:', error); return NextResponse.json({ success: false, error: 'Internal server error' }, { status: 500 }); } }