import { NextResponse } from 'next/server'; import { prisma } from '@/lib/prisma'; export async function POST(req: Request) { try { const body = await req.json(); // 🔹 BULK: { names: string[], canEditDevices?: boolean } if (Array.isArray(body?.names)) { const rawNames = body.names as unknown[]; const trimmedNames = rawNames .filter((n): n is string => typeof n === 'string') .map((n) => n.trim()) .filter((n) => n.length > 0); const uniqueNames = Array.from(new Set(trimmedNames)); const defaultCanEditDevices = Boolean(body.canEditDevices ?? false); const groups = []; for (const name of uniqueNames) { const trimmedName = name.trim(); const isTEG = trimmedName.toUpperCase() === 'TEG'; // 👇 TEG immer true, sonst Default const canEdit = isTEG ? true : defaultCanEditDevices; const group = await prisma.userGroup.upsert({ where: { name: trimmedName }, update: { canEditDevices: canEdit, }, create: { name: trimmedName, canEditDevices: canEdit, }, }); groups.push({ id: group.id, name: group.name, canEditDevices: group.canEditDevices, }); } return NextResponse.json({ groups }, { status: 200 }); } // 🔹 SINGLE: { name: string, canEditDevices?: boolean } const { name, canEditDevices } = body; if (!name || typeof name !== 'string') { return NextResponse.json( { error: 'Gruppenname ist erforderlich.' }, { status: 400 }, ); } const trimmed = name.trim(); if (!trimmed) { return NextResponse.json( { error: 'Gruppenname darf nicht leer sein.' }, { status: 400 }, ); } const isTEG = trimmed.toUpperCase() === 'TEG'; // 👇 TEG immer true, sonst Flag aus Request (oder false) const flag = isTEG ? true : Boolean(canEditDevices ?? false); const group = await prisma.userGroup.upsert({ where: { name: trimmed }, update: { canEditDevices: flag, }, create: { name: trimmed, canEditDevices: flag, }, }); return NextResponse.json( { id: group.id, name: group.name, canEditDevices: group.canEditDevices, }, { status: 200 }, ); } catch (err) { console.error('[POST /api/user-groups]', err); return NextResponse.json( { error: 'Interner Serverfehler beim Anlegen der User-Gruppe.' }, { status: 500 }, ); } }