import { auth } from "@/auth";
import { db } from "@/lib/db";
import { hasPermission } from "@/lib/permissions";
import { generateDownloadUrl } from "@/lib/storage";
import { redirect } from "next/navigation";
import { CompaniesTable } from "./companies-table";
import type { Metadata } from "next";

export const metadata: Metadata = { title: "Company Management" };

export default async function AdminCompaniesPage() {
  const session = await auth();
  if (!session?.user) redirect("/login");
  if (!hasPermission(session.user.role, "manage_vessels_accounts")) redirect("/dashboard");

  const companies = await db.company.findMany({
    orderBy: { name: "asc" },
  });

  const rows = await Promise.all(
    companies.map(async (c) => ({
      id: c.id,
      name: c.name,
      code: c.code,
      gstNumber: c.gstNumber,
      address: c.address,
      telephone: c.telephone,
      mobile: c.mobile,
      email: c.email,
      invoiceEmail: c.invoiceEmail,
      invoiceAddress: c.invoiceAddress,
      logoUrl: c.logoKey ? await generateDownloadUrl(c.logoKey) : null,
      stampUrl: c.stampKey ? await generateDownloadUrl(c.stampKey) : null,
      isActive: c.isActive,
    }))
  );

  return <CompaniesTable companies={rows} />;
}
