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 { 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} | {"★".repeat(review.rating)} {"☆".repeat(5 - review.rating)} | {review.comment ?? "—"} | {formatDate(review.createdAt)} | {review.isApproved ? ( {t.adminReviewsPage.statusPublished} ) : ( {t.adminReviewsPage.statusPending} )} |
{!review.isApproved ? (
) : null}
|
{query ? t.adminReviewsPage.noResultsFiltered : t.adminReviewsPage.noReviewsYet}
) : null}