admin roadmap done, reupload request, submission history, manual override

This commit is contained in:
2026-05-18 20:25:21 +07:00
parent b844ebdfac
commit bc4973a594
20 changed files with 1254 additions and 121 deletions
+63
View File
@@ -73,6 +73,69 @@ export const organizerRepo = {
});
},
/**
* Phase 2: minta organizer upload ulang field tertentu. Reset status ke
* PENDING tapi sengaja TIDAK clear data lama (organizer ganti field saat
* submit ulang via /verify). Service `submitVerification` auto-clear flag.
*/
async requestReupload(
id: string,
data: { fields: string[]; note: string }
) {
return prisma.organizerVerification.update({
where: { id },
data: {
status: "PENDING",
reuploadRequested: true,
reuploadFields: data.fields,
reuploadNote: data.note,
// Clear review state supaya muncul lagi di tab PENDING.
reviewedById: null,
reviewedAt: null,
},
});
},
/**
* Phase 4: bikin verifikasi APPROVED tanpa upload KYC (manual override admin).
* Placeholder NIK & no image keys — `isManualOverride = true` jadi marker.
*/
async createManualOverride(input: {
userId: string;
adminId: string;
note: string;
fullName: string;
nikEncrypted: string;
nikHash: string;
bankName: string;
bankAccountNumber: string;
bankAccountName: string;
verifiedAt: Date;
}) {
return prisma.organizerVerification.create({
data: {
userId: input.userId,
fullName: input.fullName,
nikEncrypted: input.nikEncrypted,
nikHash: input.nikHash,
birthDate: new Date("1970-01-01"),
address: "(manual override — tidak diisi)",
ktpImageKey: "(manual override)",
livenessKey: "(manual override)",
bankName: input.bankName,
bankAccountNumber: input.bankAccountNumber,
bankAccountName: input.bankAccountName,
status: "APPROVED",
verifiedAt: input.verifiedAt,
reviewedById: input.adminId,
reviewedAt: input.verifiedAt,
isManualOverride: true,
manualOverrideById: input.adminId,
manualOverrideNote: input.note,
},
});
},
/**
* Reopen pengajuan REJECTED ke PENDING. Simpan rejection reason lama
* sebagai catatan history (di-overwrite kalau di-reject lagi nanti).