import { NextResponse } from 'next/server'
import { prisma } from '@/lib/prisma'
import { safeHandler, requireAuth } from '@/lib/auth'

export const GET = safeHandler(async (req: Request) => {
  await requireAuth(['ADMIN'])

  const settings = await prisma.companySettings.upsert({
    where: { id: 'default' },
    create: { id: 'default' },
    update: {},
  })

  return NextResponse.json(settings)
})

export const PUT = safeHandler(async (req: Request) => {
  await requireAuth(['ADMIN'])
  const data = await req.json()

  const settings = await prisma.companySettings.update({
    where: { id: 'default' },
    data: {
      companyName: data.companyName,
      defaultCurrency: data.defaultCurrency,
      timezone: data.timezone,
      fiscalYearStart: data.fiscalYearStart,
      taxNumber: data.taxNumber || null,
      address: data.address || null,
      phone: data.phone || null,
      email: data.email || null,
      gstNumber: data.gstNumber || null,
      panNumber: data.panNumber || null,
      logoUrl: data.logoUrl || null,
      websiteUrl: data.websiteUrl || null,
      bankName: data.bankName || null,
      bankAccountNo: data.bankAccountNo || null,
      bankIfsc: data.bankIfsc || null,
      termsConditions: data.termsConditions || null,
      leadDistributionMode: data.leadDistributionMode || 'ROUND_ROBIN',
    },
  })

  return NextResponse.json(settings)
})
