From d7d900d33d48033b59fa689364a371fdd38722c3 Mon Sep 17 00:00:00 2001 From: bipproduction Date: Thu, 9 Oct 2025 17:07:57 +0800 Subject: [PATCH] tamabahan --- prisma/schema.prisma | 19 +++++++ src/server/routes/darmasaba_route.ts | 74 +++++++++++++++++++++++++--- 2 files changed, 86 insertions(+), 7 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 53bfd2b..9ca3ced 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -37,3 +37,22 @@ model Credential { createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } + +model Pengaduan { + id String @id @default(cuid()) + jenis_laporan String + name String? + phone String? + detail String? + status StatusPengaduan @default(diterima) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} + +enum StatusPengaduan { + diterima + antrian + dikerjakan + ditolak + selesai +} diff --git a/src/server/routes/darmasaba_route.ts b/src/server/routes/darmasaba_route.ts index b72568e..3beae86 100644 --- a/src/server/routes/darmasaba_route.ts +++ b/src/server/routes/darmasaba_route.ts @@ -1,9 +1,39 @@ import Elysia, { t } from "elysia"; +import { prisma } from "../lib/prisma"; const url = "https://cld-dkr-makuro-seafile.wibudev.com/api2" const TOKEN = "fa49bf1774cad2ec89d2882ae2c6ac1f5d7df445" const REPO_ID = "de64ff3c-0081-45f3-a5a6-6c799a098649" +const pengaduanDesa: string[] = [ + "Pengaduan Pelayanan Publik Desa", + "Pengaduan Bantuan Sosial (Bansos)", + "Pengaduan Penyalahgunaan Dana Desa", + "Pengaduan Infrastruktur Rusak (jalan, jembatan, saluran air)", + "Pengaduan Lingkungan (sampah, pencemaran, banjir)", + "Pengaduan Keamanan dan Ketertiban", + "Pengaduan Sengketa Tanah Desa", + "Pengaduan Ketenagakerjaan (tenaga kerja lokal, proyek desa)", + "Pengaduan Disiplin Aparat Desa", + "Pengaduan Administrasi Kependudukan (KTP, KK, surat menyurat)", + "Pengaduan Layanan Kesehatan Masyarakat", + "Pengaduan Pendidikan (sekolah, bantuan siswa miskin)", + "Pengaduan Usaha Mikro dan UMKM Desa", + "Pengaduan Kegiatan Bumdes", + "Pengaduan Pungutan Liar atau Gratifikasi", + "Pengaduan Kekerasan Rumah Tangga atau Sosial", + "Pengaduan Pelanggaran Adat dan Norma Sosial", + "Pengaduan Proyek Pembangunan Tidak Transparan", + "Pengaduan Bencana Alam dan Penanganannya", + "Pengaduan Diskriminasi atau Ketidakadilan Sosial", + "Pengaduan Pelanggaran Hak Tanah Kas Desa", + "Pengaduan Penyaluran Air dan Irigasi", + "Pengaduan Akses Internet atau Telekomunikasi Desa", + "Pengaduan Fasilitas Umum Tidak Layak", + "Pengaduan Kegiatan Tidak Berizin di Wilayah Desa" +] as const; + + const DarmasabaRoute = new Elysia({ prefix: "/darmasaba", tags: ["darmasaba"] @@ -189,9 +219,18 @@ const DarmasabaRoute = new Elysia({ description: "get content of file in darmasaba/pengetahuan-umum/" } }) - .post("/buat-laporan", ({ body }) => { + .post("/buat-pengaduan", async ({ body }) => { const { jenis_laporan, name, phone, detail } = body + await prisma.pengaduan.create({ + data: { + jenis_laporan, + detail, + name, + phone + } + }) + return ` ${JSON.stringify(body)} @@ -199,17 +238,38 @@ const DarmasabaRoute = new Elysia({ }, { body: t.Object({ - jenis_laporan: t.String(), + jenis_laporan: t.Union( + pengaduanDesa.map((v) => t.Literal(v)) + ), name: t.String(), phone: t.String(), detail: t.String() }), detail: { - summary: "buat-laporan atau pengaduan", - description: ` - tool untuk membuat laporan atau pengaduan warga kepada desa darmasaba - - ` + summary: "buat-pengaduan atau pelaporan", + description: `tool untuk membuat pengaduan atau pelaporan warga kepada desa darmasaba` + } + }) + .post("/status-pengaduan", async ({ body }) => { + const { name, phone } = body + + const pengaduan = await prisma.pengaduan.findMany({ + where: { + name, + phone + } + }) + + return pengaduan + + }, { + body: t.Object({ + name: t.String(), + phone: t.String() + }), + detail: { + summary: "lihat status pengaduan", + description: "melikat status pengaduan dari user" } })