78 lines
2.3 KiB
TypeScript
78 lines
2.3 KiB
TypeScript
import { NextRequest, NextResponse } from 'next/server'
|
|
import { prisma } from '@/lib/db'
|
|
import { getSession } from '@/lib/auth'
|
|
|
|
export async function GET(req: NextRequest) {
|
|
try {
|
|
const user = await getSession()
|
|
if (!user) return NextResponse.json({ error: 'Nicht autorisiert' }, { status: 401 })
|
|
|
|
if (!user.tenantId) {
|
|
return NextResponse.json({ tenant: null })
|
|
}
|
|
|
|
const tenant = await (prisma as any).tenant.findUnique({
|
|
where: { id: user.tenantId },
|
|
select: {
|
|
id: true,
|
|
name: true,
|
|
slug: true,
|
|
description: true,
|
|
contactEmail: true,
|
|
contactPhone: true,
|
|
address: true,
|
|
logoUrl: true,
|
|
plan: true,
|
|
subscriptionStatus: true,
|
|
privacyAccepted: true,
|
|
privacyAcceptedAt: true,
|
|
adminAccessAccepted: true,
|
|
createdAt: true,
|
|
_count: {
|
|
select: {
|
|
memberships: true,
|
|
projects: true,
|
|
},
|
|
},
|
|
},
|
|
})
|
|
|
|
return NextResponse.json({ tenant })
|
|
} catch (error: any) {
|
|
console.error('[Tenant Info] Error:', error?.message)
|
|
return NextResponse.json({ error: 'Serverfehler' }, { status: 500 })
|
|
}
|
|
}
|
|
|
|
export async function PATCH(req: NextRequest) {
|
|
try {
|
|
const user = await getSession()
|
|
if (!user) return NextResponse.json({ error: 'Nicht autorisiert' }, { status: 401 })
|
|
if (user.role !== 'TENANT_ADMIN') return NextResponse.json({ error: 'Nur Admin' }, { status: 403 })
|
|
if (!user.tenantId) return NextResponse.json({ error: 'Kein Mandant' }, { status: 400 })
|
|
|
|
const body = await req.json()
|
|
const { name, description, contactEmail, contactPhone, address } = body
|
|
|
|
if (!name || !name.trim()) {
|
|
return NextResponse.json({ error: 'Name darf nicht leer sein' }, { status: 400 })
|
|
}
|
|
|
|
const updated = await (prisma as any).tenant.update({
|
|
where: { id: user.tenantId },
|
|
data: {
|
|
name: name.trim(),
|
|
description: description || null,
|
|
contactEmail: contactEmail || null,
|
|
contactPhone: contactPhone || null,
|
|
address: address || null,
|
|
},
|
|
})
|
|
|
|
return NextResponse.json({ tenant: updated })
|
|
} catch (error: any) {
|
|
console.error('[Tenant Info PATCH] Error:', error?.message)
|
|
return NextResponse.json({ error: 'Serverfehler' }, { status: 500 })
|
|
}
|
|
}
|