From eb0f34a1566a0f3d091ea4b848cdaaf117825dce Mon Sep 17 00:00:00 2001 From: amel Date: Mon, 9 Sep 2024 17:06:01 +0800 Subject: [PATCH 1/2] upd: fix api No Issues --- src/app/api/calender/route.ts | 16 ++++++--- src/app/api/division/[id]/detail/route.ts | 5 ++- src/app/api/home/route.ts | 42 ++++++++++++++++------- src/module/home/ui/list_event.tsx | 4 +-- 4 files changed, 48 insertions(+), 19 deletions(-) diff --git a/src/app/api/calender/route.ts b/src/app/api/calender/route.ts index 0f0210e..8e08d38 100644 --- a/src/app/api/calender/route.ts +++ b/src/app/api/calender/route.ts @@ -37,7 +37,7 @@ export async function GET(request: Request) { isActive: true, idDivision: idDivision, dateStart: new Date(String(isDate)), - DivisionCalendar:{ + DivisionCalendar: { isActive: true } }, @@ -62,9 +62,17 @@ export async function GET(request: Request) { } } }, - orderBy: { - createdAt: 'desc' - } + orderBy: [ + { + dateStart: 'asc' + }, + { + timeStart: 'asc' + }, + { + timeEnd: 'asc' + } + ] }); const allOmit = data.map((v: any) => ({ diff --git a/src/app/api/division/[id]/detail/route.ts b/src/app/api/division/[id]/detail/route.ts index c76cb6d..af4fd71 100644 --- a/src/app/api/division/[id]/detail/route.ts +++ b/src/app/api/division/[id]/detail/route.ts @@ -58,12 +58,15 @@ export async function GET(request: Request, context: { params: { id: string } }) } }) - const kalender = await prisma.divisionCalendar.count({ + const kalender = await prisma.divisionCalendarReminder.count({ where: { idDivision: String(id), isActive: true, dateStart: { lte: new Date() + }, + DivisionCalendar: { + isActive: true } } }) diff --git a/src/app/api/home/route.ts b/src/app/api/home/route.ts index ef8da4d..765bcb8 100644 --- a/src/app/api/home/route.ts +++ b/src/app/api/home/route.ts @@ -242,7 +242,10 @@ export async function GET(request: Request) { Group: { isActive: true, } - } + }, + DivisionCalendar: { + isActive: true + }, } } else { kondisi = { @@ -250,35 +253,50 @@ export async function GET(request: Request) { dateStart: new Date(), Division: { idGroup: idGroup - } + }, + DivisionCalendar: { + isActive: true + }, } } - const data = await prisma.divisionCalendar.findMany({ + const data = await prisma.divisionCalendarReminder.findMany({ skip: 0, take: 5, where: kondisi, select: { id: true, - idDivision: true, - title: true, - desc: true, - status: true, + idCalendar: true, timeStart: true, dateStart: true, timeEnd: true, dateEnd: true, createdAt: true, - User: { + status: true, + DivisionCalendar: { select: { - name: true + title: true, + desc: true, + User: { + select: { + name: true + } + } } } }, - orderBy: { - createdAt: 'desc' - } + orderBy: [ + { + dateStart: 'asc' + }, + { + timeStart: 'asc' + }, + { + timeEnd: 'asc' + } + ] }) allData = data.map((v: any) => ({ diff --git a/src/module/home/ui/list_event.tsx b/src/module/home/ui/list_event.tsx index d4431b9..0763ab4 100644 --- a/src/module/home/ui/list_event.tsx +++ b/src/module/home/ui/list_event.tsx @@ -42,7 +42,7 @@ export default function ListEventHome() { return ( - Event Hari Ini + Acara Hari Ini - Tidak ada event + Tidak ada acara : isData.map((event, index) => { From 30dbc49653ec28e5e023410b761375dc8d03208c Mon Sep 17 00:00:00 2001 From: amel Date: Mon, 9 Sep 2024 17:35:24 +0800 Subject: [PATCH 2/2] upd: diskusi deskripsi - update pembatasan No Issues --- src/app/api/discussion/[id]/route.ts | 1 + src/module/discussion/lib/type_discussion.ts | 31 ++++++++-------- .../discussion/ui/detail_discussion.tsx | 36 ++++++++++++++++--- .../discussion/ui/form_create_discussion.tsx | 4 +-- .../ui/navbar_detail_discussion.tsx | 4 ++- 5 files changed, 53 insertions(+), 23 deletions(-) diff --git a/src/app/api/discussion/[id]/route.ts b/src/app/api/discussion/[id]/route.ts index a0e0c29..00d0936 100644 --- a/src/app/api/discussion/[id]/route.ts +++ b/src/app/api/discussion/[id]/route.ts @@ -41,6 +41,7 @@ export async function GET(request: Request, context: { params: { id: string } }) desc: true, status: true, createdAt: true, + createdBy: true, User: { select: { name: true, diff --git a/src/module/discussion/lib/type_discussion.ts b/src/module/discussion/lib/type_discussion.ts index d688100..dcc59d4 100644 --- a/src/module/discussion/lib/type_discussion.ts +++ b/src/module/discussion/lib/type_discussion.ts @@ -17,7 +17,7 @@ export interface IFormDiscussion { export interface IStatusDiscussion { status: number } - + export interface IDetailDiscussion { id: string @@ -29,25 +29,26 @@ export interface IDetailDiscussion { username: string user_img: string totalComments: number - } - - export interface IAllComents { + createdBy: string +} + +export interface IAllComents { id: string comment: string createdAt: string - User: User - img: string + User: User + img: string username: string - } - - export interface User { - name: string - } - -export interface IDeleteDicussion { - id: string } - + +export interface User { + name: string +} + +export interface IDeleteDicussion { + id: string +} + export interface IEditDiscussion { desc: string } diff --git a/src/module/discussion/ui/detail_discussion.tsx b/src/module/discussion/ui/detail_discussion.tsx index 942afb7..ee87f58 100644 --- a/src/module/discussion/ui/detail_discussion.tsx +++ b/src/module/discussion/ui/detail_discussion.tsx @@ -1,6 +1,6 @@ "use client" import { ActionIcon, Avatar, Badge, Box, Center, Divider, Flex, Grid, Group, Input, rem, Skeleton, Spoiler, Text, TextInput } from "@mantine/core"; -import { SkeletonDetailDiscussionComment, SkeletonDetailDiscussionMember, SkeletonSingle, WARNA } from "@/module/_global"; +import { globalRole, LayoutDrawer, LayoutNavbarNew, SkeletonDetailDiscussionComment, SkeletonDetailDiscussionMember, SkeletonSingle, WARNA } from "@/module/_global"; import { GrChatOption } from "react-icons/gr"; import { LuSendHorizonal } from "react-icons/lu"; import NavbarDetailDiscussion from "@/module/discussion/ui/navbar_detail_discussion"; @@ -14,6 +14,10 @@ import { useParams, useRouter } from "next/navigation"; import toast from "react-hot-toast"; import { useHookstate } from "@hookstate/core"; import { globalRefreshDiscussion } from "../lib/val_discussion"; +import { HiMenu } from "react-icons/hi"; +import DrawerDetailDiscussion from "./drawer_detail_discussion"; +import { funGetUserByCookies } from "@/module/auth"; +import { funGetDivisionById } from "@/module/division_new"; export default function DetailDiscussion({ id, idDivision }: { id: string, idDivision: string }) { const [isData, setData] = useState() @@ -22,13 +26,21 @@ export default function DetailDiscussion({ id, idDivision }: { id: string, idDiv const [isLoad, setIsLoad] = useState(true) const router = useRouter() const refresh = useHookstate(globalRefreshDiscussion) + const roleLogin = useHookstate(globalRole) + const [isAdmin, setAdmin] = useState(false) + const [isCreator, setCreator] = useState(false) const getData = async () => { try { setIsLoad(true) const response = await funGetDiscussionById(id) + const res = await funGetDivisionById(param.id); + const login = await funGetUserByCookies() + const cek = res.data.member.some((i: any) => i.idUser == login.id && i.isAdmin == true) + setAdmin(cek) setData(response.data) setIsLoad(false) + setCreator(response.data.createdBy == login.id) } catch (error) { console.error(error) } finally { @@ -61,11 +73,27 @@ export default function DetailDiscussion({ id, idDivision }: { id: string, idDiv } } + const [openDrawer, setOpenDrawer] = useState(false) + return ( - + {/* */} + setOpenDrawer(true)} bg={WARNA.bgIcon} size="lg" radius="lg" aria-label="Settings"> + + + : <> + } + /> + setOpenDrawer(false)}> + setOpenDrawer(false)} id={id} status={Number(isData?.status)} idDivision={idDivision} /> + + + {isLoad ? Array(1) @@ -217,12 +245,12 @@ export default function DetailDiscussion({ id, idDivision }: { id: string, idDiv - + - {v.username} + {v.username} diff --git a/src/module/discussion/ui/form_create_discussion.tsx b/src/module/discussion/ui/form_create_discussion.tsx index ae401b3..3e12c85 100644 --- a/src/module/discussion/ui/form_create_discussion.tsx +++ b/src/module/discussion/ui/form_create_discussion.tsx @@ -52,7 +52,6 @@ export default function FormCreateDiscussion({ id }: { id: string }) { toast.success(response.message) router.push(`/division/${param.id}/discussion/`) setValModal(false) - router.back() } else { toast.error(response.message) } @@ -123,8 +122,7 @@ export default function FormCreateDiscussion({ id }: { id: string }) { setValModal(false)} - description="Apakah Anda yakin ingin - menambah data?" + description="Apakah Anda yakin ingin menambah data?" onYes={(val) => { createDiscussion(val) }} /> ) diff --git a/src/module/discussion/ui/navbar_detail_discussion.tsx b/src/module/discussion/ui/navbar_detail_discussion.tsx index 31ec216..911899c 100644 --- a/src/module/discussion/ui/navbar_detail_discussion.tsx +++ b/src/module/discussion/ui/navbar_detail_discussion.tsx @@ -1,14 +1,16 @@ 'use client' -import { LayoutDrawer, LayoutNavbarNew, WARNA } from "@/module/_global"; +import { globalRole, LayoutDrawer, LayoutNavbarNew, WARNA } from "@/module/_global"; import { ActionIcon } from "@mantine/core"; import { useState } from "react"; import { HiMenu } from "react-icons/hi"; import DrawerDetailDiscussion from "./drawer_detail_discussion"; import { useParams } from "next/navigation"; +import { useHookstate } from "@hookstate/core"; export default function NavbarDetailDiscussion({id, status, idDivision}: {id: string, status: number, idDivision:string}) { const [openDrawer, setOpenDrawer] = useState(false) const param = useParams<{ id: string }>() + const roleLogin = useHookstate(globalRole) return ( <>