"use server"; import { getServerSession } from "next-auth"; import { revalidatePath } from "next/cache"; import { authOptions } from "@/lib/auth"; import { isAdminEmail } from "@/lib/admin"; import { payoutService } from "@/server/services/payout.service"; import { payoutMarkPaidSchema } from "./schemas"; async function requireAdmin() { const session = await getServerSession(authOptions); if (!session?.user || !isAdminEmail(session.user.email)) { return null; } return session.user; } export async function markPayoutPaidAction(formData: FormData) { const admin = await requireAdmin(); if (!admin) return { error: "Tidak memiliki akses admin" }; const parsed = payoutMarkPaidSchema.safeParse({ payoutId: formData.get("payoutId") as string, adminNote: (formData.get("adminNote") as string) ?? "", }); if (!parsed.success) { return { error: parsed.error.issues[0].message }; } try { await payoutService.markPaid({ payoutId: parsed.data.payoutId, adminId: admin.id, adminNote: parsed.data.adminNote, }); revalidatePath("/admin/payouts"); revalidatePath("/admin"); revalidatePath("/profile"); return { success: true }; } catch (err) { return { error: (err as Error).message }; } }