import { NextRequest, NextResponse } from 'next/server' import { getServerSession } from 'next-auth' import { authOptions } from '@/lib/auth' import { prisma } from '@/lib/prisma' import { getBalance } from '@/lib/semaphore' export async function GET(req: NextRequest, { params }: { params: { id: string } }) { const session = await getServerSession(authOptions) if (!session) return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) const client = await prisma.client.findUnique({ where: { id: params.id }, include: { _count: { select: { smsQueue: true, smsLogs: true } } }, }) if (!client) return NextResponse.json({ error: 'Not found' }, { status: 404 }) let balance: number | null = null if (client.semaphoreKey) { balance = await getBalance(client.semaphoreKey) } return NextResponse.json({ ...client, balance }) } export async function PATCH(req: NextRequest, { params }: { params: { id: string } }) { const session = await getServerSession(authOptions) if (!session) return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) const body = await req.json() const { name, semaphoreKey, senderName, isActive } = body const client = await prisma.client.update({ where: { id: params.id }, data: { ...(name !== undefined && { name }), ...(semaphoreKey !== undefined && { semaphoreKey }), ...(senderName !== undefined && { senderName }), ...(isActive !== undefined && { isActive }), }, }) return NextResponse.json(client) } export async function DELETE(req: NextRequest, { params }: { params: { id: string } }) { const session = await getServerSession(authOptions) if (!session) return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) await prisma.client.delete({ where: { id: params.id } }) return NextResponse.json({ success: true }) }