55 lines
1.7 KiB
JavaScript
55 lines
1.7 KiB
JavaScript
export default defineEventHandler(async (event) => {
|
|
const { noSiri } = event.context.params; // Extract the noSiri from the URL
|
|
const body = await readBody(event); // Read the request body
|
|
|
|
const { ringkasanKenyataanKes, noKertasSiasatan, noLaporanPolis } = body;
|
|
|
|
// 1. Validate the input fields (all three fields must be provided)
|
|
if (!ringkasanKenyataanKes || !noKertasSiasatan || !noLaporanPolis) {
|
|
return {
|
|
statusCode: 400,
|
|
message:
|
|
"Setiap medan mandatori yang bertanda * telah diisi. (Ralat CMN-E001)",
|
|
};
|
|
}
|
|
|
|
try {
|
|
// 2. Check if the permohonan exists by its `no_siri`
|
|
const existingPermohonan = await prisma.permohonan.findUnique({
|
|
where: { no_siri: noSiri },
|
|
});
|
|
|
|
// If no `permohonan` is found, return a 404 error
|
|
if (!existingPermohonan) {
|
|
return {
|
|
statusCode: 404,
|
|
message: `Permohonan with noSiri ${noSiri} not found.`,
|
|
};
|
|
}
|
|
|
|
// 3. Proceed to update only the allowed fields (ringkasanKenyataanKes, noKertasSiasatan, noLaporanPolis)
|
|
const updatedPermohonan = await prisma.permohonan.update({
|
|
where: { no_siri: noSiri },
|
|
data: {
|
|
ringkasan_kenyataan_kes: ringkasanKenyataanKes,
|
|
no_kertas_siasatan: noKertasSiasatan,
|
|
no_laporan_polis: noLaporanPolis,
|
|
modified_at: new Date(), // Update the modified_at timestamp
|
|
},
|
|
});
|
|
|
|
// 4. Return success response
|
|
return {
|
|
statusCode: 200,
|
|
message: "Permohonan telah berjaya dikemaskini.",
|
|
data: updatedPermohonan,
|
|
};
|
|
} catch (error) {
|
|
console.error("Error updating permohonan:", error);
|
|
return {
|
|
statusCode: 500,
|
|
message: "Gagal mengemaskini permohonan. Sila cuba lagi.",
|
|
};
|
|
}
|
|
});
|