amalia/25-nov-25 #37
@@ -107,11 +107,11 @@ const PengaduanRoute = new Elysia({
|
|||||||
|
|
||||||
// --- PENGADUAN ---
|
// --- PENGADUAN ---
|
||||||
.post("/create", async ({ body }) => {
|
.post("/create", async ({ body }) => {
|
||||||
const { judulPengaduan, detailPengaduan, lokasi, namaGambar, kategoriId, wargaId, noTelepon } = body
|
const { judulPengaduan, detailPengaduan, lokasi, namaGambar, kategoriId, namaWarga, noTelepon } = body
|
||||||
let imageFix = namaGambar
|
let imageFix = namaGambar
|
||||||
const noPengaduan = await generateNoPengaduan()
|
const noPengaduan = await generateNoPengaduan()
|
||||||
let idCategoryFix = kategoriId
|
let idCategoryFix = kategoriId
|
||||||
let idWargaFix = wargaId
|
let idWargaFix = ""
|
||||||
|
|
||||||
if (idCategoryFix) {
|
if (idCategoryFix) {
|
||||||
const category = await prisma.categoryPengaduan.findUnique({
|
const category = await prisma.categoryPengaduan.findUnique({
|
||||||
@@ -138,38 +138,26 @@ const PengaduanRoute = new Elysia({
|
|||||||
idCategoryFix = "lainnya"
|
idCategoryFix = "lainnya"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const nomorHP = normalizePhoneNumber({ phone: noTelepon })
|
||||||
|
const dataWarga = await prisma.warga.upsert({
|
||||||
const warga = await prisma.warga.findUnique({
|
|
||||||
where: {
|
where: {
|
||||||
id: wargaId,
|
phone: nomorHP
|
||||||
|
},
|
||||||
|
create: {
|
||||||
|
name: namaWarga,
|
||||||
|
phone: nomorHP,
|
||||||
|
},
|
||||||
|
update: {
|
||||||
|
name: namaWarga,
|
||||||
|
phone: nomorHP,
|
||||||
|
},
|
||||||
|
select: {
|
||||||
|
id: true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
if (!warga) {
|
idWargaFix = dataWarga.id
|
||||||
const nomorHP = normalizePhoneNumber({ phone: noTelepon })
|
|
||||||
const cariWarga = await prisma.warga.findUnique({
|
|
||||||
where: {
|
|
||||||
phone: nomorHP,
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
if (!cariWarga) {
|
|
||||||
const wargaCreate = await prisma.warga.create({
|
|
||||||
data: {
|
|
||||||
name: wargaId,
|
|
||||||
phone: nomorHP,
|
|
||||||
},
|
|
||||||
select: {
|
|
||||||
id: true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
idWargaFix = wargaCreate.id
|
|
||||||
} else {
|
|
||||||
idWargaFix = cariWarga.id
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
const pengaduan = await prisma.pengaduan.create({
|
const pengaduan = await prisma.pengaduan.create({
|
||||||
data: {
|
data: {
|
||||||
@@ -228,9 +216,9 @@ const PengaduanRoute = new Elysia({
|
|||||||
description: "ID atau nama kategori pengaduan (contoh: kebersihan, keamanan, lainnya)"
|
description: "ID atau nama kategori pengaduan (contoh: kebersihan, keamanan, lainnya)"
|
||||||
})),
|
})),
|
||||||
|
|
||||||
wargaId: t.Optional(t.String({
|
namaWarga: t.Optional(t.String({
|
||||||
examples: ["budiman"],
|
examples: ["budiman"],
|
||||||
description: "ID unik warga yang melapor (jika sudah terdaftar)"
|
description: "Nama warga yang melapor"
|
||||||
})),
|
})),
|
||||||
|
|
||||||
noTelepon: t.String({
|
noTelepon: t.String({
|
||||||
@@ -242,23 +230,7 @@ const PengaduanRoute = new Elysia({
|
|||||||
|
|
||||||
detail: {
|
detail: {
|
||||||
summary: "Buat Pengaduan Warga",
|
summary: "Buat Pengaduan Warga",
|
||||||
description: `
|
description: `Endpoint ini digunakan untuk membuat data pengaduan (laporan) baru dari warga`,
|
||||||
Endpoint ini digunakan untuk membuat data pengaduan (laporan) baru dari warga.
|
|
||||||
|
|
||||||
Alur proses:
|
|
||||||
1. Sistem memvalidasi kategori pengaduan berdasarkan ID.
|
|
||||||
- Jika ID kategori tidak ditemukan, sistem akan mencari berdasarkan nama kategori.
|
|
||||||
- Jika tetap tidak ditemukan, kategori akan diset menjadi "lainnya".
|
|
||||||
2. Sistem memvalidasi data warga berdasarkan ID.
|
|
||||||
- Jika warga tidak ditemukan, sistem akan mencari berdasarkan nomor telepon.
|
|
||||||
- Jika tetap tidak ditemukan, data warga baru akan dibuat secara otomatis.
|
|
||||||
3. Sistem menghasilkan nomor pengaduan unik (noPengaduan).
|
|
||||||
4. Data pengaduan akan disimpan ke database, termasuk judul, detail, lokasi, gambar (opsional), dan data warga.
|
|
||||||
5. Sistem juga membuat catatan riwayat awal pengaduan dengan deskripsi "Pengaduan dibuat".
|
|
||||||
|
|
||||||
Respon:
|
|
||||||
- success: true jika pengaduan berhasil dibuat.
|
|
||||||
- message: berisi pesan sukses dan nomor pengaduan yang dapat digunakan untuk melacak status pengaduan.`,
|
|
||||||
tags: ["mcp"]
|
tags: ["mcp"]
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user