From 354f3cbd85fb104defd190dd5868ac2c014f21ea Mon Sep 17 00:00:00 2001 From: amel Date: Wed, 2 Oct 2024 10:57:36 +0800 Subject: [PATCH 1/2] upd: baner Deskripsi: - banner No Issues --- src/app/(application)/banner/create/page.tsx | 3 +++ .../(application)/banner/edit/[id]/page.tsx | 3 +++ src/app/(application)/banner/page.tsx | 3 +++ src/app/api/discussion/route.ts | 24 ++++++++++++++++++- src/module/banner/index.ts | 1 + src/module/banner/lib/git.keep | 0 src/module/banner/ui/git.keep | 0 7 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 src/app/(application)/banner/create/page.tsx create mode 100644 src/app/(application)/banner/edit/[id]/page.tsx create mode 100644 src/app/(application)/banner/page.tsx create mode 100644 src/module/banner/index.ts create mode 100644 src/module/banner/lib/git.keep create mode 100644 src/module/banner/ui/git.keep diff --git a/src/app/(application)/banner/create/page.tsx b/src/app/(application)/banner/create/page.tsx new file mode 100644 index 0000000..78a7dff --- /dev/null +++ b/src/app/(application)/banner/create/page.tsx @@ -0,0 +1,3 @@ +export default function Page() { + return
Tambah Banner
; +} \ No newline at end of file diff --git a/src/app/(application)/banner/edit/[id]/page.tsx b/src/app/(application)/banner/edit/[id]/page.tsx new file mode 100644 index 0000000..6dea5fd --- /dev/null +++ b/src/app/(application)/banner/edit/[id]/page.tsx @@ -0,0 +1,3 @@ +export default function Page({ params }: { params: { id: string } }) { + return
Edit Banner
; +} \ No newline at end of file diff --git a/src/app/(application)/banner/page.tsx b/src/app/(application)/banner/page.tsx new file mode 100644 index 0000000..057359c --- /dev/null +++ b/src/app/(application)/banner/page.tsx @@ -0,0 +1,3 @@ +export default function Page() { + return
List Banner
; +} \ No newline at end of file diff --git a/src/app/api/discussion/route.ts b/src/app/api/discussion/route.ts index afce46f..6cadf5f 100644 --- a/src/app/api/discussion/route.ts +++ b/src/app/api/discussion/route.ts @@ -100,6 +100,9 @@ export async function POST(request: Request) { return NextResponse.json({ success: false, message: "Anda harus login untuk mengakses ini" }, { status: 401 }); } + const userRoleLogin = user.idUserRole + const userId = user.id + const { idDivision, desc } = (await request.json()); const cekDivision = await prisma.division.count({ @@ -148,6 +151,25 @@ export async function POST(request: Request) { desc: 'Terdapat diskusi baru. Silahkan periksa detailnya.' })) + if (userRoleLogin != "supadmin") { + const perbekel = await prisma.user.findFirst({ + where: { + isActive: true, + idUserRole: "supadmin", + idVillage: user.idVillage + } + }) + + dataNotif.push({ + idUserTo: perbekel?.id, + idUserFrom: userId, + category: 'division/' + idDivision + '/discussion', + idContent: data.id, + title: 'Diskusi Baru', + desc: 'Terdapat diskusi baru. Silahkan periksa detailnya.' + }) + } + const insertNotif = await prisma.notifications.createMany({ data: dataNotif }) @@ -155,7 +177,7 @@ export async function POST(request: Request) { // create log user const log = await createLogUser({ act: 'CREATE', desc: 'User membuat data diskusi', table: 'divisionDisscussion', data: data.id }) - return NextResponse.json({ success: true, message: "Berhasil menambahkan diskusi", data, }, { status: 200 }); + return NextResponse.json({ success: true, message: "Berhasil menambahkan diskusi", notif: dataNotif }, { status: 200 }); } catch (error) { console.error(error); return NextResponse.json({ success: false, message: "Gagal menambahkan diskusi, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); diff --git a/src/module/banner/index.ts b/src/module/banner/index.ts new file mode 100644 index 0000000..0a07d17 --- /dev/null +++ b/src/module/banner/index.ts @@ -0,0 +1 @@ +//cobaa \ No newline at end of file diff --git a/src/module/banner/lib/git.keep b/src/module/banner/lib/git.keep new file mode 100644 index 0000000..e69de29 diff --git a/src/module/banner/ui/git.keep b/src/module/banner/ui/git.keep new file mode 100644 index 0000000..e69de29 From 0c525e8bae515eef96864941e90c9158261f0824 Mon Sep 17 00:00:00 2001 From: amel Date: Wed, 2 Oct 2024 10:58:30 +0800 Subject: [PATCH 2/2] upd: realtime Deskripsi; - realtime halaman diskusi No Issues --- src/module/_global/components/wrap_layout.tsx | 1 + .../discussion/ui/form_create_discussion.tsx | 43 +++++++++++-------- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/module/_global/components/wrap_layout.tsx b/src/module/_global/components/wrap_layout.tsx index 816c315..ff21809 100644 --- a/src/module/_global/components/wrap_layout.tsx +++ b/src/module/_global/components/wrap_layout.tsx @@ -25,6 +25,7 @@ export default function WrapLayout({ children, role, theme, user }: { children: }, [role, theme]) useShallowEffect(() => { + console.log(data) if (data && data.some((i: any) => i.idUserTo == user)) { setTampilNotif(true) setTimeout(() => { diff --git a/src/module/discussion/ui/form_create_discussion.tsx b/src/module/discussion/ui/form_create_discussion.tsx index 0725ce7..1aa8245 100644 --- a/src/module/discussion/ui/form_create_discussion.tsx +++ b/src/module/discussion/ui/form_create_discussion.tsx @@ -1,14 +1,15 @@ 'use client' -import { TEMA } from "@/module/_global"; +import { keyWibu, TEMA } from "@/module/_global"; import LayoutModal from "@/module/_global/layout/layout_modal"; -import { Avatar, Box, Button, Center, Grid, Group, rem, Text, Textarea } from "@mantine/core"; -import { useState } from "react"; -import toast from "react-hot-toast"; -import { funCreateDiscussion, funGetDiscussionById } from "../lib/api_discussion"; -import { useParams, useRouter } from "next/navigation"; -import { useShallowEffect } from "@mantine/hooks"; import { funGetProfileByCookies } from "@/module/user/profile/lib/api_profile"; import { useHookstate } from "@hookstate/core"; +import { Avatar, Box, Button, Grid, rem, Textarea } from "@mantine/core"; +import { useShallowEffect } from "@mantine/hooks"; +import { useParams, useRouter } from "next/navigation"; +import { useState } from "react"; +import toast from "react-hot-toast"; +import { useWibuRealtime } from "wibu-realtime"; +import { funCreateDiscussion } from "../lib/api_discussion"; export default function FormCreateDiscussion({ id }: { id: string }) { const [isValModal, setValModal] = useState(false) @@ -25,22 +26,27 @@ export default function FormCreateDiscussion({ id }: { id: string }) { desc: "", idDivision: id }) + const [data, setDataRealtime] = useWibuRealtime({ + WIBU_REALTIME_TOKEN: keyWibu, + project: "sdm" + }) + async function getData() { try { - setLoading(true) - const res = await funGetProfileByCookies() - setIMG(`https://wibu-storage.wibudev.com/api/files/${res.data.img}`) - setLoading(false) + setLoading(true) + const res = await funGetProfileByCookies() + setIMG(`https://wibu-storage.wibudev.com/api/files/${res.data.img}`) + setLoading(false) } catch (error) { - console.error(error); + console.error(error); } finally { - setLoading(false) + setLoading(false) } - } - - useShallowEffect(() => { + } + + useShallowEffect(() => { getData() - }, []) + }, []) async function createDiscussion(val: boolean) { try { @@ -51,6 +57,7 @@ export default function FormCreateDiscussion({ id }: { id: string }) { }) if (response.success) { + setDataRealtime(response.notif) toast.success(response.message) router.push(`/division/${param.id}/discussion/`) setValModal(false) @@ -70,7 +77,7 @@ export default function FormCreateDiscussion({ id }: { id: string }) { return ( - +