diff --git a/src/app/api/monitoring/[[...slug]]/route.ts b/src/app/api/monitoring/[[...slug]]/route.ts index 7ca0168..8d0d83e 100644 --- a/src/app/api/monitoring/[[...slug]]/route.ts +++ b/src/app/api/monitoring/[[...slug]]/route.ts @@ -803,6 +803,143 @@ const MonitoringServer = new Elysia({ prefix: "/api/monitoring" }) }, } ) + .get("/list-group-villages", async ({ query, set }) => { + const { id } = query; + try { + const data = await prisma.group.findMany({ + where: { + idVillage: id, + }, + select: { + id: true, + name: true, + } + }) + + if (!data) { + set.status = 404; + return { + success: false, + message: "Desa tidak ditemukan", + data: null, + }; + } + + return { + success: true, + message: "Berhasil mendapatkan data", + data: data, + }; + } catch (error) { + console.error("[detail-villages] list-group-villages error:", error); + set.status = 500; + return { + success: false, + message: "Terjadi kesalahan pada server", + data: null, + }; + } + }, + { + query: t.Object({ + id: t.Optional(t.String({ description: "ID desa" })), + }), + detail: { + summary: "List Group Villages", + description: "Menu Detail Villages - Mendapatkan list group untuk dropdown.", + tags: ["detail-villages"], + }, + } + ) + .get("/list-position-villages", async ({ query, set }) => { + const { id } = query; + try { + const data = await prisma.position.findMany({ + where: { + idGroup: id, + }, + select: { + id: true, + name: true, + } + }) + + if (!data) { + set.status = 404; + return { + success: false, + message: "Posisi tidak ditemukan", + data: null, + }; + } + + return { + success: true, + message: "Berhasil mendapatkan data", + data: data, + }; + } catch (error) { + console.error("[detail-villages] list-position-villages error:", error); + set.status = 500; + return { + success: false, + message: "Terjadi kesalahan pada server", + data: null, + }; + } + }, + { + query: t.Object({ + id: t.Optional(t.String({ description: "ID group" })), + }), + detail: { + summary: "List Position Villages", + description: "Menu Detail Villages - Mendapatkan list jabatan untuk dropdown.", + tags: ["detail-villages"], + }, + } + ) + .get("/list-userrole-villages", async ({ query, set }) => { + try { + const data = await prisma.userRole.findMany({ + select: { + id: true, + name: true, + } + }) + + if (!data) { + set.status = 404; + return { + success: false, + message: "Role tidak ditemukan", + data: null, + }; + } + + return { + success: true, + message: "Berhasil mendapatkan data", + data: data, + }; + } catch (error) { + console.error("[detail-villages] list-userrole-villages error:", error); + set.status = 500; + return { + success: false, + message: "Terjadi kesalahan pada server", + data: null, + }; + } + }, + { + detail: { + summary: "List User Role", + description: "Menu Detail Villages - Mendapatkan list role untuk dropdown.", + tags: ["detail-villages"], + }, + } + ) .post("/edit-villages", async ({ body, set }) => { const { id, name, desc } = body; @@ -1085,6 +1222,11 @@ const MonitoringServer = new Elysia({ prefix: "/api/monitoring" }) email: true, isWithoutOTP: true, isActive: true, + idUserRole: true, + idVillage: true, + idGroup: true, + idPosition: true, + gender: true, UserRole: { select: { name: true, @@ -1163,12 +1305,17 @@ const MonitoringServer = new Elysia({ prefix: "/api/monitoring" }) nik: item.nik, phone: item.phone, email: item.email, + gender: item.gender, isWithoutOTP: item.isWithoutOTP, isActive: item.isActive, role: item.UserRole?.name, village: item.Village?.name, group: item.Group?.name, position: item.Position?.name, + idUserRole: item.idUserRole, + idVillage: item.idVillage, + idGroup: item.idGroup, + idPosition: item.idPosition, })); return {