update api pengaduan

This commit is contained in:
2025-10-28 14:23:40 +08:00
parent 1b7e043d54
commit bf0083e678
2 changed files with 96 additions and 8 deletions

View File

@@ -13,6 +13,7 @@ import AduanRoute from "./server/routes/aduan_route";
import { cors } from "@elysiajs/cors";
import { MCPRoute } from "./server/routes/mcp_route";
import PengaduanRoute from "./server/routes/pengaduan_route";
const Docs = new Elysia({
tags: ["docs"],
@@ -32,7 +33,8 @@ const Api = new Elysia({
.use(CredentialRoute)
.use(UserRoute)
.use(LayananRoute)
.use(AduanRoute);
.use(AduanRoute)
.use(PengaduanRoute);
const app = new Elysia()
.use(Api)

View File

@@ -148,7 +148,7 @@ const PengaduanRoute = new Elysia({
}
})
.post("/update-status", async ({ body }) => {
const { id, status, keterangan } = body
const { id, status, keterangan, idUser } = body
let deskripsi = ""
const pengaduan = await prisma.pengaduan.update({
@@ -165,13 +165,13 @@ const PengaduanRoute = new Elysia({
throw new Error("gagal membuat pengaduan")
}
if(status === "diterima") {
if (status === "diterima") {
deskripsi = "Pengaduan diterima oleh admin"
} else if(status === "dikerjakan") {
} else if (status === "dikerjakan") {
deskripsi = "Pengaduan dikerjakan oleh petugas"
} else if(status === "ditolak") {
} else if (status === "ditolak") {
deskripsi = "Pengaduan ditolak dengan keterangan " + keterangan
} else if(status === "selesai") {
} else if (status === "selesai") {
deskripsi = "Pengaduan selesai"
}
@@ -180,7 +180,7 @@ const PengaduanRoute = new Elysia({
idPengaduan: pengaduan.id,
deskripsi,
status: status as StatusPengaduan,
idUser: ""
idUser,
}
})
@@ -192,7 +192,8 @@ const PengaduanRoute = new Elysia({
body: t.Object({
id: t.String({ minLength: 1, error: "id harus diisi" }),
status: t.String({ minLength: 1, error: "status harus diisi" }),
keterangan: t.Any()
keterangan: t.Any(),
idUser: t.String({ minLength: 1, error: "idUser harus diisi" }),
}),
detail: {
@@ -200,4 +201,89 @@ const PengaduanRoute = new Elysia({
description: `tool untuk update status pengaduan`
}
})
.get("/detail", async ({ query }) => {
const { id } = query
const data = await prisma.pengaduan.findUnique({
where: {
id,
},
select: {
id: true,
noPengaduan: true,
title: true,
detail: true,
location: true,
image: true,
idCategory: true,
idWarga: true,
status: true,
keterangan: true,
createdAt: true,
updatedAt: true,
CategoryPengaduan: {
select: {
name: true
}
},
Warga: {
select: {
name: true,
}
}
}
})
const dataHistory = await prisma.historyPengaduan.findMany({
where: {
idPengaduan: id,
},
select: {
id: true,
deskripsi: true,
status: true,
createdAt: true,
idUser: true,
User: {
select: {
name: true,
}
}
}
})
const dataHistoryFix = dataHistory.map((item) => {
return {
id: item.id,
deskripsi: item.deskripsi,
status: item.status,
createdAt: item.createdAt,
idUser: item.idUser,
nameUser: item.User?.name,
}
})
const datafix = {
id: data?.id,
noPengaduan: data?.noPengaduan,
title: data?.title,
detail: data?.detail,
location: data?.location,
image: data?.image,
CategoryPengaduan: data?.CategoryPengaduan.name,
idWarga: data?.idWarga,
nameWarga: data?.Warga?.name,
status: data?.status,
keterangan: data?.keterangan,
createdAt: data?.createdAt,
updatedAt: data?.updatedAt,
history: dataHistoryFix,
}
return datafix
}, {
detail: {
summary: "get detail pengaduan",
description: `tool untuk mendapatkan detail pengaduan`
}
})
export default PengaduanRoute