import { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import prisma from "@/lib/db"; import Link from "next/link"; import Pagination from "./pagination"; import { Badge } from "./ui/badge"; import { Button } from "./ui/button"; export async function UsersTable({ searchParams, }: { searchParams: Promise<{ query: string; page: number; sortBy: string; status: string; }>; }) { const query = (await searchParams)?.query || ""; const page = (await searchParams)?.page; const sortBy = (await searchParams)?.sortBy || "asc"; const verified = (await searchParams)?.status || "all"; const totalUsers = await prisma.user.count({ where: { OR: [ { name: { contains: query || "", mode: "insensitive", }, }, { phoneNumber: { contains: query || "", mode: "insensitive", }, }, { address: { contains: query || "", mode: "insensitive", }, }, { id_card: { contains: query || "", mode: "insensitive", }, }, ], verified: verified === "all" ? undefined : verified === "verified", }, }); const totalPages = Math.ceil(totalUsers / 10); const limit = 10; const offset = (Number(page) - 1) * limit || 0; const users = await prisma.user.findMany({ where: { OR: [ { name: { contains: query || "", mode: "insensitive", }, }, { phoneNumber: { contains: query || "", mode: "insensitive", }, }, { address: { contains: query || "", mode: "insensitive", }, }, { id_card: { contains: query || "", mode: "insensitive", }, }, ], verified: verified === "all" ? undefined : verified === "verified", }, include: { island: true, atoll: true, }, skip: offset, take: limit, orderBy: { id: `${sortBy}` as "asc" | "desc", }, }); // const users = await prisma.user.findMany({ // where: { // role: "USER", // }, // include: { // atoll: true, // island: true, // }, // }); return (
{users.length === 0 ? (

No Users yet.

) : ( <> Table of all users. Name ID Card Atoll Island House Name Status Dob Phone Number Action {users.map((user) => ( {user.name} {user.id_card} {user.atoll?.name} {user.island?.name} {user.address} {user.verified ? ( Verified ) : ( Unverified )} {new Date(user.dob ?? "").toLocaleDateString("en-US", { month: "short", day: "2-digit", year: "numeric", })} {user.phoneNumber} ))} {query.length > 0 && (

Showing {users.length} locations for "{query} "

)}
{totalUsers} users
)}
); }