import Link from "next/link"; import { redirect } from "next/navigation"; import { ShellPage } from "@/components/page-templates"; import { Button, SectionCard } from "@/components/ui"; import { getSession } from "@/lib/auth"; import { prisma } from "@/lib/prisma"; function formatDate(date: Date | null | undefined) { if (!date) { return "-"; } return new Intl.DateTimeFormat("id-ID", { day: "2-digit", month: "short", year: "numeric", hour: "2-digit", minute: "2-digit" }).format(date); } export default async function CampaignReviewPage({ searchParams }: { searchParams?: Promise<{ campaignId?: string; error?: string }>; }) { const session = await getSession(); if (!session) { redirect("/login"); } const query = await (searchParams ?? Promise.resolve<{ campaignId?: string; error?: string }>({})); const campaignId = query.campaignId; const campaign = campaignId ? await prisma.broadcastCampaign.findFirst({ where: { id: campaignId, tenantId: session.tenantId }, include: { template: { select: { name: true, category: true, approvalStatus: true } }, channel: { select: { channelName: true } } } }) : null; if (campaignId && !campaign) { redirect("/campaigns/review?error=campaign_not_found"); } return (
{campaign ? (

Nama: {campaign.name}

Template: {campaign.template.name} ({campaign.template.category}) •{" "} {campaign.template.approvalStatus}

Channel: {campaign.channel.channelName}

Audience: {campaign.audienceType}

Scheduled: {formatDate(campaign.scheduledAt)}

Status: {campaign.status}

Recipient estimate: {campaign.totalRecipients}

Estimasi sukses: {(campaign.totalRecipients * 0.82).toFixed(0)} kontak

) : (

Pilih campaign dari halaman campaign list untuk menampilkan detail review.

)}
{campaign ? (

Template approval: {campaign.template.approvalStatus}

Audience validation: OK

Recipient validation: {campaign.totalRecipients > 0 ? "PASS" : "No recipients"}

Channel availability: Available

) : (

Tidak ada pemeriksaan yang berjalan karena campaign belum dipilih.

)}
{campaign ? ( ) : ( )} Back
); }