import { notFound, redirect } from "next/navigation";
import { apiFetch, getCurrentUser } from "@/lib/api";
import { UnitDetail } from "@/components/UnitDetail";

export const dynamic = "force-dynamic";

export default async function UnitDetailPage({ params }: { params: Promise<{ id: string }> }) {
  const user = await getCurrentUser();
  if (!user) redirect("/login");
  if (!user.permissions.includes("structure.view")) redirect("/dashboard");

  const { id } = await params;
  const unitId = Number(id);
  if (!Number.isInteger(unitId) || unitId <= 0) notFound();

  const { status, data } = await apiFetch<{
    unit: { id: number; unit_kind: "national" | "governorate"; governorate_name: string | null; name_ar: string; formation_decision_ref: string; notes: string | null; member_count: number | null; readiness_note: string | null };
    positions: { id: number; member_id: number | null; member_name: string | null; member_uuid: string | null; title_ar: string; appointment_decision_ref: string; decided_by: string | null; started_on: string | null; ended_on: string | null; end_reason: string | null }[];
  }>(`/api/structure/units/${unitId}`);
  if (status === 404 || !data?.unit) notFound();

  return (
    <UnitDetail
      unit={data.unit}
      initialPositions={data.positions ?? []}
      canManage={user.permissions.includes("structure.manage")}
    />
  );
}
