Tampilan UI Admin PPID IKM & API

This commit is contained in:
2025-06-12 17:40:37 +08:00
parent a1c2821153
commit 1462e1d256
52 changed files with 2719 additions and 797 deletions

View File

@@ -1,6 +1,6 @@
import prisma from "@/lib/prisma";
import path from "path";
import { Context } from "vm";
import { Context } from "elysia";
import fs from "fs/promises";
const potensiDesaDelete = async (context: Context) => {

View File

@@ -11,17 +11,20 @@ type FormCreate = Prisma.GrafikBerdasarkanJenisKelaminGetPayload<{
export default async function grafikBerdasarkanJenisKelaminCreate(context: Context) {
const body = context.body as FormCreate;
await prisma.grafikBerdasarkanJenisKelamin.create({
const created = await prisma.grafikBerdasarkanJenisKelamin.create({
data: {
perempuan: body.perempuan,
laki: body.laki,
},
select: {
id: true,
perempuan: true,
laki: true,
}
});
return {
success: true,
message: "Success create grafik berdasarkan jenis kelamin",
data: {
...body,
},
data: created,
};
}

View File

@@ -0,0 +1,43 @@
import prisma from "@/lib/prisma";
import { Context } from "elysia";
export default async function grafikBerdasarkanJenisKelaminDelete(context: Context) {
const {id} = context.params as {id: string}
try {
const existingData = await prisma.grafikBerdasarkanJenisKelamin.findUnique({
where: {
id: id,
}
})
if (!existingData) {
return {
success: false,
message: "Data tidak ditemukan",
data: null,
}
}
await prisma.grafikBerdasarkanJenisKelamin.delete({
where: {
id: id
}
})
return {
success: true,
message: "Data berhasil dihapus",
data: {
id: id,
deleted: true,
},
}
} catch (error) {
return {
success: false,
message: error instanceof Error ? error.message : "Unknown error",
data: null,
}
}
}

View File

@@ -0,0 +1,52 @@
import prisma from "@/lib/prisma";
export default async function grafikBerdasarakanJenisKelaminFindById(
request: Request,
) {
const url = new URL(request.url);
const pathSegments = url.pathname.split('/');
const id = pathSegments[pathSegments.length - 1];
if (!id) {
return Response.json({
success: false,
message: "ID tidak boleh kosong",
}, { status: 400 });
}
try {
if (typeof id !== 'string') {
return Response.json({
success: false,
message: "ID tidak valid",
}, { status: 400 });
}
const data = await prisma.grafikBerdasarkanJenisKelamin.findUnique({
where: { id },
});
if (!data) {
return Response.json({
success: false,
message: "Data tidak ditemukan",
}, { status: 404 });
}
return Response.json({
success: true,
message: "Berhasil mengambil data berdasarkan ID",
data,
}, { status: 200 });
} catch (e) {
console.error("Find by ID error:", e);
return Response.json({
success: false,
message: "Gagal mengambil data: " + (e instanceof Error ? e.message : 'Unknown error'),
}, {
status: 500,
});
}
}

View File

@@ -1,6 +1,9 @@
import Elysia, { t } from "elysia";
import grafikBerdasarkanJenisKelaminCreate from "./create";
import grafikBerdasarkanJenisKelaminFindMany from "./find-many";
import grafikBerdasarakanJenisKelaminFindById from "./find-by-id";
import grafikBerdasarakanJenisKelaminUpdate from "./update";
import grafikBerdasarkanJenisKelaminDelete from "./del";
const GrafikBerdasarkanJenisKelamin = new Elysia({
@@ -8,10 +11,28 @@ const GrafikBerdasarkanJenisKelamin = new Elysia({
tags: ["PPID/IKM/grafikberdasarkanjeniskelamin"],
})
.get("/find-many", grafikBerdasarkanJenisKelaminFindMany)
.get("/:id", async (context) => {
const response = await grafikBerdasarakanJenisKelaminFindById(new Request(context.request))
return response
})
.put("/:id", grafikBerdasarakanJenisKelaminUpdate, {
params: t.Object({
id: t.String(),
}),
body: t.Object({
perempuan: t.String(),
laki: t.String(),
}),
})
.post("/create", grafikBerdasarkanJenisKelaminCreate, {
body: t.Object({
perempuan: t.String(),
laki: t.String(),
}),
})
.delete("/del/:id", grafikBerdasarkanJenisKelaminDelete, {
params: t.Object({
id: t.String(),
}),
});
export default GrafikBerdasarkanJenisKelamin;

View File

@@ -0,0 +1,49 @@
import prisma from "@/lib/prisma";
import { Context } from "elysia";
export default async function grafikBerdasarakanJenisKelaminUpdate(
context: Context
) {
const id = context.params?.id;
if (!id) {
return {
success: false,
message: "Id tidak ditemukan",
}
}
const {perempuan, laki} = context.body as {
perempuan: string;
laki: string;
}
const existing = await prisma.grafikBerdasarkanJenisKelamin.findUnique({
where: {
id: id,
},
})
if (!existing) {
return {
success: false,
message: "Data tidak ditemukan",
}
}
const updated = await prisma.grafikBerdasarkanJenisKelamin.update({
where: {
id
},
data: {
perempuan: perempuan,
laki: laki,
},
})
return {
success: true,
message: "Data berhasil diupdate",
data: updated,
}
}

View File

@@ -13,19 +13,24 @@ type FormCreate = Prisma.GrafikBerdasarkanUmurGetPayload<{
export async function grafikBerdasarkanUmurCreate(context: Context) {
const body = context.body as FormCreate;
await prisma.grafikBerdasarkanUmur.create({
const created = await prisma.grafikBerdasarkanUmur.create({
data: {
remaja: body.remaja,
dewasa: body.dewasa,
orangtua: body.orangtua,
lansia: body.lansia,
},
select: {
id: true,
remaja: true,
dewasa: true,
orangtua: true,
lansia: true,
}
});
return {
success: true,
message: "Success create grafik berdasarkan umur",
data: {
...body,
},
data: created,
};
}

View File

@@ -0,0 +1,43 @@
import prisma from "@/lib/prisma"
import { Context } from "elysia"
export default async function grafikBerdasarkanUmurDelete(context: Context) {
const {id} = context.params as {id: string}
try {
const existingData = await prisma.grafikBerdasarkanUmur.findUnique({
where: {
id: id,
}
})
if (!existingData) {
return {
success: false,
message: "Data tidak ditemukan",
data: null,
}
}
await prisma.grafikBerdasarkanUmur.delete({
where: {
id: id
}
})
return {
success: true,
message: "Data berhasil dihapus",
data: {
id: id,
deleted: true,
},
}
} catch (error) {
return {
success: false,
message: error instanceof Error ? error.message : "Unknown error",
data: null,
}
}
}

View File

@@ -0,0 +1,53 @@
import prisma from "@/lib/prisma";
export default async function grafikBerdasarakanUmurFindById(request: Request) {
const url = new URL(request.url);
const pathSegments = url.pathname.split("/");
const id = pathSegments[pathSegments.length - 1];
if (!id) {
return Response.json(
{
success: false,
message: "ID tidak boleh kosong",
},
{ status: 400 }
);
}
try {
if (typeof id !== "string") {
return Response.json(
{
success: false,
message: "ID tidak valid",
},
{ status: 400 }
);
}
const data = await prisma.grafikBerdasarkanUmur.findUnique({
where: { id },
});
if (!data) {
return Response.json({
success: false,
message: "Data tidak ditemukan",
data: null,
}, { status: 404 });
}
return Response.json({
success: true,
message: "Berhasil mengambil data berdasarkan ID",
data: data,
}, { status: 200 });
} catch (error) {
console.error("Error fetching grafik berdasarkan umur:", error);
return Response.json({
success: false,
message: error instanceof Error ? error.message : "Unknown error",
}, { status: 500 });
}
}

View File

@@ -1,19 +1,42 @@
import Elysia, { t } from "elysia";
import { grafikBerdasarkanUmurFindMany } from "./find-many";
import { grafikBerdasarkanUmurCreate } from "./create";
import grafikBerdasarakanUmurUpdate from "./update";
import grafikBerdasarakanUmurFindById from "./find-by-id";
import grafikBerdasarkanUmurDelete from "./del";
const GrafikBerdasarkanUmur = new Elysia({
prefix: "/grafikberdasarkanumur",
tags: ["PPID/IKM/grafikberdasarkanumur"]
prefix: "/grafikberdasarkanumur",
tags: ["PPID/IKM/grafikberdasarkanumur"],
})
.get("/find-many", grafikBerdasarkanUmurFindMany)
.post("/create", grafikBerdasarkanUmurCreate, {
body: t.Object({
remaja: t.String(),
dewasa: t.String(),
orangtua: t.String(),
lansia: t.String(),
}),
});
.get("/find-many", grafikBerdasarkanUmurFindMany)
.post("/create", grafikBerdasarkanUmurCreate, {
body: t.Object({
remaja: t.String(),
dewasa: t.String(),
orangtua: t.String(),
lansia: t.String(),
}),
})
.get("/:id", async (context) => {
const response = await grafikBerdasarakanUmurFindById(new Request(context.request))
return response
})
.put("/:id", grafikBerdasarakanUmurUpdate, {
params: t.Object({
id: t.String(),
}),
body: t.Object({
remaja: t.String(),
dewasa: t.String(),
orangtua: t.String(),
lansia: t.String(),
}),
})
.delete("/del/:id", grafikBerdasarkanUmurDelete, {
params: t.Object({
id: t.String(),
}),
});
export default GrafikBerdasarkanUmur;
export default GrafikBerdasarkanUmur;

View File

@@ -0,0 +1,51 @@
import prisma from "@/lib/prisma";
import { Context } from "elysia";
export default async function grafikBerdasarakanUmurUpdate(context: Context) {
const id = context.params?.id;
if (!id) {
return {
success: false,
message: "Id tidak ditemukan",
}
}
const {remaja, dewasa, orangtua, lansia} = context.body as {
remaja: string;
dewasa: string;
orangtua: string;
lansia: string;
}
const existing = await prisma.grafikBerdasarkanUmur.findUnique({
where: {
id: id
}
})
if (!existing) {
return {
success: false,
message: "Grafik tidak ditemukan"
}
}
const updated = await prisma.grafikBerdasarkanUmur.update({
where: {
id: id
},
data: {
remaja: remaja,
dewasa: dewasa,
orangtua: orangtua,
lansia: lansia,
},
})
return {
success: true,
message: "Data berhasil diupdate",
data: updated,
}
}

View File

@@ -11,17 +11,20 @@ type FormCreate = Prisma.IndeksKepuasanMasyarakatGetPayload<{
export default async function grafikHasilKepuasanMasyarakatCreate(context: Context) {
const body = context.body as FormCreate;
await prisma.indeksKepuasanMasyarakat.create({
const created = await prisma.indeksKepuasanMasyarakat.create({
data: {
label: body.label,
kepuasan: body.kepuasan,
},
select: {
id: true,
label: true,
kepuasan: true,
}
});
return {
success: true,
message: "Success create grafik hasil kepuasan masyarakat",
data: {
...body,
},
data: created,
};
}

View File

@@ -0,0 +1,43 @@
import prisma from "@/lib/prisma"
import { Context } from "elysia"
export default async function grafikHasilKepuasanMasyarakatDelete(context: Context) {
const {id} = context.params as {id: string}
try {
const existingData = await prisma.indeksKepuasanMasyarakat.findUnique({
where: {
id: id,
}
})
if (!existingData) {
return {
success: false,
message: "Data tidak ditemukan",
data: null,
}
}
await prisma.indeksKepuasanMasyarakat.delete({
where: {
id: id
}
})
return {
success: true,
message: "Data berhasil dihapus",
data: {
id: id,
deleted: true,
},
}
} catch (error) {
return {
success: false,
message: error instanceof Error ? error.message : "Unknown error",
data: null,
}
}
}

View File

@@ -0,0 +1,46 @@
import prisma from "@/lib/prisma";
export default async function handler(request: Request) {
const url = new URL(request.url);
const pathSegments = url.pathname.split('/');
const id = pathSegments[pathSegments.length - 1];
if (!id) {
return Response.json({
success: false,
message: "ID tidak boleh kosong",
}, { status: 400 });
}
try {
if (typeof id !== 'string') {
return Response.json({
success: false,
message: "ID tidak valid",
}, { status: 400 });
}
const data = await prisma.indeksKepuasanMasyarakat.findUnique({
where: { id },
});
if (!data) {
return Response.json({
success: false,
message: "Data tidak ditemukan",
}, { status: 404 });
}
return Response.json({
success: true,
message: "Berhasil mengambil data berdasarkan ID",
data,
}, { status: 200 });
} catch (e) {
console.error("Find by ID error:", e);
return Response.json({
success: false,
message: "Gagal mengambil data: " + (e instanceof Error ? e.message : 'Unknown error'),
}, { status: 500 });
}
}

View File

@@ -1,17 +1,38 @@
import Elysia, { t } from "elysia";
import grafikHasilKepuasanMasyarakatCreate from "./create";
import grafikHasilKepuasanMasyarakatFindMany from "./find-many";
import grafikHasilKepuasanMasyarakatFindById from "./find-by-id";
import grafikHasilKepuasanMasyarakatUpdate from "./update";
import grafikHasilKepuasanMasyarakatDelete from "./del";
const GrafikHasilKepuasanMasyarakat = new Elysia({
prefix: "/grafikhasilkepuasamanmasyarakat",
tags: ["PPID/IKM/grafikhasilkepuasanmasyarakat"],
})
.get("/find-many", grafikHasilKepuasanMasyarakatFindMany)
.get("/:id", async (context) => {
const response = await grafikHasilKepuasanMasyarakatFindById(new Request(context.request))
return response
})
.put("/:id", grafikHasilKepuasanMasyarakatUpdate, {
params: t.Object({
id: t.String(),
}),
body: t.Object({
label: t.String(),
kepuasan: t.String(),
}),
})
.post("/create", grafikHasilKepuasanMasyarakatCreate, {
body: t.Object({
label: t.String(),
kepuasan: t.String(),
}),
})
.delete("/del/:id", grafikHasilKepuasanMasyarakatDelete, {
params: t.Object({
id: t.String(),
}),
});
export default GrafikHasilKepuasanMasyarakat;

View File

@@ -0,0 +1,45 @@
import prisma from "@/lib/prisma";
import { Context } from "elysia";
export default async function grafikHasilKepuasanMasyarakatUpdate(context: Context) {
const id = context.params?.id;
if (!id) {
return {
success: false,
message: "Id tidak ditemukan",
}
}
const {label, kepuasan} = context.body as {
label: string;
kepuasan: string;
}
const existing = await prisma.indeksKepuasanMasyarakat.findUnique({
where: {
id: id,
},
})
if (!existing) {
return {
success: false,
message: "Data tidak ditemukan",
}
}
const updated = await prisma.indeksKepuasanMasyarakat.update({
where: { id },
data: {
label,
kepuasan,
},
})
return {
success: true,
message: "Data berhasil diupdate",
data: updated,
}
}

View File

@@ -2,30 +2,16 @@ import prisma from "@/lib/prisma";
import { Prisma } from "@prisma/client";
import { Context } from "elysia";
type FormCreate = Prisma.GrafikBerdasarkanRespondenGetPayload<{
select: {
sangatbaik: true;
baik: true;
kurangbaik: true;
tidakbaik: true
};
}>;
export default async function grafikRespondenCreate(context: Context) {
const body = context.body as FormCreate;
const body = context.body as Prisma.GrafikBerdasarkanRespondenCreateInput;
await prisma.grafikBerdasarkanResponden.create({
data: {
sangatbaik: body.sangatbaik,
baik: body.baik,
kurangbaik: body.kurangbaik,
tidakbaik: body.tidakbaik,
},
const created = await prisma.grafikBerdasarkanResponden.create({
data: body,
});
return {
success: true,
message: "Success create grafik berdasarkan responden",
data: {
...body,
},
data: created, // ini termasuk id
};
}
}

View File

@@ -0,0 +1,40 @@
import prisma from "@/lib/prisma"
import { Context } from "elysia"
export default async function grafikRespondenDelete(context: Context) {
const { id } = context.params as { id: string }
try {
const existingData = await prisma.grafikBerdasarkanResponden.findUnique({
where: {
id: id,
}
})
if (!existingData) {
return {
success: false,
message: "Data tidak ditemukan",
data: null,
}
}
await prisma.grafikBerdasarkanResponden.delete({
where: {
id: id
}
})
return {
success: true,
message: "Data berhasil dihapus",
data: null,
}
} catch (error) {
return {
success: false,
message: error instanceof Error ? error.message : "Unknown error",
data: null,
}
}
}

View File

@@ -0,0 +1,48 @@
import prisma from "@/lib/prisma";
export default async function grafikRespondenFindById(request: Request) {
const url = new URL(request.url);
const pathSegments = url.pathname.split('/');
const id = pathSegments[pathSegments.length - 1];
if (!id ) {
return Response.json({
success: false,
message: "ID tidak boleh kosong",
}, { status: 400 });
}
try {
if (typeof id !== 'string') {
return Response.json({
success: false,
message: "ID tidak valid",
}, { status: 400 });
}
const data = await prisma.grafikBerdasarkanResponden.findUnique({
where: { id },
});
if (!data) {
return Response.json({
success: false,
message: "Data tidak ditemukan",
}, { status: 404 });
}
return Response.json({
success: true,
message: "Berhasil mengambil data berdasarkan ID",
data,
}, { status: 200 });
} catch (e) {
console.error("Find by ID error:", e);
return Response.json({
success: false,
message: "Gagal mengambil data: " + (e instanceof Error ? e.message : 'Unknown error'),
}, {
status: 500,
});
}
}

View File

@@ -1,11 +1,29 @@
import Elysia, { t } from "elysia";
import grafikRespondenCreate from "./create";
import grafikRespondenFindMany from "./find-many";
import grafikRespondenFindById from "./find-by-id";
import grafikRespondenUpdate from "./update";
import grafikRespondenDelete from "./del";
const GrafikBerdasarkanResponden = new Elysia({
prefix: "/grafikberdasarkanresponden",
tags: ["PPID/IKM/grafikberdasarkanresponden"]
})
.get("/:id", async (context) => {
const response = await grafikRespondenFindById(new Request(context.request))
return response
})
.put("/:id", grafikRespondenUpdate, {
params: t.Object({
id: t.String(),
}),
body: t.Object({
sangatbaik: t.String(),
baik: t.String(),
kurangbaik: t.String(),
tidakbaik: t.String(),
}),
})
.get("/find-many", grafikRespondenFindMany)
.post("/create", grafikRespondenCreate, {
body: t.Object({
@@ -15,6 +33,11 @@ const GrafikBerdasarkanResponden = new Elysia({
tidakbaik: t.String(),
}),
})
.delete("/del/:id", grafikRespondenDelete, {
params: t.Object({
id: t.String(),
}),
})
export default GrafikBerdasarkanResponden

View File

@@ -0,0 +1,49 @@
import prisma from "@/lib/prisma";
import { Context } from "elysia";
export default async function grafikRespondenUpdate(context: Context) {
const id = context.params?.id;
if(!id) {
return {
success: false,
message: "ID tidak ditemukan"
}
}
const {sangatbaik, baik, kurangbaik, tidakbaik} = context.body as {
sangatbaik: string;
baik: string;
kurangbaik: string;
tidakbaik: string;
}
const existing = await prisma.grafikBerdasarkanResponden.findUnique({
where: {
id: id,
},
})
if (!existing) {
return {
success: false,
message: "Data tidak ditemukan",
}
}
const updated = await prisma.grafikBerdasarkanResponden.update({
where: { id },
data: {
sangatbaik,
baik,
kurangbaik,
tidakbaik,
},
})
return {
success: true,
message: "Data berhasil diupdate",
data: updated,
}
}