diff --git a/src/app/(application)/division/[id]/(fitur-division)/calender/[detail]/page.tsx b/src/app/(application)/division/[id]/(fitur-division)/calender/[detail]/page.tsx index eca6613..db733bc 100644 --- a/src/app/(application)/division/[id]/(fitur-division)/calender/[detail]/page.tsx +++ b/src/app/(application)/division/[id]/(fitur-division)/calender/[detail]/page.tsx @@ -1,10 +1,9 @@ import { DetailEventDivision } from '@/module/calender'; -import React from 'react'; function Page() { return ( <> - + ); } diff --git a/src/app/api/calender/[id]/route.ts b/src/app/api/calender/[id]/route.ts index 7c177b6..c080ed9 100644 --- a/src/app/api/calender/[id]/route.ts +++ b/src/app/api/calender/[id]/route.ts @@ -100,7 +100,7 @@ export async function GET(request: Request, context: { params: { id: string } }) } - return NextResponse.json({ success: true, message: "Berhasil mendapatkan kalender", data: dataFix }, { status: 200 }); + return NextResponse.json({ success: true, message: "Berhasil mendapatkan kalender", data: dataFix, user: user.id }, { status: 200 }); } catch (error) { return NextResponse.json({ success: false, message: "Gagal mendapatkan kalender, data tidak ditemukan (error: 500)", }, { status: 500 }); @@ -139,13 +139,16 @@ export async function DELETE(request: Request, context: { params: { id: string } }, data: { isActive: false + }, + select: { + dateStart: true } }); // create log user const log = await createLogUser({ act: 'DELETE', desc: 'User menghapus data acara kalender', table: 'divisionCalendar', data: id }) - return NextResponse.json({ success: true, message: "Berhasil menghapus acara kalender", data }, { status: 200 }); + return NextResponse.json({ success: true, message: "Berhasil menghapus acara kalender", data, user: user.id }, { status: 200 }); } catch (error) { return NextResponse.json({ success: false, message: "Gagal menghapus kalender, coba lagi nanti (error: 500)", }, { status: 500 } diff --git a/src/app/api/version-app/route.ts b/src/app/api/version-app/route.ts index 80e9de8..b821ea4 100644 --- a/src/app/api/version-app/route.ts +++ b/src/app/api/version-app/route.ts @@ -2,7 +2,7 @@ import { NextResponse } from "next/server"; export async function GET(request: Request) { try { - return NextResponse.json({ success: true, version: "0.1.8", mode: "staging" }, { status: 200 }); + return NextResponse.json({ success: true, version: "0.1.9", mode: "staging" }, { status: 200 }); } catch (error) { console.error(error); return NextResponse.json({ success: false, version: "Gagal mendapatkan version, coba lagi nanti (error: 500)", reason: (error as Error).message, }, { status: 500 }); diff --git a/src/module/calender/ui/create_calender_division_caleder.tsx b/src/module/calender/ui/create_calender_division_caleder.tsx index f73c1a3..fd3f4d0 100644 --- a/src/module/calender/ui/create_calender_division_caleder.tsx +++ b/src/module/calender/ui/create_calender_division_caleder.tsx @@ -211,6 +211,7 @@ export default function CreateCalenderDivisionCaleder() { } /> void }) { - const router = useRouter() const param = useParams<{ id: string }>() const [selectedFiles, setSelectedFiles] = useState([]) const [isData, setData] = useState([]) @@ -34,11 +33,9 @@ export default function CreateUserCalender({ onClose }: { onClose: (val: any) => if (member.length > 0) { setSelectedFiles(JSON.parse(JSON.stringify(member.get()))) } - setLoading(false) } else { toast.error(response.message) } - } catch (error) { console.error(error) toast.error("Gagal mendapatkan anggota, coba lagi nanti"); @@ -103,6 +100,7 @@ export default function CreateUserCalender({ onClose }: { onClose: (val: any) => async function fetchGetMember(val: string) { setSearchQuery(val) try { + setLoading(true) const res = await funGetSearchMemberDivision('?search=' + val, param.id); if (res.success) { setData(res.data) @@ -111,6 +109,8 @@ export default function CreateUserCalender({ onClose }: { onClose: (val: any) => } } catch (error) { console.error(error); + } finally { + setLoading(false) } } diff --git a/src/module/calender/ui/create_user_detail_calender.tsx b/src/module/calender/ui/create_user_detail_calender.tsx index 54d1603..1d57395 100644 --- a/src/module/calender/ui/create_user_detail_calender.tsx +++ b/src/module/calender/ui/create_user_detail_calender.tsx @@ -1,18 +1,19 @@ "use client" -import React, { useState } from 'react'; -import { useParams, useRouter } from 'next/navigation'; +import { keyWibu, LayoutNavbarNew, SkeletonList, TEMA } from '@/module/_global'; import { funGetSearchMemberDivision, IDataMemberDivision } from '@/module/division_new'; -import toast from 'react-hot-toast'; +import { useHookstate } from '@hookstate/core'; +import { Carousel } from '@mantine/carousel'; +import { ActionIcon, Avatar, Box, Button, Center, Divider, Flex, Grid, Indicator, rem, Stack, Text, TextInput } from '@mantine/core'; import { useMediaQuery, useShallowEffect } from '@mantine/hooks'; -import { LayoutNavbarNew, SkeletonList, SkeletonSingle, TEMA } from '@/module/_global'; -import { ActionIcon, Avatar, Box, Button, Center, Divider, Flex, Grid, Group, Indicator, rem, Stack, Text, TextInput } from '@mantine/core'; +import { useParams, useRouter } from 'next/navigation'; +import { useState } from 'react'; +import toast from 'react-hot-toast'; import { FaCheck } from 'react-icons/fa6'; import { HiMagnifyingGlass } from 'react-icons/hi2'; import { IoArrowBackOutline, IoClose } from 'react-icons/io5'; -import { Carousel } from '@mantine/carousel'; import { funAddMemberCalender, funGetOneCalender } from '../lib/api_calender'; import { IDataDetailByIdCalender, IDataDetailByIdMember } from '../lib/type_calender'; -import { useHookstate } from '@hookstate/core'; +import { useWibuRealtime } from 'wibu-realtime'; export default function CreateUserDetailCalender() { const router = useRouter() @@ -27,6 +28,11 @@ export default function CreateUserDetailCalender() { const [searchQuery, setSearchQuery] = useState('') const tema = useHookstate(TEMA) const isMobile2 = useMediaQuery("(max-width: 438px)"); + const [loadingSubmit, setLoadingSubmit] = useState(false) + const [dataRealTime, setDataRealtime] = useWibuRealtime({ + WIBU_REALTIME_TOKEN: keyWibu, + project: "sdm" + }) async function getData() { try { @@ -88,9 +94,13 @@ export default function CreateUserDetailCalender() { if (selectedFiles.length == 0) { return toast.error("Error! silahkan pilih anggota") } - + setLoadingSubmit(true) const res = await funAddMemberCalender(String(isDataCalender?.idCalendar), selectedFiles) if (res.success) { + setDataRealtime([{ + category: "calendar-detail", + id: isDataCalender?.idCalendar, + }]) toast.success(res.message) router.push('./') } else { @@ -99,6 +109,8 @@ export default function CreateUserDetailCalender() { } catch (error) { console.error(error); toast.error("Gagal menambahkan anggota, coba lagi nanti"); + } finally { + setLoadingSubmit(false) } } @@ -290,6 +302,7 @@ export default function CreateUserDetailCalender() { backgroundColor: `${tema.get().bgUtama}`, }}>