admin roadmap trips ops and payment ops

This commit is contained in:
2026-05-18 19:25:32 +07:00
parent e1966b69f1
commit 4bcb93e283
22 changed files with 1586 additions and 188 deletions
+31
View File
@@ -56,6 +56,37 @@ export async function startMidtransPaymentAction(
}
}
/**
* Admin variant reconcile — skip ownership check, dipakai dari panel admin
* `/admin/bookings/[id]` saat investigasi.
*/
export async function adminReconcileMidtransAction(orderId: string) {
const session = await getServerSession(authOptions);
if (!session?.user) {
return { error: "Kamu harus login terlebih dahulu" };
}
const { isAdminEmail } = await import("@/lib/admin");
if (!isAdminEmail(session.user.email)) {
return { error: "Hanya admin yang bisa melakukan aksi ini" };
}
if (!orderId || typeof orderId !== "string") {
return { error: "order_id tidak valid" };
}
try {
const result = await paymentService.adminReconcile(orderId);
if (!result.ok) {
if (result.reason === "not_found") {
return { error: "Order tidak ditemukan di sistem" };
}
return { error: "Status pembayaran tidak cocok dengan tagihan" };
}
return { success: true as const, status: result.status };
} catch (err) {
return { error: (err as Error).message };
}
}
/**
* Tarik status terkini dari Midtrans untuk satu order, lalu sinkron ke DB.
* Dipakai oleh payment page saat user kembali dari Snap (redirect bawa