import { notFound } from 'next/navigation'
import { and, asc, eq, inArray } from 'drizzle-orm'
import { db, schema } from '@/db'
import { brandMetadata, getPublicBrand } from '@/lib/org-brand'
import Screen from './Screen'

export const dynamic = 'force-dynamic'
export async function generateMetadata({ params }: { params: Promise<{ slug: string }> }) {
  const { slug } = await params
  const [e] = await db.select({ orgId: schema.events.orgId }).from(schema.events).where(eq(schema.events.slug, slug))
  return brandMetadata(e?.orgId, 'Pedidos listos')
}

export default async function ScreenPage({ params }: { params: Promise<{ slug: string }> }) {
  const { slug } = await params
  const [event] = await db.select().from(schema.events).where(eq(schema.events.slug, slug))
  if (!event) notFound()
  const rows = await db.select({ number: schema.orders.number, status: schema.orders.status })
    .from(schema.orders)
    .where(and(eq(schema.orders.eventId, event.id), inArray(schema.orders.status, ['paid', 'preparing', 'ready'])))
    .orderBy(asc(schema.orders.paidAt))
  const b = (await getPublicBrand(event.orgId))!
  return <Screen style={b.style} brand={{ name: b.name, logoUrl: b.logoUrl, whiteLabel: b.whiteLabel }} minors={!event.alcoholAllowed} eventId={event.id} eventName={event.name} slug={event.slug} initial={rows} appUrl={process.env.APP_URL ?? ''} />
}
