import { PrismaClient } from '@prisma/client';
import { json } from '@sveltejs/kit';
import type { RequestHandler } from './$types';
import fs from 'fs/promises';
import path from 'path';

const prisma = new PrismaClient();

function checkAuth(cookies: any) {
  return cookies.get('admin_session') === 'true';
}

export const GET: RequestHandler = async ({ cookies }) => {
  if (!checkAuth(cookies)) return new Response('Nicht erlaubt', { status: 401 });
  const anmeldungen = await prisma.anmeldung.findMany({
    include: {
      wunsch1: true,
      wunsch2: true,
      wunsch3: true,
      pdfs: true
    },
    orderBy: { timestamp: 'desc' }
  });
  return new Response(JSON.stringify(anmeldungen), {
    headers: { 'Content-Type': 'application/json' }
  });
};

export const DELETE: RequestHandler = async ({ cookies, url }) => {
  if (!checkAuth(cookies)) return new Response('Nicht erlaubt', { status: 401 });
  const id = Number(url.searchParams.get('id'));
  if (isNaN(id)) {
    return json({ error: 'Ungültige ID' }, { status: 400 });
  }
  try {
    // 1. Alle PDF-Einträge zur Anmeldung laden
    const pdfs = await prisma.pdfDatei.findMany({
      where: { anmeldungId: id }
    });

    // 2. Dateien vom Dateisystem löschen
    for (const pdf of pdfs) {
      const filePath = path.resolve('static', pdf.pfad.replace(/^\/+/, ''));
      try {
        await fs.unlink(filePath);
      } catch (err) {
        console.warn(`Datei konnte nicht gelöscht werden: ${filePath}`, err.message);
        // Fehler ignorieren, Datei evtl. manuell entfernt
      }
    }

    // 3. PDF-Datensätze aus DB löschen
      await prisma.pdfDatei.deleteMany({
        where: {anmeldungId: id}
      });
    
    // Anmeldung löschen
    await prisma.anmeldung.delete({where: { id } });
    return json({ ok: true });
  } catch (error) {
    console.error('Fehler beim Löschen der Anmeldung:', error);
    return json({ error: 'Löschen fehlgeschlagen' }, { status: 500 });
  }
};