import { NextResponse } from "next/server"; import { auth } from "@/auth"; import { db } from "@/lib/db"; export async function GET( _req: Request, { params }: { params: Promise<{ taskId: string }> } ) { const session = await auth(); if (!session?.user) return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); const { taskId } = await params; const task = await db.task.findUnique({ where: { id: taskId }, include: { shot: { select: { id: true, shotCode: true } }, asset: { select: { id: true, assetCode: true, name: true } }, assignedArtist: { select: { id: true, name: true, email: true, image: true } }, createdBy: { select: { id: true, name: true, email: true } }, project: { select: { id: true, name: true, code: true } }, _count: { select: { versions: true } }, }, }); if (!task) return NextResponse.json({ error: "Not found" }, { status: 404 }); return NextResponse.json(task); } export async function PATCH( req: Request, { params }: { params: Promise<{ taskId: string }> } ) { const session = await auth(); if (!session?.user) return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); if (!["ADMIN", "PRODUCER", "SUPERVISOR"].includes(session.user.role)) { return NextResponse.json({ error: "Forbidden" }, { status: 403 }); } const { taskId } = await params; const body = await req.json(); const task = await db.task.update({ where: { id: taskId }, data: body, }); return NextResponse.json(task); } export async function DELETE( _req: Request, { params }: { params: Promise<{ taskId: string }> } ) { const session = await auth(); if (!session?.user) return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); if (!["ADMIN", "PRODUCER", "SUPERVISOR"].includes(session.user.role)) { return NextResponse.json({ error: "Forbidden" }, { status: 403 }); } const { taskId } = await params; await db.task.delete({ where: { id: taskId } }); return NextResponse.json({ success: true }); }