import { pool } from "@/lib/db"; import { getAdminUser } from "@/lib/admin-permissions"; import { getActiveBrandId } from "@/lib/brand-scope"; import AdminAccessDenied from "@/components/admin/AdminAccessDenied"; import StopTableClient from "@/components/admin/StopTableClient"; import { PageHeader } from "@/components/admin/design-system"; import { redirect } from "next/navigation"; const StopIcon = () => ( ); interface PageProps { searchParams: Promise<{ page?: string }>; } export default async function AdminStopsPage({ searchParams }: PageProps) { const params = await searchParams; const adminUser = await getAdminUser(); if (!adminUser) return ; if (!adminUser.can_manage_stops) redirect("/admin/pickup"); interface DbStopRow { id: string; city: string; state: string; date: Date | string; time: string | null; location: string; status: string; brand_id: string; address: string | null; zip: string | null; cutoff_date: string | null; brand_name?: string; } let stops: DbStopRow[] = []; let error: string | null = null; // Resolve active brand from cookie/URL (respects platform_admin "All brands" = null) let activeBrandId: string | null = null; try { activeBrandId = await getActiveBrandId(adminUser); // If brand-scoped (not platform_admin) and no active brand, restrict query const brandCondition = activeBrandId ? `brand_id = '${activeBrandId}'` : adminUser.role === "platform_admin" ? "1=1" : `brand_id IN ('${(adminUser.brand_ids ?? []).join("','")}')`; const { rows } = await pool.query( `SELECT s.id, s.city, s.state, s.date, s."time", s.location, s.status, s.brand_id, s.address, s.zip, s.cutoff_date, b.name as brand_name FROM stops s LEFT JOIN brands b ON b.id = s.brand_id WHERE ${brandCondition} ORDER BY s.date ASC LIMIT 200` ); stops = rows; console.log("[admin/stops] Fetched", rows.length, "stops"); } catch (e) { error = e instanceof Error ? e.message : String(e); console.error("[admin/stops] Query error:", error); } if (error) { return (

Operations

} />

Error loading stops

                {error}
              

Debug info:

adminUser.brand_id: {adminUser.brand_id ?? "null"}

adminUser.role: {adminUser.role}

adminUser.email: {adminUser.email}

); } // Transform stops for the client component const stopsForClient = stops.map((s) => ({ id: s.id, city: s.city, state: s.state, date: s.date instanceof Date ? s.date.toISOString().split("T")[0] : String(s.date).split("T")[0], time: s.time || "", location: s.location, active: s.status === "active", brand_id: s.brand_id, status: s.status, address: s.address, zip: s.zip, cutoff_time: s.cutoff_date, brands: s.brand_name ? { name: s.brand_name } : null, })); return (

Operations

} />
); }