tamabahan

This commit is contained in:
bipproduction
2025-10-09 17:07:57 +08:00
parent 8387cd28da
commit d7d900d33d
2 changed files with 86 additions and 7 deletions

View File

@@ -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
}

View File

@@ -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/<file_name>"
}
})
.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"
}
})