From 286c989bcf65742765bfdc19840a1de785e0e98d Mon Sep 17 00:00:00 2001 From: amal Date: Fri, 12 Dec 2025 14:41:20 +0800 Subject: [PATCH] upd: api jenna ai deskripsi: - update pelayanan surat No Issues: --- src/server/routes/pelayanan_surat_route.ts | 164 +++++++++++++++++++++ src/server/routes/pengaduan_route.ts | 3 - 2 files changed, 164 insertions(+), 3 deletions(-) diff --git a/src/server/routes/pelayanan_surat_route.ts b/src/server/routes/pelayanan_surat_route.ts index 162ba6c..1987477 100644 --- a/src/server/routes/pelayanan_surat_route.ts +++ b/src/server/routes/pelayanan_surat_route.ts @@ -728,6 +728,170 @@ const PelayananRoute = new Elysia({ detail: { summary: "Update Status Pengajuan Pelayanan Surat", description: `tool untuk update status pengajuan pelayanan surat`, + } + }) + .post("/update", async ({ body }) => { + const { nomerPengajuan, syaratDokumen, dataText } = body + let dataUpdate = [] + + const pengajuan = await prisma.pelayananAjuan.findFirst({ + where: { + noPengajuan: nomerPengajuan, + } + }) + + if (!pengajuan) { + return { success: false, message: 'data pengajuan surat tidak ditemukan' } + } + + if (dataText && dataText.length > 0) { + for (const item of dataText) { + dataUpdate.push(item.jenis) + const hasil = await prisma.dataTextPelayanan.findFirst({ + where: { + idPengajuanLayanan: pengajuan.id, + jenis: item.jenis, + } + }) + + const upd = await prisma.dataTextPelayanan.upsert({ + where: { + id: hasil?.id + }, + update: { + value: item.value, + }, + create: { + value: item.value, + jenis: item.jenis, + idPengajuanLayanan: pengajuan.id, + idCategory: pengajuan.idCategory, + } + }) + + } + } + + if (syaratDokumen && syaratDokumen.length > 0) { + for (const item of syaratDokumen) { + dataUpdate.push(item.jenis) + const hasil = await prisma.syaratDokumenPelayanan.findFirst({ + where: { + idPengajuanLayanan: pengajuan.id, + jenis: item.jenis, + } + }) + + const upd = await prisma.syaratDokumenPelayanan.upsert({ + where: { + id: hasil?.id + }, + update: { + value: item.value, + }, + create: { + value: item.value, + jenis: item.jenis, + idPengajuanLayanan: pengajuan.id, + idCategory: pengajuan.idCategory, + } + }) + + } + } + + const keys = dataUpdate.join(", "); + + if (pengajuan.status != "ditolak" && pengajuan.status != "antrian") { + return { success: false, message: 'pengajuan surat tidak dapat diupdate karena status ' + pengajuan.status } + } + + if (pengajuan.status == "ditolak") { + const updStatus = await prisma.pelayananAjuan.update({ + where: { + id: pengajuan.id, + }, + data: { + status: "antrian", + } + }) + } + + const history = await prisma.historyPelayanan.create({ + data: { + idPengajuanLayanan: pengajuan.id, + deskripsi: `Pengajuan surat diupdate oleh warga (data yg diupdate: ${keys})`, + status: "antrian", + } + }) + + return { success: true, message: 'pengajuan surat sudah diperbarui' } + + }, { + body: t.Object({ + nomerPengajuan: t.String({ + error: "nomer pengajuan harus diisi", + description: "Nomer pengajuan yang ingin diupdate" + }), + dataText: t.Optional(t.Array( + t.Object({ + jenis: t.String({ + description: "Jenis field yang dibutuhkan oleh kategori pelayanan. Biasanya dinamis.", + examples: ["nama", "jenis kelamin", "tempat tanggal lahir", "negara", "agama", "status perkawinan", "alamat", "pekerjaan", "jenis usaha", "alamat usaha"], + error: "jenis harus diisi" + }), + value: t.String({ + description: "Isi atau nilai dari jenis field terkait.", + examples: ["Budi Santoso", "Laki-laki", "Denpasar, 28 Februari 1990", "Indonesia", "Islam", "Belum menikah", "Jl. Mawar No. 10", "Karyawan Swasta", "usaha makanan", "Jl. Melati No. 21"], + error: "value harus diisi" + }), + }), + { + description: "Kumpulan data text dinamis sesuai kategori layanan.", + examples: [ + [ + { jenis: "nama", value: "Budi Santoso" }, + { jenis: "jenis kelamin", value: "Laki-laki" }, + { jenis: "tempat tanggal lahir", value: "Denpasar, 28 Februari 1990" }, + { jenis: "negara", value: "Indonesia" }, + { jenis: "agama", value: "Islam" }, + { jenis: "status perkawinan", value: "Belum menikah" }, + { jenis: "alamat", value: "Jl. Mawar No. 10" }, + { jenis: "pekerjaan", value: "Karyawan Swasta" }, + { jenis: "jenis usaha", value: "usaha makanan" }, + { jenis: "alamat usaha", value: "Jl. Melati No. 21" }, + ] + ], + } + )), + syaratDokumen: t.Optional(t.Array( + t.Object({ + jenis: t.String({ + description: "Jenis dokumen persyaratan yang diminta oleh kategori layanan.", + examples: ["ktp", "kk", "surat_pengantar_rt"], + error: "jenis harus diisi" + }), + value: t.String({ + description: "Nama file atau identifier file dokumen yang diupload.", + examples: ["ktp_budi.png", "kk_budi.png"], + error: "value harus diisi" + }), + }), + { + description: "Kumpulan dokumen yang wajib diupload sesuai persyaratan layanan.", + examples: [ + [ + { jenis: "pengantar kelian", value: "pengantar_kelurahan_budi.png" }, + { jenis: "ktp/kk", value: "kk_budi.png" }, + { jenis: "foto lokasi", value: "foto_lokasi_budi.png" } + ] + ], + } + )), + }), + detail: { + summary: "Update Data Pengajuan Pelayanan Surat", + description: `tool untuk update data pengajuan pelayanan surat`, tags: ["mcp"] } }) diff --git a/src/server/routes/pengaduan_route.ts b/src/server/routes/pengaduan_route.ts index 07e8285..37d5d68 100644 --- a/src/server/routes/pengaduan_route.ts +++ b/src/server/routes/pengaduan_route.ts @@ -599,7 +599,6 @@ const PengaduanRoute = new Elysia({ detail: { summary: "Upload File (FormData)", description: "Tool untuk upload file ke folder tujuan dengan memakai FormData", - // tags: ["mcp"], consumes: ["multipart/form-data"] }, }) @@ -643,7 +642,6 @@ const PengaduanRoute = new Elysia({ detail: { summary: "Upload File (FormData)", description: "Tool untuk upload file ke folder tujuan dengan memakai FormData", - // tags: ["mcp"], consumes: ["multipart/form-data"] }, }) @@ -685,7 +683,6 @@ const PengaduanRoute = new Elysia({ detail: { summary: "Upload File (Base64)", description: "Tool untuk upload file ke Seafile dalam format Base64", - // tags: ["mcp"], consumes: ["multipart/form-data"] }, })