admin roadmap csv export, adminactionlog, global search

This commit is contained in:
2026-05-18 20:09:22 +07:00
parent 244a6da9bb
commit ea63f56e97
25 changed files with 1330 additions and 158 deletions
+20 -1
View File
@@ -5,6 +5,7 @@ import { revalidatePath } from "next/cache";
import { authOptions } from "@/lib/auth";
import { isAdminEmail } from "@/lib/admin";
import { refundService } from "@/server/services/refund.service";
import { auditLog } from "@/server/services/audit-log.service";
import { createRefundSchema, refundDecisionSchema } from "./schemas";
async function requireAdmin() {
@@ -31,7 +32,7 @@ export async function createRefundAction(formData: FormData) {
}
try {
await refundService.requestRefund({
const refund = await refundService.requestRefund({
bookingId: parsed.data.bookingId,
reason: parsed.data.reason,
reportedBy: parsed.data.reportedBy,
@@ -39,6 +40,17 @@ export async function createRefundAction(formData: FormData) {
amount: parsed.data.amount,
initiatedByAdminId: admin.id,
});
await auditLog.record({
admin: { id: admin.id, email: admin.email },
action: "REFUND_CREATE",
entityType: "Refund",
entityId: refund.id,
payload: {
bookingId: parsed.data.bookingId,
amount: parsed.data.amount,
reason: parsed.data.reason,
},
});
revalidatePath("/admin/refunds");
return { success: true };
} catch (err) {
@@ -91,6 +103,13 @@ export async function decideRefundAction(formData: FormData) {
adminNote: adminNote!,
});
}
await auditLog.record({
admin: { id: admin.id, email: admin.email },
action: `REFUND_${decision}`,
entityType: "Refund",
entityId: refundId,
payload: adminNote ? { adminNote } : undefined,
});
revalidatePath("/admin/refunds");
return { success: true };
} catch (err) {