Merge pull request 'amalia/08-des-25' (#59) from amalia/08-des-25 into main

Reviewed-on: http://wibugit.wibudev.com/wibu/jenna-mcp/pulls/59
This commit is contained in:
2025-12-08 11:50:41 +08:00

View File

@@ -107,8 +107,10 @@ const PengaduanRoute = new Elysia({
// --- PENGADUAN ---
.post("/create", async ({ body }) => {
const { judulPengaduan, detailPengaduan, lokasi, namaGambar, kategoriId, namaWarga, noTelepon } = body
.post("/create", async ({ body, headers }) => {
const { judulPengaduan, detailPengaduan, lokasi, namaGambar, kategoriId } = body
const namaWarga = headers["x-user"] || ""
const noTelepon = headers["x-phone"] || ""
let imageFix = namaGambar
const noPengaduan = await generateNoPengaduan()
let idCategoryFix = kategoriId
@@ -220,16 +222,16 @@ const PengaduanRoute = new Elysia({
description: "ID atau nama kategori pengaduan (contoh: kebersihan, keamanan, lainnya)"
})),
namaWarga: t.String({
examples: ["budiman"],
description: "Nama warga yang melapor"
}),
// namaWarga: t.String({
// examples: ["budiman"],
// description: "Nama warga yang melapor"
// }),
noTelepon: t.String({
error: "Nomor telepon harus diisi",
examples: ["08123456789", "+628123456789"],
description: "Nomor telepon warga pelapor"
}),
// noTelepon: t.String({
// error: "Nomor telepon harus diisi",
// examples: ["08123456789", "+628123456789"],
// description: "Nomor telepon warga pelapor"
// }),
}),
detail: {
@@ -289,6 +291,84 @@ const PengaduanRoute = new Elysia({
description: `tool untuk update status pengaduan`
}
})
.post("/update", async ({ body }) => {
const { noPengaduan, judul, detail, lokasi, namaGambar } = body
let dataUpdate = {}
const cek = await prisma.pengaduan.findFirst({
where: {
noPengaduan,
},
select: {
id: true
}
})
if (!cek) {
return { success: false, message: 'gagal update status pengaduan, nomer ' + noPengaduan + ' tidak ditemukan' }
}
if (judul) {
dataUpdate = { title: judul }
}
if (detail) {
dataUpdate = { ...dataUpdate, detail }
}
if (lokasi) {
dataUpdate = { ...dataUpdate, location: lokasi }
}
if (namaGambar) {
dataUpdate = { ...dataUpdate, image: namaGambar }
}
const pengaduan = await prisma.pengaduan.updateMany({
where: {
noPengaduan
},
data: dataUpdate
})
const keys = Object.keys(dataUpdate).join(", ");
await prisma.historyPengaduan.create({
data: {
idPengaduan: cek.id,
deskripsi: `Pengaduan diupdate oleh warga (data yg diupdate: ${keys})`,
}
})
return { success: true, message: 'pengaduan dengan nomer ' + noPengaduan + ' sudah diupdate' }
}, {
body: t.Object({
noPengaduan: t.String({
error: "nomer pengaduan harus diisi",
description: "Nomer pengaduan yang ingin diupdate"
}),
judul: t.Optional(t.String({
error: "judul harus diisi",
description: "Judul pengaduan yang ingin diupdate"
})),
detail: t.Optional(t.String({
description: "detail pengaduan yang ingin diupdate"
})),
lokasi: t.Optional(t.String({
description: "lokasi pengaduan yang ingin diupdate"
})),
namaGambar: t.Optional(t.String({
description: "Nama file gambar yang telah diupload untuk update data pengaduan"
})),
}),
detail: {
summary: "Update Data Pengaduan",
description: `tool untuk update data pengaduan`,
tags: ["mcp"]
}
})
.get("/detail", async ({ query }) => {
const { id } = query