From 5917a1b8d04294d833cc1898d637b922e325c9d0 Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Wed, 4 Dec 2024 15:45:55 +0800 Subject: [PATCH] Fix : Event scanbarcode --- src/app/api/event/check-kehadiran/route.ts | 15 +++++ src/app/dev/event/konfirmasi/[id]/page.tsx | 6 +- .../event/table_status/table_publish.tsx | 56 ++++++++++++++----- src/app_modules/event/_ui/konfirmasi.tsx | 19 ++----- src/app_modules/event/main/beranda.tsx | 4 +- src/middleware.ts | 1 + 6 files changed, 71 insertions(+), 30 deletions(-) create mode 100644 src/app/api/event/check-kehadiran/route.ts diff --git a/src/app/api/event/check-kehadiran/route.ts b/src/app/api/event/check-kehadiran/route.ts new file mode 100644 index 00000000..3b2ef875 --- /dev/null +++ b/src/app/api/event/check-kehadiran/route.ts @@ -0,0 +1,15 @@ +import { event_funCheckKehadiran } from "@/app_modules/event/fun"; +import { NextResponse } from "next/server"; + +export async function GET(req: Request) { + const { searchParams } = new URL(req.url); + const userId = searchParams.get("userId"); + const eventId = searchParams.get("eventId"); + + const res = await event_funCheckKehadiran({ + eventId: eventId as string, + userId: userId as string, + }); + + return NextResponse.json({ res }); +} diff --git a/src/app/dev/event/konfirmasi/[id]/page.tsx b/src/app/dev/event/konfirmasi/[id]/page.tsx index a7de2574..eb04ea33 100644 --- a/src/app/dev/event/konfirmasi/[id]/page.tsx +++ b/src/app/dev/event/konfirmasi/[id]/page.tsx @@ -5,6 +5,7 @@ import { event_funCheckPesertaByUserId, } from "@/app_modules/event/fun"; import { event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id"; +import moment from "moment"; import { redirect } from "next/navigation"; export default async function Page({ params }: { params: { id: string } }) { @@ -17,7 +18,10 @@ export default async function Page({ params }: { params: { id: string } }) { userId: userLoginId as string, }); - + if (dataEvent == null) return redirect("/dev/event/main/beranda"); + + if (moment(dataEvent?.tanggal).diff(moment(), "minutes") > 0) + return redirect("/dev/event/main/beranda"); if (dataEvent?.isArsip) return redirect(`/dev/event/detail/riwayat/${dataEvent.id}`); diff --git a/src/app_modules/admin/event/table_status/table_publish.tsx b/src/app_modules/admin/event/table_status/table_publish.tsx index 01316545..7bcd290b 100644 --- a/src/app_modules/admin/event/table_status/table_publish.tsx +++ b/src/app_modules/admin/event/table_status/table_publish.tsx @@ -50,20 +50,20 @@ function TableStatus({ listPublish }: { listPublish: any }) { const [eventId, setEventId] = useState(""); const [loading, setLoading] = useState(false); - const [origin, setOrigin] = useState(""); + const [origin, setOrigin] = useState(""); - useShallowEffect(() => { - onLoadOrigin(setOrigin); - // if (typeof window !== "undefined") { - // setOrigin(window.location.origin); - // } - }, [setOrigin]); + useShallowEffect(() => { + if (typeof window !== "undefined") { + console.log(window.location.origin); + setOrigin(window.location.origin); + } + }, [setOrigin]); - async function onLoadOrigin(setOrigin: any) { - const res = await fetch("/api/origin-url"); - const result = await res.json(); - setOrigin(result.origin); - } + // async function onLoadOrigin(setOrigin: any) { + // const res = await fetch("/api/origin-url"); + // const result = await res.json(); + // setOrigin(result.origin); + // } async function onSearch(s: string) { setSearch(s); @@ -97,11 +97,38 @@ function TableStatus({ listPublish }: { listPublish: any }) {
- + + +
+ { + const svg: any = document.getElementById(e.id); + const svgData = new XMLSerializer().serializeToString(svg); + const canvas = document.createElement("canvas"); + const ctx: any = canvas.getContext("2d"); + const img = new Image(); + img.onload = () => { + canvas.width = img.width; + canvas.height = img.height; + ctx.drawImage(img, 0, 0); + const pngFile = canvas.toDataURL("image/png"); + const downloadLink = document.createElement("a"); + downloadLink.download = `QRCode ${e.title}`; + downloadLink.href = `${pngFile}`; + downloadLink.click(); + }; + img.src = `data:image/svg+xml;base64,${btoa(svgData)}`; + }} + /> +
+
{e?.Author?.username} @@ -225,6 +252,9 @@ function TableStatus({ listPublish }: { listPublish: any }) {
QR Code
+ +
Download QR
+
Username
diff --git a/src/app_modules/event/_ui/konfirmasi.tsx b/src/app_modules/event/_ui/konfirmasi.tsx index 3e1f3a43..ec95fc00 100644 --- a/src/app_modules/event/_ui/konfirmasi.tsx +++ b/src/app_modules/event/_ui/konfirmasi.tsx @@ -30,14 +30,6 @@ export default function Ui_Konfirmasi({ const [isLoading, setLoading] = useState(false); const [isPresent, setIsPresent] = useState(null); - // useShallowEffect(() => { - // onLoadData({ - // onPublish(val) { - // setData(val); - // }, - // }); - // }, [setData]); - useShallowEffect(() => { onLoadKehadiran({ onChange(val) { @@ -51,12 +43,12 @@ export default function Ui_Konfirmasi({ }: { onChange: (val: boolean) => void; }) { - const checkKehadiran = await event_funCheckKehadiran({ - eventId: dataEvent.id, - userId: userLoginId as string, - }); + const res = await fetch( + `/api/event/check-kehadiran?userId=${userLoginId}&eventId=${dataEvent.id}` + ); + const checkKehadiran = await res.json(); - onChange(checkKehadiran); + onChange(checkKehadiran.res); } async function onUpdateKonfirmasi() { setLoading(true); @@ -74,6 +66,7 @@ export default function Ui_Konfirmasi({ } } + console.log(isPresent, "isPresent"); return ( <> diff --git a/src/app_modules/event/main/beranda.tsx b/src/app_modules/event/main/beranda.tsx index 5714cc6a..9a814ed8 100644 --- a/src/app_modules/event/main/beranda.tsx +++ b/src/app_modules/event/main/beranda.tsx @@ -20,7 +20,7 @@ export default function Event_Beranda({ }: { dataEvent: MODEL_EVENT[]; }) { - const [data, setData] = useState(dataEvent); + const [data, setData] = useState([]); const [activePage, setActivePage] = useState(1); const [isLoading, setIsLoading] = useState(false); @@ -76,8 +76,6 @@ export default function Event_Beranda({ setData(val); }, }); - - }} > Update beranda diff --git a/src/middleware.ts b/src/middleware.ts index 11acde45..d08b310f 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -23,6 +23,7 @@ const middlewareConfig: MiddlewareConfig = { "/api/auth/*", "/api/origin-url", "/api/user", + "/api/event/*", "/login", "/register", "/validasi",