import Link from "next/link"; import { prisma } from "@/lib/prisma"; import { BackLink } from "@/components/back-link"; import { ConfirmForm } from "@/components/confirm-form"; import { formatDate } from "@/lib/format"; import { StarRating } from "@/components/star-rating"; import { AdminActionButton, AdminBadge, AdminEmptyState, AdminPageHeader, AdminRowActions, AdminSearchForm, } from "@/components/admin-list"; import { insensitiveContains } from "@/lib/prisma-search"; import { approveReviewAction, deleteReviewAction } from "../actions"; import { getLocale } from "@/i18n/locale"; import { getDictionary } from "@/i18n/get-dictionary"; export default async function AdminBewertungenPage(props: PageProps<"/admin/bewertungen">) { const t = getDictionary(await getLocale()); const { q } = await props.searchParams; const query = typeof q === "string" ? q.trim() : ""; const reviews = await prisma.review.findMany({ where: query ? { OR: [ { product: { name: insensitiveContains(query) } }, { customer: { firstName: insensitiveContains(query) } }, { customer: { lastName: insensitiveContains(query) } }, ], } : undefined, include: { product: { select: { name: true, slug: true } }, customer: { select: { firstName: true, lastName: true } }, }, orderBy: [{ isApproved: "asc" }, { createdAt: "desc" }], take: 100, }); return (
| {t.adminReviewsPage.colProduct} | {t.adminReviewsPage.colCustomer} | {t.adminReviewsPage.colRating} | {t.adminReviewsPage.colComment} | {t.adminReviewsPage.colDate} | {t.adminReviewsPage.colStatus} | |
|---|---|---|---|---|---|---|
| {review.product.name} | {review.customer.firstName} {review.customer.lastName} |
|
{review.comment ?? "—"} | {formatDate(review.createdAt)} |
{review.isApproved ? (
|
|