diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 3131be4..91b0431 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -284,7 +284,7 @@ model DivisionDisscussion { id String @id @default(cuid()) Division Division @relation(fields: [idDivision], references: [id]) idDivision String - title String + title String? desc String @db.Text status Int @default(1) // 1 = open, 2 = close isActive Boolean @default(true) diff --git a/src/app/(application)/(detail-division)/calender/create/page.tsx b/src/app/(application)/(fitur-division)/calender/create/page.tsx similarity index 100% rename from src/app/(application)/(detail-division)/calender/create/page.tsx rename to src/app/(application)/(fitur-division)/calender/create/page.tsx diff --git a/src/app/(application)/(detail-division)/calender/history/page.tsx b/src/app/(application)/(fitur-division)/calender/history/page.tsx similarity index 100% rename from src/app/(application)/(detail-division)/calender/history/page.tsx rename to src/app/(application)/(fitur-division)/calender/history/page.tsx diff --git a/src/app/(application)/(detail-division)/calender/page.tsx b/src/app/(application)/(fitur-division)/calender/page.tsx similarity index 100% rename from src/app/(application)/(detail-division)/calender/page.tsx rename to src/app/(application)/(fitur-division)/calender/page.tsx diff --git a/src/app/(application)/(detail-division)/calender/update/page.tsx b/src/app/(application)/(fitur-division)/calender/update/page.tsx similarity index 100% rename from src/app/(application)/(detail-division)/calender/update/page.tsx rename to src/app/(application)/(fitur-division)/calender/update/page.tsx diff --git a/src/app/(application)/(detail-division)/discussion/[id]/page.tsx b/src/app/(application)/(fitur-division)/discussion/[id]/page.tsx similarity index 100% rename from src/app/(application)/(detail-division)/discussion/[id]/page.tsx rename to src/app/(application)/(fitur-division)/discussion/[id]/page.tsx diff --git a/src/app/(application)/(detail-division)/discussion/create/page.tsx b/src/app/(application)/(fitur-division)/discussion/create/page.tsx similarity index 100% rename from src/app/(application)/(detail-division)/discussion/create/page.tsx rename to src/app/(application)/(fitur-division)/discussion/create/page.tsx diff --git a/src/app/(application)/(detail-division)/discussion/edit/[id]/page.tsx b/src/app/(application)/(fitur-division)/discussion/edit/[id]/page.tsx similarity index 100% rename from src/app/(application)/(detail-division)/discussion/edit/[id]/page.tsx rename to src/app/(application)/(fitur-division)/discussion/edit/[id]/page.tsx diff --git a/src/app/(application)/(detail-division)/discussion/page.tsx b/src/app/(application)/(fitur-division)/discussion/page.tsx similarity index 100% rename from src/app/(application)/(detail-division)/discussion/page.tsx rename to src/app/(application)/(fitur-division)/discussion/page.tsx diff --git a/src/app/(application)/(detail-division)/document/page.tsx b/src/app/(application)/(fitur-division)/document/page.tsx similarity index 100% rename from src/app/(application)/(detail-division)/document/page.tsx rename to src/app/(application)/(fitur-division)/document/page.tsx diff --git a/src/app/(application)/(detail-division)/task/[id]/page.tsx b/src/app/(application)/(fitur-division)/task/[id]/page.tsx similarity index 100% rename from src/app/(application)/(detail-division)/task/[id]/page.tsx rename to src/app/(application)/(fitur-division)/task/[id]/page.tsx diff --git a/src/app/(application)/(detail-division)/task/create/page.tsx b/src/app/(application)/(fitur-division)/task/create/page.tsx similarity index 100% rename from src/app/(application)/(detail-division)/task/create/page.tsx rename to src/app/(application)/(fitur-division)/task/create/page.tsx diff --git a/src/app/(application)/(detail-division)/task/page.tsx b/src/app/(application)/(fitur-division)/task/page.tsx similarity index 100% rename from src/app/(application)/(detail-division)/task/page.tsx rename to src/app/(application)/(fitur-division)/task/page.tsx diff --git a/src/app/(application)/(detail-division)/task/update/[id]/page.tsx b/src/app/(application)/(fitur-division)/task/update/[id]/page.tsx similarity index 100% rename from src/app/(application)/(detail-division)/task/update/[id]/page.tsx rename to src/app/(application)/(fitur-division)/task/update/[id]/page.tsx diff --git a/src/app/api/(fitur-division)/discussion/get/route.ts b/src/app/api/(fitur-division)/discussion/get/route.ts new file mode 100644 index 0000000..f3ce008 --- /dev/null +++ b/src/app/api/(fitur-division)/discussion/get/route.ts @@ -0,0 +1,6 @@ +import { apiDiscussion } from "@/module/division_new"; +import { NextRequest } from "next/server"; + +export async function GET(req: NextRequest) { + return apiDiscussion(req, "GET") +} \ No newline at end of file diff --git a/src/app/api/(fitur-division)/discussion/post/route.ts b/src/app/api/(fitur-division)/discussion/post/route.ts new file mode 100644 index 0000000..e78a337 --- /dev/null +++ b/src/app/api/(fitur-division)/discussion/post/route.ts @@ -0,0 +1,6 @@ +import { apiDiscussion } from "@/module/division_new"; +import { NextRequest } from "next/server"; + +export async function POST(req: NextRequest) { + return apiDiscussion(req, "POST") +} \ No newline at end of file diff --git a/src/module/division_new/_division_fitur/discussion/api/api_discussion.ts b/src/module/division_new/_division_fitur/discussion/api/api_discussion.ts new file mode 100644 index 0000000..9a248e1 --- /dev/null +++ b/src/module/division_new/_division_fitur/discussion/api/api_discussion.ts @@ -0,0 +1,14 @@ +import { NextRequest } from "next/server"; +import { API_INDEX_DISCUSSION } from "./api_index"; +type Method = "GET" | "POST"; + +export async function apiDiscussion(req: NextRequest, method: Method) { + const { searchParams } = new URL(req.url); + const path = searchParams.get("path"); + const act = API_INDEX_DISCUSSION.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/division_new/_division_fitur/discussion/api/api_index.ts b/src/module/division_new/_division_fitur/discussion/api/api_index.ts new file mode 100644 index 0000000..90ad955 --- /dev/null +++ b/src/module/division_new/_division_fitur/discussion/api/api_index.ts @@ -0,0 +1,39 @@ +import getAllDiscussion from "./get/getAllDiscussion"; +import getOneDiscussion from "./get/getOneDiscussion"; +import createCommentDiscussion from "./post/createCommentDiscussion"; +import createDiscussion from "./post/createDiscussion"; +import deleteDiscussion from "./post/deleteDiscussion"; +import updateDiscussion from "./post/updateDiscussion"; + +export const API_INDEX_DISCUSSION = [ + { + path: "get-all-discussion", + method: "GET", + bin: getAllDiscussion, + }, + { + path: "get-one-discussion", + method: "GET", + bin: getOneDiscussion, + }, + { + path: "create-discussion", + method: "POST", + bin: createDiscussion, + }, + { + path: "create-comment-discussion", + method: "POST", + bin: createCommentDiscussion, + }, + { + path: "update-discussion", + method: "POST", + bin: updateDiscussion, + }, + { + path: "delete-discussion", + method: "POST", + bin: deleteDiscussion, + }, +]; diff --git a/src/module/division_new/_division_fitur/discussion/api/get/getAllDiscussion.ts b/src/module/division_new/_division_fitur/discussion/api/get/getAllDiscussion.ts new file mode 100644 index 0000000..68538a1 --- /dev/null +++ b/src/module/division_new/_division_fitur/discussion/api/get/getAllDiscussion.ts @@ -0,0 +1,20 @@ +import { prisma } from "@/module/_global"; +import { NextRequest } from "next/server"; + +export default async function getAllDiscussion(req: NextRequest) { + try { + const searchParams = req.nextUrl.searchParams + const divisionID = searchParams.get('divisionID'); + const data = await prisma.divisionDisscussion.findMany({ + where: { + isActive: true, + idDivision: String(divisionID) + } + }) + + return Response.json(data); + } catch (error) { + console.error(error); + return Response.json({ success: false, message: "Internal Server Error" }, { status: 500 }); + } +} \ No newline at end of file diff --git a/src/module/division_new/_division_fitur/discussion/api/get/getOneDiscussion.ts b/src/module/division_new/_division_fitur/discussion/api/get/getOneDiscussion.ts new file mode 100644 index 0000000..d9abb3a --- /dev/null +++ b/src/module/division_new/_division_fitur/discussion/api/get/getOneDiscussion.ts @@ -0,0 +1,34 @@ +import { prisma } from "@/module/_global"; +import { NextRequest } from "next/server"; + +export default async function getOneDiscussion(req: NextRequest) { + try { + const searchParams = req.nextUrl.searchParams + const id = searchParams.get('id'); + const data = await prisma.divisionDisscussion.findUnique({ + where: { + id: String(id) + } + }) + + const comment = await prisma.divisionDisscussionComment.findMany({ + where: { + idDisscussion: String(id) + } + }) + + const allData = { + data: data, + comment: comment + } + + return Response.json(allData); + + } catch (error) { + console.error(error); + return Response.json( + { message: "Internal Server Error", success: false }, + { status: 500 } + ); + } +} \ No newline at end of file diff --git a/src/module/division_new/_division_fitur/discussion/api/post/createCommentDiscussion.ts b/src/module/division_new/_division_fitur/discussion/api/post/createCommentDiscussion.ts new file mode 100644 index 0000000..fafe8b8 --- /dev/null +++ b/src/module/division_new/_division_fitur/discussion/api/post/createCommentDiscussion.ts @@ -0,0 +1,19 @@ +import { prisma } from "@/module/_global"; + +export default async function createCommentDiscussion(req: Request) { + try { + const data = await req.json() + const insert = await prisma.divisionDisscussionComment.create({ + data: { + idDisscussion: data.idDiscussion, + comment: data.comment, + createdBy: data.createdBy + } + }) + return Response.json(insert, { status: 201 }); + + } catch (error) { + console.error(error); + return Response.json({ success: false, message: "Internal Server Error" }, { status: 500 }); + } +} \ No newline at end of file diff --git a/src/module/division_new/_division_fitur/discussion/api/post/createDiscussion.ts b/src/module/division_new/_division_fitur/discussion/api/post/createDiscussion.ts new file mode 100644 index 0000000..596ff99 --- /dev/null +++ b/src/module/division_new/_division_fitur/discussion/api/post/createDiscussion.ts @@ -0,0 +1,23 @@ +import { prisma } from "@/module/_global"; + +export default async function createDiscussion(req: Request) { + try { + const data = await req.json(); + const insert = await prisma.divisionDisscussion.create({ + data: { + idDivision: data.idDivision, + desc: data.desc, + createdBy: data.createdBy + }, + select: { + id: true + } + }) + + return Response.json(insert, { status: 201 }); + + } catch (error) { + console.error(error); + return Response.json({ success: false, message: "Internal Server Error" }, { status: 500 }); + } +} \ No newline at end of file diff --git a/src/module/division_new/_division_fitur/discussion/api/post/deleteDiscussion.ts b/src/module/division_new/_division_fitur/discussion/api/post/deleteDiscussion.ts new file mode 100644 index 0000000..f2667a9 --- /dev/null +++ b/src/module/division_new/_division_fitur/discussion/api/post/deleteDiscussion.ts @@ -0,0 +1,26 @@ +import { prisma } from "@/module/_global"; + +export default async function deleteDiscussion(req: Request) { + try { + const data = await req.json() + const del = await prisma.divisionDisscussion.update({ + where: { + id: data.id + }, + data: { + isActive: false + } + }) + + return Response.json( + { success: true, message: "Sukses Delete Diskusi" }, + { status: 200 } + ); + } catch (error) { + console.error(error); + return Response.json( + { message: "Internal Server Error", success: false }, + { status: 500 } + ); + } +} \ No newline at end of file diff --git a/src/module/division_new/_division_fitur/discussion/api/post/updateDiscussion.ts b/src/module/division_new/_division_fitur/discussion/api/post/updateDiscussion.ts new file mode 100644 index 0000000..9bd45e5 --- /dev/null +++ b/src/module/division_new/_division_fitur/discussion/api/post/updateDiscussion.ts @@ -0,0 +1,21 @@ +import { prisma } from "@/module/_global"; + +export default async function updateDiscussion(req: Request) { + try { + const data = await req.json() + + const update = await prisma.divisionDisscussion.update({ + where:{ + id: data.id + }, + data:{ + desc: data.desc, + } + }) + + return Response.json({ success: true, message: "Sukses Update Diskusi" }, { status: 200 }); + } catch (error) { + console.error(error); + return Response.json({ message: "Internal Server Error", success: false }, { status: 500 }); + } +} \ No newline at end of file diff --git a/src/module/division_new/api/get/getAllDivision.ts b/src/module/division_new/api/get/getAllDivision.ts index 2f3d159..6645584 100644 --- a/src/module/division_new/api/get/getAllDivision.ts +++ b/src/module/division_new/api/get/getAllDivision.ts @@ -4,7 +4,7 @@ import { NextRequest } from "next/server"; export default async function getAllDivision(req: NextRequest) { try { const searchParams = req.nextUrl.searchParams - const groupID = searchParams.get('active'); + const groupID = searchParams.get('groupID'); const division = await prisma.division.findMany({ where: { isActive: true, diff --git a/src/module/division_new/api/post/deleteDivision.ts b/src/module/division_new/api/post/deleteDivision.ts index a65b63e..a74b5e9 100644 --- a/src/module/division_new/api/post/deleteDivision.ts +++ b/src/module/division_new/api/post/deleteDivision.ts @@ -11,6 +11,12 @@ export default async function deleteDivision(req: Request) { isActive: false, }, }); + + return Response.json( + { success: true, message: "Sukses Delete Division" }, + { status: 200 } + ); + } catch (error) { console.error(error); return Response.json( diff --git a/src/module/division_new/api/post/updateDivision.ts b/src/module/division_new/api/post/updateDivision.ts index 671eaa9..5603fc9 100644 --- a/src/module/division_new/api/post/updateDivision.ts +++ b/src/module/division_new/api/post/updateDivision.ts @@ -16,7 +16,7 @@ export default async function updateDivision(req: Request) { // belom update member nihhhh - return Response.json({ success: true, message: "Sukses Update Position" }, { status: 200 }); + return Response.json({ success: true, message: "Sukses Update Divisi" }, { status: 200 }); } catch (error) { console.error(error); return Response.json({ message: "Internal Server Error", success: false }, { status: 500 }); diff --git a/src/module/division_new/index.ts b/src/module/division_new/index.ts index 2b71b50..a376863 100644 --- a/src/module/division_new/index.ts +++ b/src/module/division_new/index.ts @@ -7,6 +7,7 @@ import ViewDetailEventDivision from "./_division_fitur/calender/view/view_detail import ViewDivisionCalender from "./_division_fitur/calender/view/view_division_calender"; import ViewHistoryDivisionCalender from "./_division_fitur/calender/view/view_history_division_calender"; import ViewUpdateDivisionCalender from "./_division_fitur/calender/view/view_update_division_calender"; +import { apiDiscussion } from "./_division_fitur/discussion/api/api_discussion"; import ViewCreateDiscussion from "./_division_fitur/discussion/view/view_create_discussion"; import ViewDetailDiscussion from "./_division_fitur/discussion/view/view_detail_discussion"; import ViewEditDiscussion from "./_division_fitur/discussion/view/view_edit_discussion"; @@ -57,3 +58,4 @@ export { ViewInformationDivision }; export { ViewEditDivision }; export { ViewCreateAnggotaDivision }; export { apiDivision } +export { apiDiscussion }