diff --git a/src/pages/scr/dashboard/pelayanan-surat/detail_pelayanan_page.tsx b/src/pages/scr/dashboard/pelayanan-surat/detail_pelayanan_page.tsx
index ae32f73..75e9d4b 100644
--- a/src/pages/scr/dashboard/pelayanan-surat/detail_pelayanan_page.tsx
+++ b/src/pages/scr/dashboard/pelayanan-surat/detail_pelayanan_page.tsx
@@ -45,7 +45,7 @@ export default function DetailPengajuanPage() {
const { data, mutate, isLoading } = useSwr("/", () =>
apiFetch.api.pelayanan.detail.get({
query: {
- nomerPengajuan: id!,
+ id: id!,
},
}),
);
@@ -343,16 +343,19 @@ function DetailDataPengajuan({ data, syaratDokumen, dataText, onAction }: { data
Setujui
- ) : (
-
-
-
- )
+ ) :
+ data?.status === "selesai" ?
+ (
+
+
+
+ )
+ : <>>
}
diff --git a/src/pages/scr/dashboard/pengaduan/detail_page.tsx b/src/pages/scr/dashboard/pengaduan/detail_page.tsx
index 0b83ddd..c9f075f 100644
--- a/src/pages/scr/dashboard/pengaduan/detail_page.tsx
+++ b/src/pages/scr/dashboard/pengaduan/detail_page.tsx
@@ -44,7 +44,7 @@ export default function DetailPengaduanPage() {
const { data, mutate, isLoading } = useSwr("/", () =>
apiFetch.api.pengaduan.detail.get({
query: {
- nomerPengaduan: id!,
+ id: id!,
},
}),
);
@@ -70,7 +70,7 @@ export default function DetailPengaduanPage() {
);
}
-function DetailDataPengaduan({ data, onAction }: { data: any, onAction: () => void }) {
+function DetailDataPengaduan({ data, onAction }: { data: any | null, onAction: () => void }) {
const [opened, { open, close }] = useDisclosure(false);
const [catModal, setCatModal] = useState<"tolak" | "terima">("tolak");
const [openedPreview, setOpenedPreview] = useState(false);
diff --git a/src/server/routes/pelayanan_surat_route.ts b/src/server/routes/pelayanan_surat_route.ts
index 3933e4f..162ba6c 100644
--- a/src/server/routes/pelayanan_surat_route.ts
+++ b/src/server/routes/pelayanan_surat_route.ts
@@ -151,18 +151,10 @@ const PelayananRoute = new Elysia({
}
})
.get("/detail", async ({ query }) => {
- const { nomerPengajuan } = query
- console.log(nomerPengajuan, query)
+ const { id } = query
const data = await prisma.pelayananAjuan.findFirst({
where: {
- OR: [
- {
- noPengajuan: nomerPengajuan
- },
- {
- id: nomerPengajuan
- }
- ]
+ id: id
},
select: {
id: true,
@@ -192,6 +184,17 @@ const PelayananRoute = new Elysia({
}
})
+ if (!data) {
+ const datafix = {
+ pengajuan: {},
+ history: [],
+ warga: {},
+ syaratDokumen: [],
+ dataText: [],
+ }
+ return datafix
+ }
+
const dataSurat = await prisma.suratPelayanan.findFirst({
where: {
idPengajuanLayanan: data?.id,
@@ -303,16 +306,14 @@ const PelayananRoute = new Elysia({
dataText: dataTextFix,
}
- console.log(datafix)
return datafix
}, {
query: t.Object({
- nomerPengajuan: t.String({ minLength: 1, error: "nomer pengajuan harus diisi" }),
+ id: t.String({ minLength: 1, error: "id harus diisi" }),
}),
detail: {
- summary: "Detail Ajuan Pelayanan Surat by Nomer Pengajuan",
- description: `tool untuk mendapatkan detail ajuan pelayanan surat berdasarkan nomer pengajuan`,
- tags: ["mcp"]
+ summary: "Detail Ajuan Pelayanan Surat by ID",
+ description: `tool untuk mendapatkan detail ajuan pelayanan surat berdasarkan id`,
}
})
.post("/create", async ({ body, headers }) => {
@@ -505,6 +506,171 @@ const PelayananRoute = new Elysia({
tags: ["mcp"]
}
})
+ .post("/detail-data", async ({ body }) => {
+ const { nomerPengajuan } = body
+ const data = await prisma.pelayananAjuan.findFirst({
+ where: {
+ noPengajuan: nomerPengajuan
+ },
+ select: {
+ id: true,
+ noPengajuan: true,
+ status: true,
+ createdAt: true,
+ updatedAt: true,
+ CategoryPelayanan: {
+ select: {
+ name: true,
+ dataText: true,
+ syaratDokumen: true,
+ }
+ },
+ Warga: {
+ select: {
+ name: true,
+ phone: true,
+ _count: {
+ select: {
+ Pengaduan: true,
+ PelayananAjuan: true,
+ }
+ }
+ }
+ },
+ }
+ })
+
+ if (!data) {
+ return { success: false, message: "Data tidak ditemukan" }
+ }
+
+ const dataSurat = await prisma.suratPelayanan.findFirst({
+ where: {
+ idPengajuanLayanan: data?.id,
+ isActive: true
+ },
+ select: {
+ id: true,
+ idCategory: true,
+ }
+ })
+
+ const dataSyarat = await prisma.syaratDokumenPelayanan.findMany({
+ where: {
+ idPengajuanLayanan: data?.id,
+ isActive: true
+ },
+ select: {
+ id: true,
+ jenis: true,
+ value: true,
+ }
+ })
+
+ const dataText = await prisma.dataTextPelayanan.findMany({
+ where: {
+ idPengajuanLayanan: data?.id,
+ isActive: true
+ },
+ select: {
+ id: true,
+ value: true,
+ jenis: true,
+ }
+ })
+ const syaratDokumen = (data?.CategoryPelayanan?.syaratDokumen ?? []) as {
+ name: string;
+ desc: string;
+ }[];
+
+ const dataSyaratFix = dataSyarat.map((item) => {
+ const desc = syaratDokumen.find((v) => v.name == item.jenis)?.desc
+ return {
+ id: item.id,
+ jenis: desc,
+ value: item.value,
+ }
+ })
+
+ const dataTextFix = dataText.map((item) => {
+ const desc = data?.CategoryPelayanan?.dataText.find((v) => v == item.jenis)
+ return {
+ id: item.id,
+ jenis: item.jenis,
+ value: item.value,
+ }
+ })
+
+ const dataHistory = await prisma.historyPelayanan.findMany({
+ where: {
+ idPengajuanLayanan: data?.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 warga = {
+ name: data?.Warga?.name,
+ phone: data?.Warga?.phone,
+ pengaduan: data?.Warga?._count.Pengaduan,
+ pelayanan: data?.Warga?._count.PelayananAjuan,
+ }
+
+ const dataPengajuan = {
+ id: data?.id,
+ noPengajuan: data?.noPengajuan,
+ category: data?.CategoryPelayanan.name,
+ status: data?.status,
+ createdAt: data?.createdAt,
+ updatedAt: data?.updatedAt,
+ idSurat: dataSurat?.id,
+ }
+
+ const datafix = {
+ pengajuan: dataPengajuan,
+ history: dataHistoryFix,
+ warga: warga,
+ syaratDokumen: dataSyaratFix,
+ dataText: dataTextFix,
+ }
+
+ return datafix
+
+ }, {
+ body: t.Object({
+ nomerPengajuan: t.String({
+ description: "Nomor pengajuan pelayanan surat yang ingin diakses.",
+ examples: ["PS-101225-001", "PS-101225-002"],
+ error: "Nomor pengajuan harus diisi"
+ })
+ }),
+ detail: {
+ summary: "Detail Pengajuan Pelayanan Surat By Nomor Pengajuan",
+ description: `tool untuk mendapatkan detail pengajuan pelayanan surat berdasarkan nomor pengajuan`,
+ tags: ["mcp"]
+ }
+ })
.post("/update-status", async ({ body }) => {
const { id, status, keterangan, idUser, noSurat } = body
let deskripsi = ""
diff --git a/src/server/routes/pengaduan_route.ts b/src/server/routes/pengaduan_route.ts
index 6d76cf4..07e8285 100644
--- a/src/server/routes/pengaduan_route.ts
+++ b/src/server/routes/pengaduan_route.ts
@@ -372,18 +372,11 @@ const PengaduanRoute = new Elysia({
}
})
.get("/detail", async ({ query }) => {
- const { nomerPengaduan } = query
- console.log(nomerPengaduan, query)
+ const { id } = query
const data = await prisma.pengaduan.findFirst({
where: {
- OR: [
- {
- noPengaduan: nomerPengaduan
- }, {
- id: nomerPengaduan
- }
- ]
+ id: id
},
select: {
id: true,
@@ -418,6 +411,16 @@ const PengaduanRoute = new Elysia({
}
})
+ if (!data) {
+ const datafix = {
+ pengaduan: {},
+ history: [],
+ warga: {},
+ }
+
+ return datafix
+ }
+
const dataHistory = await prisma.historyPengaduan.findMany({
where: {
idPengaduan: data?.id,
@@ -470,15 +473,13 @@ const PengaduanRoute = new Elysia({
history: dataHistoryFix,
warga: warga,
}
- console.log(datafix)
return datafix
}, {
detail: {
- summary: "Detail Pengaduan Warga by Nomer Pengaduan",
- description: `tool untuk mendapatkan detail pengaduan warga / history pengaduan / mengecek status pengaduan berdasarkan nomer Pengaduan`,
- tags: ["mcp"]
+ summary: "Detail Pengaduan Warga By ID",
+ description: `tool untuk mendapatkan detail pengaduan warga / history pengaduan / mengecek status pengaduan berdasarkan id pengaduan`,
}
})
.get("/", async ({ query, headers }) => {
@@ -887,6 +888,118 @@ const PengaduanRoute = new Elysia({
description: "Tool untuk delete file Seafile",
},
})
+ .post("/detail-data", async ({ body }) => {
+ const { nomerPengaduan } = body
+
+ const data = await prisma.pengaduan.findFirst({
+ where: {
+ noPengaduan: nomerPengaduan
+ },
+ 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,
+ phone: true,
+ _count: {
+ select: {
+ Pengaduan: true,
+ PelayananAjuan: true,
+ }
+ }
+ }
+ }
+ }
+ })
+
+ if (!data) {
+ return { success: false, message: "Data tidak ditemukan" };
+ }
+
+ const dataHistory = await prisma.historyPengaduan.findMany({
+ where: {
+ idPengaduan: data?.id,
+ },
+ select: {
+ id: true,
+ deskripsi: true,
+ status: true,
+ createdAt: true,
+ idUser: true,
+ User: {
+ select: {
+ name: true,
+ }
+ }
+ }
+ })
+
+
+ const dataHistoryFix = dataHistory.map((item: any) => ({
+ ..._.omit(item, ["User", "createdAt"]),
+ nameUser: item.User?.name,
+ createdAt: item.createdAt
+ }))
+
+
+ const warga = {
+ name: data?.Warga?.name,
+ phone: data?.Warga?.phone,
+ pengaduan: data?.Warga?._count.Pengaduan,
+ pelayanan: data?.Warga?._count.PelayananAjuan,
+ }
+
+ const dataPengaduan = {
+ id: data?.id,
+ noPengaduan: data?.noPengaduan,
+ title: data?.title,
+ detail: data?.detail,
+ location: data?.location,
+ image: data?.image,
+ category: data?.CategoryPengaduan.name,
+ status: data?.status,
+ keterangan: data?.keterangan,
+ createdAt: data?.createdAt,
+ updatedAt: data?.updatedAt,
+ }
+
+ const datafix = {
+ pengaduan: dataPengaduan,
+ history: dataHistoryFix,
+ warga: warga,
+ }
+
+ return datafix
+ }, {
+ body: t.Object({
+ nomerPengaduan: t.String({
+ description: "Nomer pengaduan yg ingin diakses",
+ examples: ["PGD-101225-001", "PGD-101225-002"],
+ error: "Nomer pengaduan harus diisi",
+ }),
+ }),
+ detail: {
+ summary: "Detail Pengaduan Warga By Nomor Pengaduan",
+ description: `tool untuk mendapatkan detail data pengaduan berdasarkan nomor pengaduan`,
+ tags: ["mcp"]
+ }
+ })
;
export default PengaduanRoute