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