import { Router } from 'express';
import { db } from '../db/index.js';
import { santri, angkatan } from '../db/schema.js';
import { eq, and } from 'drizzle-orm';

const router = Router();

// Halaman undangan publik: /:nomorAngkatan/:slug
// Reserved paths first agar tidak konflik dengan login/dashboard/dll
const RESERVED = new Set([
  'login', 'logout', 'auth', 'dashboard', 'angkatan', 'kelas', 'santri',
  'users', 'undangan', 'send', 'audit', 'uploads', 'css', 'js', 'public',
]);

router.get('/:nomor(\\d+)/:slug', async (req, res, next) => {
  const nomor = Number(req.params.nomor);
  const slug = String(req.params.slug);

  const [a] = await db.select().from(angkatan).where(eq(angkatan.nomor, nomor)).limit(1);
  if (!a) return res.status(404).render('error', { title: 'Tidak ditemukan', message: 'Undangan tidak tersedia.', layout: false });

  const [s] = await db
    .select()
    .from(santri)
    .where(and(eq(santri.angkatanId, a.id), eq(santri.slug, slug)))
    .limit(1);
  if (!s) return res.status(404).render('error', { title: 'Tidak ditemukan', message: 'Undangan tidak tersedia.', layout: false });

  const baseUrl = `${req.protocol}://${req.get('host')}`;

  res.render('public/undangan', {
    title: `Undangan Tasyakuran - ${s.nama}`,
    santriItem: s,
    angkatanItem: a,
    baseUrl,
    isPreview: false,
    layout: false,
  });
});

export default router;
