import { auth } from "@/auth"; import { db } from "@/lib/db"; import { hasPermission } from "@/lib/permissions"; import { redirect } from "next/navigation"; import Link from "next/link"; import { AddSiteButton, EditSiteButton } from "./site-form"; import { ConfirmDeleteButton } from "@/components/ui/confirm-delete-button"; import { deleteSite } from "./actions"; import type { Metadata } from "next"; export const metadata: Metadata = { title: "Sites" }; export default async function SitesPage() { const session = await auth(); if (!session?.user) redirect("/login"); if (!hasPermission(session.user.role, "manage_sites")) redirect("/dashboard"); const sites = await db.site.findMany({ orderBy: { name: "asc" }, include: { _count: { select: { vessels: true, inventory: true } }, }, }); const canEdit = session.user.role === "ADMIN"; return (

Sites

Ports, depots and offices with inventory

{canEdit && }
{canEdit && } {sites.length === 0 && ( )} {sites.map((site) => ( {canEdit && ( )} ))}
Name Code Address Cost Centres Items tracked Location Status
No sites yet. Add your first port, depot or office.
{site.name} {site.code} {site.address ?? } {site._count.vessels || } {site._count.inventory || } {site.latitude && site.longitude ? `${site.latitude.toFixed(4)}, ${site.longitude.toFixed(4)}` : Not set} {site.isActive ? "Active" : "Inactive"}
); }