import { NextRequest, NextResponse } from 'next/server'; import { createDomainManager, validateDomainAccess } from '@/lib/domainManagement'; export async function GET( request: NextRequest, { params }: { params: Promise<{ id: string }> } ) { try { const { id } = await params; const universityId = request.headers.get('x-university-id'); if (!universityId) { return NextResponse.json( { error: 'University context required' }, { status: 400 } ); } const hasAccess = await validateDomainAccess(request, id); if (!hasAccess) { return NextResponse.json( { error: 'Access denied' }, { status: 403 } ); } const domainManager = createDomainManager(universityId); const domain = await domainManager.getDomain(id); if (!domain) { return NextResponse.json( { error: 'Domain not found' }, { status: 404 } ); } return NextResponse.json({ success: true, data: domain, }); } catch (error) { console.error('Error fetching domain:', error); return NextResponse.json( { error: 'Failed to fetch domain' }, { status: 500 } ); } } export async function PATCH( request: NextRequest, { params }: { params: Promise<{ id: string }> } ) { try { const { id } = await params; const universityId = request.headers.get('x-university-id'); if (!universityId) { return NextResponse.json( { error: 'University context required' }, { status: 400 } ); } const hasAccess = await validateDomainAccess(request, id); if (!hasAccess) { return NextResponse.json( { error: 'Access denied' }, { status: 403 } ); } const body = await request.json(); const domainManager = createDomainManager(universityId); const updatedDomain = await domainManager.updateDomain(id, body); return NextResponse.json({ success: true, data: updatedDomain, message: 'Domain updated successfully', }); } catch (error) { console.error('Error updating domain:', error); return NextResponse.json( { error: error instanceof Error ? error.message : 'Failed to update domain' }, { status: 500 } ); } } export async function DELETE( request: NextRequest, { params }: { params: Promise<{ id: string }> } ) { try { const { id } = await params; const universityId = request.headers.get('x-university-id'); if (!universityId) { return NextResponse.json( { error: 'University context required' }, { status: 400 } ); } const hasAccess = await validateDomainAccess(request, id); if (!hasAccess) { return NextResponse.json( { error: 'Access denied' }, { status: 403 } ); } const domainManager = createDomainManager(universityId); await domainManager.deleteDomain(id); return NextResponse.json({ success: true, message: 'Domain deleted successfully', }); } catch (error) { console.error('Error deleting domain:', error); return NextResponse.json( { error: error instanceof Error ? error.message : 'Failed to delete domain' }, { status: 500 } ); } }