import { NextResponse } from 'next/server'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/lib/auth'; import { prisma } from '@/lib/prisma'; export async function GET( request: Request, { params }: { params: { id: string } } ) { try { const session = await getServerSession(authOptions); if (!session) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); } const equipment = await prisma.equipment.findUnique({ where: { id: params.id }, include: { location: true, project: true, bookingEquipment: { include: { booking: true, }, }, }, }); if (!equipment) { return NextResponse.json({ error: 'Equipment not found' }, { status: 404 }); } return NextResponse.json({ equipment }); } catch (error) { console.error('Error fetching equipment:', error); return NextResponse.json({ error: 'Internal server error' }, { status: 500 }); } } export async function PUT( request: Request, { params }: { params: { id: string } } ) { try { const session = await getServerSession(authOptions); if (!session) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); } const data = await request.json(); const equipment = await prisma.equipment.update({ where: { id: params.id }, data: { name: data.name, type: data.type, brand: data.brand, model: data.model, serialNumber: data.serialNumber, quantity: data.quantity, status: data.status, locationId: data.locationId, projectId: data.projectId, notes: data.notes, purchaseDate: data.purchaseDate ? new Date(data.purchaseDate) : null, purchasePrice: data.purchasePrice, minStockLevel: data.minStockLevel, currentStock: data.currentStock, }, include: { location: true, project: true, }, }); return NextResponse.json({ equipment }); } catch (error) { console.error('Error updating equipment:', error); return NextResponse.json({ error: 'Internal server error' }, { status: 500 }); } } export async function DELETE( request: Request, { params }: { params: { id: string } } ) { try { const session = await getServerSession(authOptions); if (!session) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); } await prisma.equipment.delete({ where: { id: params.id }, }); return NextResponse.json({ success: true }); } catch (error) { console.error('Error deleting equipment:', error); return NextResponse.json({ error: 'Internal server error' }, { status: 500 }); } }