API & UI Program Kemiskinan Menu Ekonomi
This commit is contained in:
@@ -15,29 +15,57 @@ export default async function programKemiskinanUpdate(context: Context) {
|
||||
const id = context.params.id as string;
|
||||
const body = context.body as FormUpdate;
|
||||
|
||||
const program = await prisma.programKemiskinan.update({
|
||||
where: { id },
|
||||
data: {
|
||||
nama: body.nama,
|
||||
deskripsi: body.deskripsi,
|
||||
ikonUrl: body.ikonUrl,
|
||||
statistik: body.statistik
|
||||
? {
|
||||
create: {
|
||||
tahun: Number(body.statistik.tahun),
|
||||
jumlah: Number(body.statistik.jumlah),
|
||||
},
|
||||
}
|
||||
: undefined,
|
||||
},
|
||||
include: {
|
||||
statistik: true,
|
||||
},
|
||||
});
|
||||
try {
|
||||
// cari ID statistik yang terkait
|
||||
const existing = await prisma.programKemiskinan.findUnique({
|
||||
where: { id },
|
||||
include: { statistik: true },
|
||||
});
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: "Success update program kemiskinan",
|
||||
data: program,
|
||||
};
|
||||
if (!existing) {
|
||||
return new Response(JSON.stringify({ success: false, message: "Program tidak ditemukan" }), { status: 404 });
|
||||
}
|
||||
|
||||
// update statistik (bisa update atau create kalau belum ada)
|
||||
let statistikUpdate;
|
||||
|
||||
if (existing.statistikId) {
|
||||
statistikUpdate = await prisma.statistikKemiskinan.update({
|
||||
where: { id: existing.statistikId },
|
||||
data: {
|
||||
tahun: Number(body.statistik?.tahun),
|
||||
jumlah: Number(body.statistik?.jumlah),
|
||||
},
|
||||
});
|
||||
} else {
|
||||
statistikUpdate = await prisma.statistikKemiskinan.create({
|
||||
data: {
|
||||
tahun: Number(body.statistik?.tahun),
|
||||
jumlah: Number(body.statistik?.jumlah),
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
const program = await prisma.programKemiskinan.update({
|
||||
where: { id },
|
||||
data: {
|
||||
nama: body.nama,
|
||||
deskripsi: body.deskripsi,
|
||||
ikonUrl: body.ikonUrl,
|
||||
statistik: {
|
||||
connect: { id: statistikUpdate.id }, // konek ke statistik baru atau yang diperbarui
|
||||
},
|
||||
},
|
||||
include: { statistik: true },
|
||||
});
|
||||
|
||||
return new Response(JSON.stringify({ success: true, data: program }), {
|
||||
status: 200,
|
||||
});
|
||||
} catch (err) {
|
||||
console.error("Gagal update:", err);
|
||||
return new Response(JSON.stringify({ success: false, message: "Gagal update program" }), {
|
||||
status: 500,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user