From ea7a2ba98c892a6dbd756128b9de511cb1fdb4bf Mon Sep 17 00:00:00 2001 From: lukman Date: Fri, 26 Jul 2024 17:44:54 +0800 Subject: [PATCH 1/2] api : add api position api group and api users --- api.http | 21 +++++++----- src/app/api/annoucement/get/route.ts | 5 +++ src/app/api/annoucement/post/route.ts | 5 +++ src/app/api/group/get/route.ts | 3 +- src/app/api/group/post/route.ts | 3 +- src/app/api/user/get/route.ts | 7 ++++ src/app/api/user/post/route.ts | 7 ++++ .../announcement/api/api_announcement.ts | 15 ++++++++ src/module/announcement/api/api_index.ts | 34 +++++++++++++++++++ .../api/get/getAllAnnouncement.ts | 4 +++ .../api/get/getOneAnnouncement.ts | 5 +++ .../api/post/createAnnouncement.ts | 5 +++ .../api/post/deleteAnnouncement.ts | 5 +++ .../api/post/updateAnnouncement.ts | 5 +++ src/module/announcement/index.ts | 10 +++--- src/module/group/api/api_group.ts | 3 +- src/module/group/api/api_index.ts | 4 +-- src/module/group/api/get/getOneGroup.ts | 9 ++--- src/module/group/api/get/listGroup.ts | 7 +++- src/module/position/api/api_position.ts | 3 +- src/module/position/api/get/getAllPosition.ts | 6 +++- src/module/position/api/get/getOnePosition.ts | 8 +++-- src/module/user/api/api_index.ts | 34 +++++++++++++++++++ src/module/user/api/api_user.ts | 15 ++++++++ src/module/user/api/get/getAllUser.ts | 31 +++++++++++++++++ src/module/user/api/get/getOneUser.ts | 9 +++++ src/module/user/api/post/createUser.ts | 9 +++++ src/module/user/api/post/deleteUser.ts | 9 +++++ src/module/user/api/post/updateUser.ts | 9 +++++ src/module/user/index.ts | 6 ++-- 30 files changed, 267 insertions(+), 29 deletions(-) create mode 100644 src/app/api/annoucement/get/route.ts create mode 100644 src/app/api/annoucement/post/route.ts create mode 100644 src/app/api/user/get/route.ts create mode 100644 src/app/api/user/post/route.ts create mode 100644 src/module/announcement/api/api_announcement.ts create mode 100644 src/module/announcement/api/api_index.ts create mode 100644 src/module/announcement/api/get/getAllAnnouncement.ts create mode 100644 src/module/announcement/api/get/getOneAnnouncement.ts create mode 100644 src/module/announcement/api/post/createAnnouncement.ts create mode 100644 src/module/announcement/api/post/deleteAnnouncement.ts create mode 100644 src/module/announcement/api/post/updateAnnouncement.ts create mode 100644 src/module/user/api/api_index.ts create mode 100644 src/module/user/api/api_user.ts create mode 100644 src/module/user/api/get/getAllUser.ts create mode 100644 src/module/user/api/get/getOneUser.ts create mode 100644 src/module/user/api/post/createUser.ts create mode 100644 src/module/user/api/post/deleteUser.ts create mode 100644 src/module/user/api/post/updateUser.ts diff --git a/api.http b/api.http index 3684308..5e4e8bc 100644 --- a/api.http +++ b/api.http @@ -9,7 +9,7 @@ Content-Type: application/json // GROUP ### -GET http://localhost:3000/api/group/get?path=list-group HTTP/1.1 +GET http://localhost:3000/api/group/get?path=list-group&villageId=121212 HTTP/1.1 ### POST http://localhost:3000/api/group/post?path=create-group HTTP/1.1 @@ -20,7 +20,6 @@ Content-Type: application/json "idVillage": "121212" } - ### POST http://localhost:3000/api/group/post?path=update-group HTTP/1.1 Content-Type: application/json @@ -41,7 +40,7 @@ Content-Type: application/json } ### -GET http://localhost:3000/api/group/get?path=get-one-group HTTP/1.1 +GET http://localhost:3000/api/group/get?path=get-one-group&groupId=3 HTTP/1.1 // VILLAGE @@ -83,18 +82,18 @@ Content-Type: application/json // POSITION ### -GET http://localhost:3000/api/position/get?path=get-all-position HTTP/1.1 +GET http://localhost:3000/api/position/get?path=get-all-position&groupID=2 HTTP/1.1 ### -GET http://localhost:3000/api/position/get?path=get-one-position HTTP/1.1 +GET http://localhost:3000/api/position/get?path=get-one-position&positionId=clz24bff70001w01in64dd9ea HTTP/1.1 ### POST http://localhost:3000/api/position/post?path=create-position HTTP/1.1 Content-Type: application/json { - "name": "Wakil Bendahara 10", - "idGroup": "2" + "name": "Anggota", + "idGroup": "1" } ### @@ -113,4 +112,10 @@ Content-Type: application/json { "id": "1" -} \ No newline at end of file +} + + +// USERS + +### +GET http://localhost:3000/api/user/get?path=get-all-users&roleID=dev&positionID=null&villageID=null&groupID=null HTTP/1.1 \ No newline at end of file diff --git a/src/app/api/annoucement/get/route.ts b/src/app/api/annoucement/get/route.ts new file mode 100644 index 0000000..5c723fd --- /dev/null +++ b/src/app/api/annoucement/get/route.ts @@ -0,0 +1,5 @@ +import { apiAnnouncement } from "@/module/announcement"; + +export async function GET(req: Request) { + return apiAnnouncement(req, "GET") +} \ No newline at end of file diff --git a/src/app/api/annoucement/post/route.ts b/src/app/api/annoucement/post/route.ts new file mode 100644 index 0000000..e9f42d0 --- /dev/null +++ b/src/app/api/annoucement/post/route.ts @@ -0,0 +1,5 @@ +import { apiAnnouncement } from "@/module/announcement"; + +export async function POST(req: Request) { + return apiAnnouncement(req, "POST"); +} diff --git a/src/app/api/group/get/route.ts b/src/app/api/group/get/route.ts index 48173b7..d491dc6 100644 --- a/src/app/api/group/get/route.ts +++ b/src/app/api/group/get/route.ts @@ -1,5 +1,6 @@ import { apiGroup } from "@/module/group"; +import { NextRequest } from "next/server"; -export async function GET(req: Request) { +export async function GET(req: NextRequest) { return apiGroup(req, "GET") } \ No newline at end of file diff --git a/src/app/api/group/post/route.ts b/src/app/api/group/post/route.ts index 9d58e5f..3a96274 100644 --- a/src/app/api/group/post/route.ts +++ b/src/app/api/group/post/route.ts @@ -1,5 +1,6 @@ import { apiGroup } from "@/module/group"; +import { NextRequest } from "next/server"; -export async function POST(req: Request) { +export async function POST(req: NextRequest) { return apiGroup(req, "POST") } \ No newline at end of file diff --git a/src/app/api/user/get/route.ts b/src/app/api/user/get/route.ts new file mode 100644 index 0000000..97c613e --- /dev/null +++ b/src/app/api/user/get/route.ts @@ -0,0 +1,7 @@ + +import { apiUser } from "@/module/user"; +import { NextRequest } from "next/server"; + +export async function GET(req: NextRequest) { + return apiUser(req, "GET") +} \ No newline at end of file diff --git a/src/app/api/user/post/route.ts b/src/app/api/user/post/route.ts new file mode 100644 index 0000000..ee604fb --- /dev/null +++ b/src/app/api/user/post/route.ts @@ -0,0 +1,7 @@ + +import { apiUser } from "@/module/user"; +import { NextRequest } from "next/server"; + +export async function POST(req: NextRequest) { + return apiUser(req, "POST") +} \ No newline at end of file diff --git a/src/module/announcement/api/api_announcement.ts b/src/module/announcement/api/api_announcement.ts new file mode 100644 index 0000000..87aa78b --- /dev/null +++ b/src/module/announcement/api/api_announcement.ts @@ -0,0 +1,15 @@ +import { API_INDEX_ANNOUNCEMENT } from "./api_index"; + +type Method = "GET" | "POST"; +export async function apiAnnouncement(req: Request, method: Method) { + const { searchParams } = new URL(req.url); + const path = searchParams.get("path"); + const act = API_INDEX_ANNOUNCEMENT.find( + (v) => v.path === path && v.method === method + ); + if (!path) + return Response.json({ message: "page not found" }, { status: 404 }); + if (act) return act.bin(req); + + return Response.json({ message: "404" }); +} diff --git a/src/module/announcement/api/api_index.ts b/src/module/announcement/api/api_index.ts new file mode 100644 index 0000000..e8ce26e --- /dev/null +++ b/src/module/announcement/api/api_index.ts @@ -0,0 +1,34 @@ +import { getAllAnnouncement } from "./get/getAllAnnouncement"; +import { getOneAnnouncement } from "./get/getOneAnnouncement"; +import { createAnnouncement } from "./post/createAnnouncement"; +import { deleteAnnouncement } from "./post/deleteAnnouncement"; +import { updateAnnouncement } from "./post/updateAnnouncement"; + +export const API_INDEX_ANNOUNCEMENT = [ + { + path: "get-all-announcement", + method: "GET", + bin: getAllAnnouncement, + }, + { + path: "get-one-announcement", + method: "GET", + bin: getOneAnnouncement, + }, + { + path: "create-announcement", + method: "POST", + bin: createAnnouncement, + }, + { + path: "update-announcement", + method: "POST", + bin: updateAnnouncement, + }, + { + path: "delete-announcement", + method: "POST", + bin: deleteAnnouncement, + }, + ]; + \ No newline at end of file diff --git a/src/module/announcement/api/get/getAllAnnouncement.ts b/src/module/announcement/api/get/getAllAnnouncement.ts new file mode 100644 index 0000000..f53c781 --- /dev/null +++ b/src/module/announcement/api/get/getAllAnnouncement.ts @@ -0,0 +1,4 @@ +export async function getAllAnnouncement(req: Request) { + try { + } catch (error) {} +} diff --git a/src/module/announcement/api/get/getOneAnnouncement.ts b/src/module/announcement/api/get/getOneAnnouncement.ts new file mode 100644 index 0000000..d718982 --- /dev/null +++ b/src/module/announcement/api/get/getOneAnnouncement.ts @@ -0,0 +1,5 @@ +export async function getOneAnnouncement(req: Request) { + try { + } catch (error) {} + } + \ No newline at end of file diff --git a/src/module/announcement/api/post/createAnnouncement.ts b/src/module/announcement/api/post/createAnnouncement.ts new file mode 100644 index 0000000..1718450 --- /dev/null +++ b/src/module/announcement/api/post/createAnnouncement.ts @@ -0,0 +1,5 @@ +export async function createAnnouncement(req: Request) { + try { + } catch (error) {} + } + \ No newline at end of file diff --git a/src/module/announcement/api/post/deleteAnnouncement.ts b/src/module/announcement/api/post/deleteAnnouncement.ts new file mode 100644 index 0000000..9b06630 --- /dev/null +++ b/src/module/announcement/api/post/deleteAnnouncement.ts @@ -0,0 +1,5 @@ +export async function deleteAnnouncement(req: Request) { + try { + } catch (error) {} + } + \ No newline at end of file diff --git a/src/module/announcement/api/post/updateAnnouncement.ts b/src/module/announcement/api/post/updateAnnouncement.ts new file mode 100644 index 0000000..c5e32d4 --- /dev/null +++ b/src/module/announcement/api/post/updateAnnouncement.ts @@ -0,0 +1,5 @@ +export async function updateAnnouncement(req: Request) { + try { + } catch (error) {} + } + \ No newline at end of file diff --git a/src/module/announcement/index.ts b/src/module/announcement/index.ts index 297f4d5..63e211d 100644 --- a/src/module/announcement/index.ts +++ b/src/module/announcement/index.ts @@ -1,9 +1,11 @@ +import { apiAnnouncement } from "./api/api_announcement"; import ViewCreateAnnouncement from "./view/view_create_announcement"; import ViewDetailAnnouncement from "./view/view_detail_anouncement"; import ViewEditAnnouncement from "./view/view_edit_announcement"; import ViewListAnnouncement from "./view/view_list_announcement"; -export { ViewListAnnouncement } -export { ViewCreateAnnouncement } -export { ViewDetailAnnouncement } -export { ViewEditAnnouncement } \ No newline at end of file +export { ViewListAnnouncement }; +export { ViewCreateAnnouncement }; +export { ViewDetailAnnouncement }; +export { ViewEditAnnouncement }; +export { apiAnnouncement }; diff --git a/src/module/group/api/api_group.ts b/src/module/group/api/api_group.ts index c6721cd..3e9f68f 100644 --- a/src/module/group/api/api_group.ts +++ b/src/module/group/api/api_group.ts @@ -1,7 +1,8 @@ +import { NextRequest } from "next/server"; import { API_INDEX_GROUP } from "./api_index"; type Method = "GET" | "POST"; -export async function apiGroup(req: Request, method: Method) { +export async function apiGroup(req: NextRequest, method: Method) { const { searchParams } = new URL(req.url); const path = searchParams.get("path"); const act = API_INDEX_GROUP.find((v) => v.path === path && v.method === method); diff --git a/src/module/group/api/api_index.ts b/src/module/group/api/api_index.ts index 52f7fa0..f447967 100644 --- a/src/module/group/api/api_index.ts +++ b/src/module/group/api/api_index.ts @@ -1,5 +1,5 @@ import { getOneGroup } from "./get/getOneGroup"; -import { listGroup } from "./get/listGroup"; +import { listGroups } from "./get/listGroup"; import { createGroup } from "./post/createGroup"; import { deleteGroup } from "./post/deleteGroup"; import { updateGroup } from "./post/updateGroup"; @@ -8,7 +8,7 @@ export const API_INDEX_GROUP = [ { path: "list-group", method: "GET", - bin: listGroup, + bin: listGroups, }, { path: "create-group", diff --git a/src/module/group/api/get/getOneGroup.ts b/src/module/group/api/get/getOneGroup.ts index b7cb0f8..1a4aca9 100644 --- a/src/module/group/api/get/getOneGroup.ts +++ b/src/module/group/api/get/getOneGroup.ts @@ -1,12 +1,13 @@ import { prisma } from "@/module/_global"; +import { NextRequest } from "next/server"; -export async function getOneGroup(req: Request): Promise { +export async function getOneGroup(req: NextRequest): Promise { try { - // const groupId = req.params.id; - const groupId = "clz0v4kce0009e6mukfhzmyzb"; + const searchParams = req.nextUrl.searchParams + const groupId = searchParams.get('groupId'); const getOne = await prisma.group.findUnique({ where: { - id: groupId, + id: String(groupId), }, select: { id: true, diff --git a/src/module/group/api/get/listGroup.ts b/src/module/group/api/get/listGroup.ts index 2e242e0..f33e948 100644 --- a/src/module/group/api/get/listGroup.ts +++ b/src/module/group/api/get/listGroup.ts @@ -1,10 +1,15 @@ import { prisma } from "@/module/_global"; +import { NextRequest } from "next/server"; -export async function listGroup(req: Request): Promise { +export async function listGroups(req: NextRequest): Promise { + try { + const searchParams = req.nextUrl.searchParams + const villaId = searchParams.get('villageId'); const groups = await prisma.group.findMany({ where: { isActive: true, + idVillage: String(villaId), }, select: { id: true, diff --git a/src/module/position/api/api_position.ts b/src/module/position/api/api_position.ts index d9b984a..2651eb5 100644 --- a/src/module/position/api/api_position.ts +++ b/src/module/position/api/api_position.ts @@ -1,8 +1,9 @@ +import { NextRequest } from "next/server"; import { API_INDEX_POSITION } from "./api_index"; type Method = "GET" | "POST"; -export async function apiPosition(req: Request, method: Method) { +export async function apiPosition(req: NextRequest, method: Method) { const { searchParams } = new URL(req.url); const path = searchParams.get("path"); const act = API_INDEX_POSITION.find((v) => v.path === path && v.method === method); diff --git a/src/module/position/api/get/getAllPosition.ts b/src/module/position/api/get/getAllPosition.ts index 476a32a..8e57673 100644 --- a/src/module/position/api/get/getAllPosition.ts +++ b/src/module/position/api/get/getAllPosition.ts @@ -1,9 +1,13 @@ import { prisma } from "@/module/_global"; +import { NextRequest } from "next/server"; -export async function getAllPosition(req: Request) { +export async function getAllPosition(req: NextRequest) { try { + const searchParams = req.nextUrl.searchParams + const groupID = searchParams.get('groupID'); const positions = await prisma.position.findMany({ where: { + idGroup: String(groupID), isActive: true, }, select: { diff --git a/src/module/position/api/get/getOnePosition.ts b/src/module/position/api/get/getOnePosition.ts index c499f62..6246a05 100644 --- a/src/module/position/api/get/getOnePosition.ts +++ b/src/module/position/api/get/getOnePosition.ts @@ -1,11 +1,13 @@ import { prisma } from "@/module/_global"; +import { NextRequest } from "next/server"; -export async function getOnePosition(req: Request) { +export async function getOnePosition(req: NextRequest) { try { - const positionId = "2"; + const searchParams = req.nextUrl.searchParams + const positionId = searchParams.get('positionId'); const getOne = await prisma.position.findUnique({ where: { - id: positionId, + id: String(positionId), }, select: { id: true, diff --git a/src/module/user/api/api_index.ts b/src/module/user/api/api_index.ts new file mode 100644 index 0000000..d5b5ff1 --- /dev/null +++ b/src/module/user/api/api_index.ts @@ -0,0 +1,34 @@ + +import { getAllUser } from "./get/getAllUser"; +import { getOneUser } from "./get/getOneUser"; +import { updateUser } from "./post/updateUser"; +import { deleteUser } from "./post/deleteUser"; +import { createUser } from "./post/createUser"; + +export const API_INDEX_USER = [ + { + path: "get-all-users", + method: "GET", + bin: getAllUser, + }, + { + path: "get-one-users", + method: "GET", + bin: getOneUser, + }, + { + path: "create-users", + method: "POST", + bin: createUser, + }, + { + path: "update-users", + method: "POST", + bin: updateUser, + }, + { + path: "delete-users", + method: "POST", + bin: deleteUser, + }, + ]; \ No newline at end of file diff --git a/src/module/user/api/api_user.ts b/src/module/user/api/api_user.ts new file mode 100644 index 0000000..fd90cd6 --- /dev/null +++ b/src/module/user/api/api_user.ts @@ -0,0 +1,15 @@ +import { NextRequest } from "next/server"; +import { API_INDEX_USER } from "./api_index"; + + +type Method = "GET" | "POST"; +export async function apiUser(req: NextRequest, method: Method) { + const { searchParams } = new URL(req.url); + const path = searchParams.get("path"); + const act = API_INDEX_USER.find((v) => v.path === path && v.method === method); + if (!path) + return Response.json({ message: "page not found" }, { status: 404 }); + if (act) return act.bin(req); + + return Response.json({ message: "404" }); + } \ No newline at end of file diff --git a/src/module/user/api/get/getAllUser.ts b/src/module/user/api/get/getAllUser.ts new file mode 100644 index 0000000..66d92d7 --- /dev/null +++ b/src/module/user/api/get/getAllUser.ts @@ -0,0 +1,31 @@ +import { prisma } from "@/module/_global"; +import { NextRequest } from "next/server"; + +export async function getAllUser(req: NextRequest) { + try { + const searchParams = req.nextUrl.searchParams; + + const users = await prisma.user.findMany({ + where: { + isActive: true, + idUserRole: String(searchParams.get("roleID")), + idPosition: String(searchParams.get("positionID")), + idVillage: String(searchParams.get("villageID")), + idGroup: String(searchParams.get("groupID")), + }, + select: { + id: true, + nik: true, + name: true, + phone: true, + email: true, + gender: true, + }, + }); + + return Response.json(users); + } catch (error) { + console.error(error); + return Response.json({ message: "Internal Server Error" }, { status: 500 }); + } +} diff --git a/src/module/user/api/get/getOneUser.ts b/src/module/user/api/get/getOneUser.ts new file mode 100644 index 0000000..e3e3bd1 --- /dev/null +++ b/src/module/user/api/get/getOneUser.ts @@ -0,0 +1,9 @@ +import { NextRequest } from "next/server"; + +export async function getOneUser(req: NextRequest) { + try { + + } catch (error) { + + } +} \ No newline at end of file diff --git a/src/module/user/api/post/createUser.ts b/src/module/user/api/post/createUser.ts new file mode 100644 index 0000000..d7cb9e3 --- /dev/null +++ b/src/module/user/api/post/createUser.ts @@ -0,0 +1,9 @@ +import { NextRequest } from "next/server"; + +export async function createUser(req: NextRequest) { + try { + + } catch (error) { + + } +} \ No newline at end of file diff --git a/src/module/user/api/post/deleteUser.ts b/src/module/user/api/post/deleteUser.ts new file mode 100644 index 0000000..fac4644 --- /dev/null +++ b/src/module/user/api/post/deleteUser.ts @@ -0,0 +1,9 @@ +import { NextRequest } from "next/server"; + +export async function deleteUser(req: NextRequest) { + try { + + } catch (error) { + + } +} \ No newline at end of file diff --git a/src/module/user/api/post/updateUser.ts b/src/module/user/api/post/updateUser.ts new file mode 100644 index 0000000..0508760 --- /dev/null +++ b/src/module/user/api/post/updateUser.ts @@ -0,0 +1,9 @@ +import { NextRequest } from "next/server"; + +export async function updateUser(req: NextRequest) { + try { + + } catch (error) { + + } +} \ No newline at end of file diff --git a/src/module/user/index.ts b/src/module/user/index.ts index 5e7ed69..014bb90 100644 --- a/src/module/user/index.ts +++ b/src/module/user/index.ts @@ -1,5 +1,7 @@ +import { apiUser } from "./api/api_user"; import ViewEditProfile from "./profile/view/view_edit_profile"; import ViewProfile from "./profile/view/view_profile"; -export { ViewProfile } -export { ViewEditProfile } \ No newline at end of file +export { ViewProfile }; +export { ViewEditProfile }; +export { apiUser }; From 1a80ed184c77e1d705d81d649f12e850508a547d Mon Sep 17 00:00:00 2001 From: lukman Date: Mon, 29 Jul 2024 10:45:10 +0800 Subject: [PATCH 2/2] api : add api users --- api.http | 47 +++++++++++++++++++++++++- src/app/api/position/get/route.ts | 3 +- src/app/api/position/post/route.ts | 3 +- src/module/user/api/get/getAllUser.ts | 13 ++++--- src/module/user/api/get/getOneUser.ts | 31 +++++++++++++---- src/module/user/api/post/createUser.ts | 38 +++++++++++++++++---- src/module/user/api/post/deleteUser.ts | 30 ++++++++++++---- src/module/user/api/post/updateUser.ts | 39 +++++++++++++++++---- 8 files changed, 173 insertions(+), 31 deletions(-) diff --git a/api.http b/api.http index 5e4e8bc..20d35c0 100644 --- a/api.http +++ b/api.http @@ -118,4 +118,49 @@ Content-Type: application/json // USERS ### -GET http://localhost:3000/api/user/get?path=get-all-users&roleID=dev&positionID=null&villageID=null&groupID=null HTTP/1.1 \ No newline at end of file +GET http://localhost:3000/api/user/get?path=get-all-users&roleID=dev&villageID=121212&groupID=2&positionID=clz24bff70001w01in64dd9ea HTTP/1.1 + +### +GET http://localhost:3000/api/user/get?path=get-one-users&userID=devAmalia HTTP/1.1 + +### +POST http://localhost:3000/api/user/post?path=create-users HTTP/1.1 +Content-Type: application/json + +{ + "idUserRole": "user", + "idVillage": "121212", + "idGroup": "2", + "idPosition": "clz24bff70001w01in64dd9ea", + "nik": "53239236727329", + "name": "coba user", + "email": "cobauser@gmail.com", + "phone": "07319031009", + "gender": "M" +} + +### +POST http://localhost:3000/api/user/post?path=update-users HTTP/1.1 +Content-Type: application/json + +{ + "id": "clz6dq88e0001b3mlyl4vjaf8", + "idUserRole": "user", + "idVillage": "121212", + "idGroup": "2", + "idPosition": "clz24bff70001w01in64dd9ea", + "nik": "53239236727329", + "name": "coba user edit", + "email": "cobauser@gmail.com", + "phone": "07319031009", + "gender": "M" +} + +### +POST http://localhost:3000/api/user/post?path=delete-users HTTP/1.1 +Content-Type: application/json + +{ + "id": "clz6dq88e0001b3mlyl4vjaf8" +} + diff --git a/src/app/api/position/get/route.ts b/src/app/api/position/get/route.ts index 2944569..9703a3e 100644 --- a/src/app/api/position/get/route.ts +++ b/src/app/api/position/get/route.ts @@ -1,5 +1,6 @@ import { apiPosition } from "@/module/position"; +import { NextRequest } from "next/server"; -export async function GET(req: Request) { +export async function GET(req: NextRequest) { return apiPosition(req, "GET"); } diff --git a/src/app/api/position/post/route.ts b/src/app/api/position/post/route.ts index 4dd849e..178ff3e 100644 --- a/src/app/api/position/post/route.ts +++ b/src/app/api/position/post/route.ts @@ -1,5 +1,6 @@ import { apiPosition } from "@/module/position"; +import { NextRequest } from "next/server"; -export async function POST(req: Request) { +export async function POST(req: NextRequest) { return apiPosition(req, "POST"); } diff --git a/src/module/user/api/get/getAllUser.ts b/src/module/user/api/get/getAllUser.ts index 66d92d7..6182d94 100644 --- a/src/module/user/api/get/getAllUser.ts +++ b/src/module/user/api/get/getAllUser.ts @@ -3,15 +3,20 @@ import { NextRequest } from "next/server"; export async function getAllUser(req: NextRequest) { try { + const searchParams = req.nextUrl.searchParams; + const idGroup = searchParams.get('groupID'); + const idUserRole = searchParams.get('roleID'); + const idPosition = searchParams.get('positionID'); + const idVillage = searchParams.get('villageID'); const users = await prisma.user.findMany({ where: { isActive: true, - idUserRole: String(searchParams.get("roleID")), - idPosition: String(searchParams.get("positionID")), - idVillage: String(searchParams.get("villageID")), - idGroup: String(searchParams.get("groupID")), + idUserRole: String(idUserRole), + idPosition: idPosition, + idVillage: idVillage, + idGroup: idGroup, }, select: { id: true, diff --git a/src/module/user/api/get/getOneUser.ts b/src/module/user/api/get/getOneUser.ts index e3e3bd1..4199b78 100644 --- a/src/module/user/api/get/getOneUser.ts +++ b/src/module/user/api/get/getOneUser.ts @@ -1,9 +1,28 @@ +import { prisma } from "@/module/_global"; import { NextRequest } from "next/server"; export async function getOneUser(req: NextRequest) { - try { - - } catch (error) { - - } -} \ No newline at end of file + try { + const searchParams = req.nextUrl.searchParams; + const idUser = searchParams.get("userID"); + + const users = await prisma.user.findUnique({ + where: { + id: String(idUser), + }, + select: { + id: true, + nik: true, + name: true, + phone: true, + email: true, + gender: true, + }, + }); + + return Response.json(users); + } catch (error) { + console.error(error); + return Response.json({ message: "Internal Server Error", success: false }, { status: 500 }); + } +} diff --git a/src/module/user/api/post/createUser.ts b/src/module/user/api/post/createUser.ts index d7cb9e3..e446079 100644 --- a/src/module/user/api/post/createUser.ts +++ b/src/module/user/api/post/createUser.ts @@ -1,9 +1,35 @@ +import { prisma } from "@/module/_global"; import { NextRequest } from "next/server"; export async function createUser(req: NextRequest) { - try { - - } catch (error) { - - } -} \ No newline at end of file + try { + const data = await req.json(); + + const users = await prisma.user.create({ + data: { + nik: data.nik, + name: data.name, + phone: data.phone, + email: data.email, + gender: data.gender, + idGroup: data.idGroup, + idVillage: data.idVillage, + idPosition: data.idPosition, + idUserRole: data.idUserRole, + }, + select: { + id: true, + nik: true, + name: true, + phone: true, + email: true, + gender: true, + }, + }); + + return Response.json(users, { status: 200 }); + } catch (error) { + console.error(error); + return Response.json({ message: "Internal Server Error" }, { status: 500 }); + } +} diff --git a/src/module/user/api/post/deleteUser.ts b/src/module/user/api/post/deleteUser.ts index fac4644..8f3097e 100644 --- a/src/module/user/api/post/deleteUser.ts +++ b/src/module/user/api/post/deleteUser.ts @@ -1,9 +1,27 @@ +import { prisma } from "@/module/_global"; import { NextRequest } from "next/server"; export async function deleteUser(req: NextRequest) { - try { - - } catch (error) { - - } -} \ No newline at end of file + try { + const data = await req.json(); + const update = await prisma.user.update({ + where: { + id: data.id, + }, + data: { + isActive: false, + }, + }); + + return Response.json( + { success: true, message: "Sukses Delete User" }, + { status: 200 } + ); + } catch (error) { + console.error(error); + return Response.json( + { message: "Internal Server Error", success: false }, + { status: 500 } + ); + } +} diff --git a/src/module/user/api/post/updateUser.ts b/src/module/user/api/post/updateUser.ts index 0508760..a16c0e0 100644 --- a/src/module/user/api/post/updateUser.ts +++ b/src/module/user/api/post/updateUser.ts @@ -1,9 +1,36 @@ +import { prisma } from "@/module/_global"; import { NextRequest } from "next/server"; export async function updateUser(req: NextRequest) { - try { - - } catch (error) { - - } -} \ No newline at end of file + try { + const data = await req.json(); + + const updates = await prisma.user.update({ + where: { + id: data.id, + }, + data: { + nik: data.nik, + name: data.name, + phone: data.phone, + email: data.email, + gender: data.gender, + idGroup: data.idGroup, + idVillage: data.idVillage, + idPosition: data.idPosition, + idUserRole: data.idUserRole, + }, + }); + + return Response.json( + { success: true, message: "Sukses Update User" }, + { status: 200 } + ); + } catch (error) { + console.error(error); + return Response.json( + { message: "Internal Server Error", success: false }, + { status: 500 } + ); + } +}