"use client"; import { useLocation, useParams, Link } from "@/lib/router"; import { useQuery } from "@tanstack/react-query"; import { Button } from "@/components/ui/button"; import { api } from "@/lib/api"; import PaymentResult from "@/components/PaymentResult"; import { formatJalali } from "@/lib/utils"; import Markdown from '@/components/Markdown'; import { Helmet } from "@/lib/helmet"; export default function EventFreeSuccessPage() { const { slug } = useParams(); const search = new URLSearchParams(useLocation().search); const registrationId = search.get("registration_id") || ""; const { data, isLoading, isError } = useQuery({ queryKey: ["registration-verify", registrationId], queryFn: () => registrationId ? api.verifyMyRegistration(registrationId) : Promise.resolve(null), enabled: Boolean(registrationId), }); const registrationCodeFull = (data?.ticket_id || registrationId || "").trim(); const registrationCodeShort = registrationCodeFull ? (registrationCodeFull.split("-")[0] || registrationCodeFull).slice(0, 8) : ""; const siteUrl = 'https://east-guilan-ce.ir'; const siteName = 'East Guilan CE'; const canonicalUrl = slug ? `${siteUrl}/events/${slug}/success` : `${siteUrl}/events`; const registrationTitle = data?.event_title || slug || 'Event registration'; const ticketSummary = registrationCodeShort ? ` Ticket: ${registrationCodeShort}.` : ''; const pageState = isLoading ? 'Verifying registration' : isError || !data ? 'Registration not found' : 'Registration confirmed'; const pageTitle = `${pageState} | ${siteName}`; const registrationCode = registrationId || 'your registration'; const pageDescription = data ? `Registration confirmed for ${registrationTitle}.${ticketSummary}` : isError ? `We could not verify ${registrationCode}.` : registrationId ? `Verifying registration ${registrationId} for ${registrationTitle}.` : 'Review your registration status and ticket details.'; const helmet = ( {pageTitle} ); const renderWithHelmet = (node: JSX.Element) => ( <> {helmet} {node} ); if (isLoading) { return renderWithHelmet(
در حال بارگذاری...
); } // اگر بک‌اند چیزی برنگرداند یا خطا داد if (!data || isError) { return renderWithHelmet(
); } const details = [ { label: "عنوان رویداد", value: data.event_title || (slug || "—") }, { label: "شیوه برگزاری", value: data.event_type || "—" }, { label: "کد ثبت‌نام", value: {registrationCodeShort || "—"} }, { label: "وضعیت", value: faStatus(data.status) }, ...(data.registered_at ? [{ label: "تاریخ ثبت‌نام", value: formatJalali(data.registered_at) }] : []), { label: "مبلغ", value: "رایگان" }, ]; return renderWithHelmet(
); } function faStatus(status?: string) { switch ((status || "").toUpperCase()) { case "CONFIRMED": case "APPROVED": return "تأیید شده"; case "PENDING": return "در انتظار"; case "CANCELLED": case "CANCELED": return "لغو شده"; default: return status || "—"; } }