diff --git a/src/app/(application)/division/[id]/(fitur-division)/calender/page.tsx b/src/app/(application)/division/[id]/(fitur-division)/calender/page.tsx index 11fdf6e..6ee808b 100644 --- a/src/app/(application)/division/[id]/(fitur-division)/calender/page.tsx +++ b/src/app/(application)/division/[id]/(fitur-division)/calender/page.tsx @@ -1,11 +1,12 @@ -import { ViewDetailEventDivision, ViewDivisionCalender } from '@/module/division_new'; +import { NavbarDivisionCalender } from '@/module/calender'; +import { ViewDetailEventDivision } from '@/module/division_new'; import React from 'react'; function Page({ searchParams }: { searchParams: any }) { if (searchParams.page == "detail-event") return return ( - + ); } diff --git a/src/app/api/calender/[id]/route.ts b/src/app/api/calender/[id]/route.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/app/api/calender/route.ts b/src/app/api/calender/route.ts new file mode 100644 index 0000000..45a26d0 --- /dev/null +++ b/src/app/api/calender/route.ts @@ -0,0 +1,68 @@ +import { User } from './../../../module/discussion/lib/type_discussion'; +import { prisma } from "@/module/_global"; +import { funGetUserByCookies } from "@/module/auth"; +import _ from "lodash"; +import moment from "moment"; +import { NextResponse } from "next/server"; + +//GET ALL CALENDER +export async function GET(request: Request) { + try { + const user = await funGetUserByCookies() + if (user.id == undefined) { + return NextResponse.json({ success: false, message: "Anda harus login untuk mengakses ini" }, { status: 401 }); + } + + const { searchParams } = new URL(request.url); + const idDivision = searchParams.get("division"); + + if (idDivision != "null" && idDivision != null && idDivision != undefined) { + const cekDivision = await prisma.division.count({ + where: { + id: idDivision, + isActive: true + } + }) + + if (cekDivision == 0) { + return NextResponse.json({ success: false, message: "Gagal mendapatkan divisi, data tidak ditemukan" }, { status: 404 }); + } + + const data = await prisma.divisionCalendar.findMany({ + where: { + isActive: true, + idDivision: idDivision, + }, + select: { + id: true, + title: true, + desc: true, + status: true, + dateStart: true, + dateEnd: true, + createdAt: true, + User: { + select: { + name: true + } + } + } + }); + + const allOmit = data.map((v: any) => ({ + ..._.omit(v, ["User"]), + user_name: v.User.name + })) + + + return NextResponse.json({ success: true, message: "Berhasil mendapatkan calender", data: allOmit }, { status: 200 }); + + } else { + return NextResponse.json({ success: false, message: "Gagal mendapatkan calender, data tidak ditemukan" }, { status: 404 }); + } + + } catch (error) { + console.log(error) + return NextResponse.json({ success: false, message: "Gagal mendapatkan calender, data tidak ditemukan" }, { status: 404 }); + } +} diff --git a/src/app/api/division/[id]/detail/route.ts b/src/app/api/division/[id]/detail/route.ts index 60e8ee7..14d48bd 100644 --- a/src/app/api/division/[id]/detail/route.ts +++ b/src/app/api/division/[id]/detail/route.ts @@ -126,6 +126,7 @@ export async function GET(request: Request, context: { params: { id: string } }) select: { id: true, title: true, + desc: true, createdAt: true, User: { select: { diff --git a/src/module/calender/index.ts b/src/module/calender/index.ts new file mode 100644 index 0000000..5d826f3 --- /dev/null +++ b/src/module/calender/index.ts @@ -0,0 +1,3 @@ +import NavbarDivisionCalender from "./ui/navbar_division_calender"; + +export { NavbarDivisionCalender } \ No newline at end of file diff --git a/src/module/calender/lib/api_calender.ts b/src/module/calender/lib/api_calender.ts new file mode 100644 index 0000000..1c363eb --- /dev/null +++ b/src/module/calender/lib/api_calender.ts @@ -0,0 +1,4 @@ +export const funGetAllCalender = async (path?: string) => { + const response = await fetch(`/api/calender${(path) ? path : ''}`, { next: { tags: ['calender'] } }); + return await response.json().catch(() => null); +} \ No newline at end of file diff --git a/src/module/calender/lib/type_calender.ts b/src/module/calender/lib/type_calender.ts new file mode 100644 index 0000000..c5b18a5 --- /dev/null +++ b/src/module/calender/lib/type_calender.ts @@ -0,0 +1,10 @@ +export interface IDataCalender { + id: string + title: string + desc: string + status: number + dateStart: string + dateEnd: string + createdAt: string + user_name: string +} \ No newline at end of file diff --git a/src/module/division_new/_division_fitur/calender/components/date_event_division.tsx b/src/module/calender/ui/date_event_division.tsx similarity index 82% rename from src/module/division_new/_division_fitur/calender/components/date_event_division.tsx rename to src/module/calender/ui/date_event_division.tsx index 3fad32d..3afb6e2 100644 --- a/src/module/division_new/_division_fitur/calender/components/date_event_division.tsx +++ b/src/module/calender/ui/date_event_division.tsx @@ -1,8 +1,11 @@ import { WARNA } from '@/module/_global'; import { Box, Divider, Group, Indicator, Text } from '@mantine/core'; import { DatePicker, DatePickerProps } from '@mantine/dates'; -import { useRouter } from 'next/navigation'; -import React from 'react'; +import { useParams, useRouter } from 'next/navigation'; +import React, { useState } from 'react'; +import { funGetAllCalender } from '../lib/api_calender'; +import { useShallowEffect } from '@mantine/hooks'; +import { IDataCalender } from '../lib/type_calender'; const HariIni = [ { @@ -38,7 +41,24 @@ const Besok = [ ] export default function DateEventDivision() { + const[isData, setData] = useState([]) const router = useRouter() + const param = useParams<{ id: string }>() + + const getData = async () => { + try { + const response = await funGetAllCalender('?division=' + param.id) + setData(response.data) + } catch (error) { + console.log(error) + } + } + + useShallowEffect(() => { + getData() + }, []) + + const dayRenderer: DatePickerProps['renderDay'] = (date) => { const day = date.getDate(); return ( @@ -49,6 +69,7 @@ export default function DateEventDivision() { }; return ( +
{JSON.stringify(isData, null, 1)}
- + setOpenDrawer(false)}> - + ); diff --git a/src/module/discussion/ui/detail_discussion.tsx b/src/module/discussion/ui/detail_discussion.tsx index 9b1e8ec..666df96 100644 --- a/src/module/discussion/ui/detail_discussion.tsx +++ b/src/module/discussion/ui/detail_discussion.tsx @@ -38,6 +38,9 @@ export default function DetailDiscussion({ id, idDivision }: { id: string, idDiv const sendComent = async () => { try { + if (isComent.trim() == "") { + return toast.error("Masukkan Komentar Anda") + } const response = await funCreateComent(id, { comment: isComent, idDiscussion: param.detail diff --git a/src/module/division_new/_division_fitur/calender/view/view_division_calender.tsx b/src/module/division_new/_division_fitur/calender/view/view_division_calender.tsx index 9cc1113..076a64d 100644 --- a/src/module/division_new/_division_fitur/calender/view/view_division_calender.tsx +++ b/src/module/division_new/_division_fitur/calender/view/view_division_calender.tsx @@ -1,11 +1,11 @@ import React from 'react'; -import NavbarDivisionCalender from '../components/navbar_division_calender'; +import NavbarDivisionCalender from '../../../../calender/ui/navbar_division_calender'; import { Box } from '@mantine/core'; export default function ViewDivisionCalender() { return ( - + ); } diff --git a/src/module/division_new/lib/type_division.ts b/src/module/division_new/lib/type_division.ts index 97f5636..3572cec 100644 --- a/src/module/division_new/lib/type_division.ts +++ b/src/module/division_new/lib/type_division.ts @@ -44,6 +44,7 @@ export interface IDataKalenderOnDetailDivision { export interface IDataDiscussionOnDetailDivision { id: string, + desc: string, title: string, date: string, user: string diff --git a/src/module/division_new/ui/list_discussion.tsx b/src/module/division_new/ui/list_discussion.tsx index 53fca79..7c210d9 100644 --- a/src/module/division_new/ui/list_discussion.tsx +++ b/src/module/division_new/ui/list_discussion.tsx @@ -116,7 +116,7 @@ export default function ListDiscussionOnDetailDivision() { - {v.title} + {v.desc}