import Link from "next/link"; import { prisma } from "@/lib/prisma"; import { BackLink } from "@/components/back-link"; import { formatDate, formatPrice } from "@/lib/format"; import { insensitiveContains } from "@/lib/prisma-search"; import { updateReturnRequestStatusAction, refundReturnRequestAction } from "./actions"; import { getLocale } from "@/i18n/locale"; import { getDictionary } from "@/i18n/get-dictionary"; export default async function AdminRetourenPage(props: PageProps<"/admin/retouren">) { const t = getDictionary(await getLocale()); const statusLabels: Record = { ANGEFRAGT: t.adminReturnsPage.statusRequested, ANGENOMMEN: t.adminReturnsPage.statusAccepted, ABGELEHNT: t.adminReturnsPage.statusRejected, ERSTATTET: t.adminReturnsPage.statusRefunded, }; const { q } = await props.searchParams; const query = typeof q === "string" ? q.trim() : ""; const returnRequests = await prisma.returnRequest.findMany({ where: query ? { order: { OR: [ { orderNumber: insensitiveContains(query) }, { firstName: insensitiveContains(query) }, { lastName: insensitiveContains(query) }, { email: insensitiveContains(query) }, ], }, } : undefined, orderBy: { createdAt: "desc" }, take: 100, include: { order: { include: { items: true } }, }, }); return (

{t.adminReturnsPage.title}

{query ? ( {t.adminReturnsPage.resetFilter} ) : null}
{returnRequests.map((request) => (

{request.order.orderNumber}

{request.order.firstName} {request.order.lastName} · {request.order.email}

{formatDate(request.createdAt)}

{statusLabels[request.status] ?? request.status}

    {request.order.items.map((item) => (
  • {item.quantity} × {item.productName}
  • ))}

{formatPrice(request.order.totalCents, request.order.currency)}

{request.reason}

{request.status === "ANGEFRAGT" ? (
) : null} {request.status === "ANGENOMMEN" ? (
) : null}
))} {returnRequests.length === 0 ? (

{query ? t.adminReturnsPage.noResultsFiltered : t.adminReturnsPage.noRequestsYet}

) : null}
); }