"use client";
import { User2 } from "lucide-react";
import { PaginatedTable } from "../../../_components/PaginatedTable";
import Link from "next/link";
import { ColumnDef } from "@tanstack/react-table";
import { User } from "@repo/db";
import { useSession } from "next-auth/react";

const AdminUserPage = () => {
	const { data: session } = useSession();
	return (
		<>
			<PaginatedTable
				stickyHeaders
				prismaModel="user"
				searchFields={["publicId", "firstname", "lastname", "email"]}
				initialOrderBy={[
					{
						id: "publicId",
						desc: false,
					},
				]}
				columns={
					[
						{
							header: "ID",
							accessorKey: "publicId",
						},
						{
							header: "Vorname",
							accessorKey: "firstname",
						},
						{
							header: "Nachname",
							accessorKey: "lastname",
						},
						...(session?.user.permissions.includes("ADMIN_USER_ADVANCED")
							? [
									{
										header: "Email",
										accessorKey: "email",
									},
								]
							: []),
						{
							header: "Aktionen",
							cell: ({ row }) => (
								<div className="flex items-center gap-1">
									<Link href={`/admin/user/${row.original.id}`}>
										<button className="btn btn-sm">Anzeigen</button>
									</Link>
								</div>
							),
						},
					] as ColumnDef<User>[]
				} // Define the columns for the user table
				leftOfSearch={
					<p className="text-2xl font-semibold text-left flex items-center gap-2">
						<User2 className="w-5 h-5" /> Benutzer
					</p>
				}
			/>
		</>
	);
};

AdminUserPage.displayName = "AdminUserPage";

export default AdminUserPage;
