| |
| |
| |
|
|
| 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 }); |
| } |
|
|
| |
| 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 |
| }); |
| } |
|
|
| |
| 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 |
| }); |
| } |
|
|
| |
| if (action === 'update_status') { |
| if (!doubtId) { |
| return NextResponse.json({ |
| success: false, |
| error: 'Missing doubtId' |
| }, { status: 400 }); |
| } |
|
|
| |
| 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 }); |
| } |
| } |
|
|