diff --git a/next.config.js b/next.config.js
index 5c728631..79d67970 100644
--- a/next.config.js
+++ b/next.config.js
@@ -1,10 +1,9 @@
/** @type {import('next').NextConfig} */
const nextConfig = {
- reactStrictMode: false,
- experimental: {
- serverActions: true
- },
-
-}
+ reactStrictMode: false,
+ experimental: {
+ serverActions: true,
+ },
+};
-module.exports = nextConfig
+module.exports = nextConfig;
diff --git a/src/app/api/event/check-kehadiran/route.ts b/src/app/api/event/check-kehadiran/route.ts
index 3b2ef875..083f6e05 100644
--- a/src/app/api/event/check-kehadiran/route.ts
+++ b/src/app/api/event/check-kehadiran/route.ts
@@ -11,5 +11,5 @@ export async function GET(req: Request) {
userId: userId as string,
});
- return NextResponse.json({ res });
+ return NextResponse.json(res, { status: 200 });
}
diff --git a/src/app/api/event/get-all-by-userId/route.ts b/src/app/api/event/get-all-by-userId/route.ts
deleted file mode 100644
index 2ae65ce8..00000000
--- a/src/app/api/event/get-all-by-userId/route.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { NextResponse } from "next/server";
-
-export async function GET(params: Request) {
- const { searchParams } = new URL(params.url);
- const userId = searchParams.get("userId");
-
-
- return NextResponse.json({ userId });
-}
\ No newline at end of file
diff --git a/src/app/api/event/get-all/route.ts b/src/app/api/event/get-all/route.ts
new file mode 100644
index 00000000..33e9c89a
--- /dev/null
+++ b/src/app/api/event/get-all/route.ts
@@ -0,0 +1,12 @@
+import { event_getListAllPublish } from "@/app_modules/event/fun/get/get_list_all_publish";
+import { toNumber } from "lodash";
+import { NextResponse } from "next/server";
+
+export async function GET(params: Request) {
+ const { searchParams } = new URL(params.url);
+ const page = searchParams.get("page");
+
+ const data = await event_getListAllPublish({ page: toNumber(page) });
+
+ return NextResponse.json({ data });
+}
diff --git a/src/app/api/event/get-one-by-id/route.ts b/src/app/api/event/get-one-by-id/route.ts
new file mode 100644
index 00000000..7ab66fac
--- /dev/null
+++ b/src/app/api/event/get-one-by-id/route.ts
@@ -0,0 +1,21 @@
+import { event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id";
+import { NextResponse } from "next/server";
+
+export async function GET(params: Request) {
+ const { searchParams } = new URL(params.url);
+ const eventId = searchParams.get("eventId");
+
+ const res = await event_getOneById(eventId as string);
+
+ if (!res) {
+ return NextResponse.json(
+ { message: "Event Not Found", data: null },
+ { status: 404 }
+ );
+ }
+
+ return NextResponse.json(
+ { message: "Event Found", data: res },
+ { status: 200 }
+ );
+}
diff --git a/src/app/dev/event/create/page.tsx b/src/app/dev/event/create/page.tsx
index 5363ccb1..b731e460 100644
--- a/src/app/dev/event/create/page.tsx
+++ b/src/app/dev/event/create/page.tsx
@@ -1,9 +1,9 @@
-import { funGetUserIdByToken } from "@/app_modules/_global/fun/get";
+import { newFunGetUserId } from "@/app/lib/new_fun_user_id";
import { Event_Create } from "@/app_modules/event";
import { Event_getMasterTipeAcara } from "@/app_modules/event/fun/master/get_tipe_acara";
export default async function Page() {
- const userLoginId = await funGetUserIdByToken();
+ const userLoginId = await newFunGetUserId();
const listTipeAcara = await Event_getMasterTipeAcara();
return (
diff --git a/src/app/dev/event/konfirmasi/[id]/page.tsx b/src/app/dev/event/konfirmasi/[id]/page.tsx
index eb04ea33..05703cb1 100644
--- a/src/app/dev/event/konfirmasi/[id]/page.tsx
+++ b/src/app/dev/event/konfirmasi/[id]/page.tsx
@@ -1,33 +1,35 @@
import { funGetUserIdByToken } from "@/app_modules/_global/fun/get";
import Ui_Konfirmasi from "@/app_modules/event/_ui/konfirmasi";
-import {
- event_funCheckKehadiran,
- event_funCheckPesertaByUserId,
-} from "@/app_modules/event/fun";
+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 } }) {
- const eventId = params.id;
- const userLoginId = await funGetUserIdByToken();
- const dataEvent = await event_getOneById(eventId);
+export default async function Page({
+ params,
+}: {
+ params: Promise<{ id: string }>;
+}) {
+ const eventId = (await params).id;
- const checkPeserta = await event_funCheckPesertaByUserId({
- eventId: eventId,
- userId: userLoginId as string,
- });
- if (dataEvent == null) return redirect("/dev/event/main/beranda");
+ // const userLoginId = await funGetUserIdByToken();
- if (moment(dataEvent?.tanggal).diff(moment(), "minutes") > 0)
- return redirect("/dev/event/main/beranda");
+ // const checkPeserta = await event_funCheckPesertaByUserId({
+ // eventId: eventId,
+ // userId: userLoginId as string,
+ // });
- if (dataEvent?.isArsip)
- return redirect(`/dev/event/detail/riwayat/${dataEvent.id}`);
+ // if (dataEvent == null) return redirect("/dev/event/main/beranda");
- if (checkPeserta == false)
- return redirect(`/dev/event/detail/main/${eventId}`);
+ // 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}`);
+
+ // if (checkPeserta == false)
+ // return redirect(`/dev/event/detail/main/${eventId}`);
// if (checkKehadiran) {
// return redirect(`/dev/event/main/beranda`);
@@ -35,10 +37,7 @@ export default async function Page({ params }: { params: { id: string } }) {
return (
<>
-
+
>
);
}
diff --git a/src/app/dev/event/main/beranda/page.tsx b/src/app/dev/event/main/beranda/page.tsx
index e5201847..5bde2a88 100644
--- a/src/app/dev/event/main/beranda/page.tsx
+++ b/src/app/dev/event/main/beranda/page.tsx
@@ -1,12 +1,10 @@
import { Event_Beranda } from "@/app_modules/event";
-import { event_getListAllPublish } from "@/app_modules/event/fun/get/get_list_all_publish";
export default async function Page() {
- const dataEvent = await event_getListAllPublish({ page: 1 });
return (
<>
-
+
>
);
}
diff --git a/src/app/lib/api_user_router/route_api_event.ts b/src/app/lib/api_user_router/route_api_event.ts
new file mode 100644
index 00000000..1394e4ec
--- /dev/null
+++ b/src/app/lib/api_user_router/route_api_event.ts
@@ -0,0 +1,7 @@
+export const API_RouteEvent = {
+ get_all: ({ page }: { page: number }) => `/api/event/get-all?page=${page}`,
+ get_one_by_id: ({ eventId }: { eventId: string }) =>
+ `/api/event/get-one-by-id?eventId=${eventId}`,
+ check_kehadiran: ({ eventId, userId }: { eventId: string; userId: string }) =>
+ `/api/event/check-kehadiran?eventId=${eventId}&userId=${userId}`,
+};
diff --git a/src/app_modules/admin/event/_view/view_table_review.tsx b/src/app_modules/admin/event/_view/view_table_review.tsx
index 4b9ab12c..4b64fb13 100644
--- a/src/app_modules/admin/event/_view/view_table_review.tsx
+++ b/src/app_modules/admin/event/_view/view_table_review.tsx
@@ -108,15 +108,15 @@ export default function AdminEvent_ComponentTableReview({
async function onPublish({
eventId,
- tanggalSelesai,
+ tanggal,
}: {
eventId: string;
- tanggalSelesai: Date;
+ tanggal: Date;
}) {
const checkStatus = await event_checkStatus({ id: eventId });
if (checkStatus) {
- if (moment(tanggalSelesai).diff(Date.now(), "minutes") < 0)
+ if (moment(tanggal).diff(Date.now(), "minutes") < 0)
return ComponentGlobal_NotifikasiPeringatan(
"Waktu acara telah lewat, Report untuk memberitahu user !"
);
@@ -267,7 +267,7 @@ export default function AdminEvent_ComponentTableReview({
-
+
@@ -286,7 +286,7 @@ export default function AdminEvent_ComponentTableReview({
onClick={() =>
onPublish({
eventId: e.id,
- tanggalSelesai: e.tanggalSelesai,
+ tanggal: e.tanggal,
})
}
>
@@ -297,7 +297,7 @@ export default function AdminEvent_ComponentTableReview({
leftIcon={}
radius={"xl"}
onClick={async () => {
- const checkStatus = await event_checkStatus({ id: eventId });
+ const checkStatus = await event_checkStatus({ id: e.id });
if (checkStatus) {
open();
diff --git a/src/app_modules/event/_ui/konfirmasi.tsx b/src/app_modules/event/_ui/konfirmasi.tsx
index ec95fc00..90194d65 100644
--- a/src/app_modules/event/_ui/konfirmasi.tsx
+++ b/src/app_modules/event/_ui/konfirmasi.tsx
@@ -4,7 +4,17 @@ import {
UIGlobal_LayoutDefault,
UIGlobal_LayoutTamplate,
} from "@/app_modules/_global/ui";
-import { Button, Paper, Skeleton, Stack, Text, Title } from "@mantine/core";
+import {
+ Button,
+ Card,
+ Center,
+ Group,
+ Paper,
+ Skeleton,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
import { MODEL_EVENT } from "../model/interface";
import { useShallowEffect } from "@mantine/hooks";
import { AccentColor, MainColor } from "@/app_modules/_global/color";
@@ -13,112 +23,328 @@ import {
ComponentGlobal_NotifikasiBerhasil,
ComponentGlobal_NotifikasiGagal,
} from "@/app_modules/_global/notif_global";
-import { useRouter } from "next/navigation";
+import { redirect, useRouter } from "next/navigation";
import { RouterEvent } from "@/app/lib/router_hipmi/router_event";
import { useState } from "react";
+import { API_RouteEvent } from "@/app/lib/api_user_router/route_api_event";
+import { ComponentGlobal_CardStyles } from "@/app_modules/_global/component";
+import moment from "moment";
+import { gs_event_hotMenu } from "../global_state";
+import { useAtom } from "jotai";
export default function Ui_Konfirmasi({
- dataEvent,
userLoginId,
+ eventId,
}: {
- dataEvent: MODEL_EVENT;
userLoginId: string;
+ eventId: string;
}) {
// console.log(dataEvent);
const router = useRouter();
- const [isLoading, setLoading] = useState(false);
+ const [data, setData] = useState(null);
const [isPresent, setIsPresent] = useState(null);
useShallowEffect(() => {
- onLoadKehadiran({
- onChange(val) {
- setIsPresent(val);
- },
- });
- }, [setIsPresent]);
+ onLoadData();
+ }, []);
- async function onLoadKehadiran({
- onChange,
- }: {
- onChange: (val: boolean) => void;
- }) {
- const res = await fetch(
- `/api/event/check-kehadiran?userId=${userLoginId}&eventId=${dataEvent.id}`
+ async function onLoadData() {
+ const data = await fetch(
+ API_RouteEvent.get_one_by_id({ eventId: eventId })
);
- const checkKehadiran = await res.json();
-
- onChange(checkKehadiran.res);
- }
- async function onUpdateKonfirmasi() {
- setLoading(true);
- const res = await event_funUpdateKehadiran({
- eventId: dataEvent.id,
- userId: userLoginId,
- });
-
- if (res.status === 200) {
- ComponentGlobal_NotifikasiBerhasil(res.message, 2000);
- router.push(RouterEvent.detail_main + dataEvent.id);
- } else {
- setLoading(false);
- ComponentGlobal_NotifikasiGagal(res.message);
- }
+ const res = await data.json();
+ console.log(res.data, "data event");
+ setData(res.data);
}
- console.log(isPresent, "isPresent");
+ useShallowEffect(() => {
+ onLoadKehadiran();
+ }, []);
+
+ async function onLoadKehadiran() {
+ const res = await fetch(
+ API_RouteEvent.check_kehadiran({ eventId: eventId, userId: userLoginId })
+ );
+ const data = await res.json();
+
+ setIsPresent(data);
+ }
+
+ // console.log("kehadiran:", isPresent);
+ // console.log("data:", data);
+
+ if (data == null && isPresent == null) {
+ return ;
+ }
+
+ if (data == null) {
+ return (
+ <>
+
+ >
+ );
+ }
+
+ if (moment(data?.tanggal).diff(moment(), "minute") < 0) {
+ return (
+ <>
+
+ >
+ );
+ }
+
+ if (isPresent && data) {
+ return ;
+ }
+
+ if (isPresent == false && data) {
+ return (
+
+ );
+ }
+ // const tgl = moment(data?.tanggal).diff(moment(), "minute") < 0;
+ // return (
+ // <>
+ //
+ //
+ // {JSON.stringify(tgl)}
+ //
+ //
+ // >
+ // );
+}
+
+function DataNotFound() {
+ const router = useRouter();
+ const [isLoading, setLoading] = useState(false);
+ const [hotMenu, setHotMenu] = useAtom(gs_event_hotMenu);
return (
<>
-
- {isPresent == null ? (
-
- ) : isPresent ? (
-
-
-
- Anda telah terkonfirmasi silahkan kembali ke beranda !
-
- {dataEvent.title}
-
-
-
- ) : (
-
-
-
- Anda mengkonfirmasi bahwa anda telah datang & ikut menghadir
- di event
-
- {dataEvent.title}
-
-
-
- )}
+
+
+
+
+ Data Event Tidak Ditemukan
+
+
+
+
+
+
+
+ >
+ );
+}
+
+function SkeletonIsDataNull() {
+ return (
+ <>
+
+
+
+
+ {" "}
+ {" "}
+
+
+
+
+
+
+
+
+ >
+ );
+}
+
+function EventAlreadyDone({
+ title,
+ eventId,
+}: {
+ title: string;
+ eventId: string;
+}) {
+ const router = useRouter();
+ const [isLoading, setLoading] = useState(false);
+ const [isLoadingDetail, setLoadingDetail] = useState(false);
+ const [hotMenu, setHotMenu] = useAtom(gs_event_hotMenu);
+
+ return (
+ <>
+
+
+
+
+
+ Kami mohon maaf, Bapak/Ibu, acara{" "}
+
+ {title}
+ {" "}
+ telah selesai, sehingga konfirmasi kehadiran sudah tidak dapat
+ dilakukan. Terima kasih atas perhatian dan minat Anda. Kami
+ berharap dapat bertemu di acara kami berikutnya. Terima kasih,
+ Bapak/Ibu, kehadiran Anda di acara.
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+}
+
+function UserNotConfirm({
+ title,
+ eventId,
+ userLoginId,
+}: {
+ title: string;
+ eventId: string;
+ userLoginId: string;
+}) {
+ const router = useRouter();
+ const [isLoading, setLoading] = useState(false);
+ async function onUpdateKonfirmasi() {
+ setLoading(true);
+ const res = await event_funUpdateKehadiran({
+ eventId: eventId,
+ userId: userLoginId,
+ });
+
+ if (res.status === 200) {
+ ComponentGlobal_NotifikasiBerhasil(res.message, 2000);
+ router.push(RouterEvent.detail_main + eventId);
+ } else {
+ setLoading(false);
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ }
+ return (
+ <>
+
+
+
+
+
+ Terima kasih atas kehadiran Anda di acara{" "}
+
+ {title}
+ {" "}
+ pada hari ini. Mohon untuk mengonfirmasi kehadiran Anda dengan
+ menekan tombol {"Hadir"} atau fitur konfirmasi yang tersedia di
+ bawah. Terima kasih dan selamat menikmati acara.
+
+
+
+
+
+
+
+ >
+ );
+}
+
+function UserAlreadyConfirm({ title }: { title: string }) {
+ const router = useRouter();
+ const [isLoading, setLoading] = useState(false);
+ const [hotMenu, setHotMenu] = useAtom(gs_event_hotMenu);
+
+ return (
+ <>
+
+
+
+
+
+ Terima kasih, Bapak/Ibu, kehadiran Anda di acara{" "}
+
+ {title}
+ {" "}
+ telah berhasil dikonfirmasi. Kami senang menyambut Anda dan
+ semoga acara ini memberikan manfaat yang maksimal. Selamat
+ mengikuti kegiatan.
+
+
+
+
+
>
diff --git a/src/app_modules/event/component/card_view/card_beranda.tsx b/src/app_modules/event/component/card_view/card_beranda.tsx
index d751c207..adb952fa 100644
--- a/src/app_modules/event/component/card_view/card_beranda.tsx
+++ b/src/app_modules/event/component/card_view/card_beranda.tsx
@@ -34,11 +34,11 @@ export function ComponentEvent_CardBeranda({ data }: { data: any }) {
{data.title}
-
+ {/*
{new Intl.DateTimeFormat("id-ID", {
dateStyle: "medium",
- }).format(data.tanggal)}
-
+ }).format(data?.tanggal)}
+ */}
diff --git a/src/app_modules/event/component/index.ts b/src/app_modules/event/component/index.ts
index d9cc4eeb..b146da16 100644
--- a/src/app_modules/event/component/index.ts
+++ b/src/app_modules/event/component/index.ts
@@ -1,5 +1,7 @@
import Event_ComponentCreateButton from "./button/button_create_event";
+import Event_ComponentSkeletonBeranda from "./skeleton/comp_skeleton_beranda";
import { Event_ComponentSkeletonDetailData } from "./skeleton/comp_skeleton_detail_data";
export { Event_ComponentSkeletonDetailData };
export { Event_ComponentCreateButton };
+export { Event_ComponentSkeletonBeranda };
diff --git a/src/app_modules/event/component/skeleton/comp_skeleton_beranda.tsx b/src/app_modules/event/component/skeleton/comp_skeleton_beranda.tsx
new file mode 100644
index 00000000..e45a9247
--- /dev/null
+++ b/src/app_modules/event/component/skeleton/comp_skeleton_beranda.tsx
@@ -0,0 +1,29 @@
+import { AccentColor } from "@/app_modules/_global/color";
+import { ComponentGlobal_CardStyles } from "@/app_modules/_global/component";
+import { Grid, Group, Paper, Skeleton, Stack, Text } from "@mantine/core";
+
+export default function Event_ComponentSkeletonBeranda() {
+ return (
+ <>
+ {Array.from({ length: 10 }).map((_, index) => (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ))}
+ >
+ );
+}
diff --git a/src/app_modules/event/main/beranda.tsx b/src/app_modules/event/main/beranda.tsx
index 3387a29b..33565488 100644
--- a/src/app_modules/event/main/beranda.tsx
+++ b/src/app_modules/event/main/beranda.tsx
@@ -13,6 +13,7 @@ import {
Loader,
rem,
Skeleton,
+ Paper,
} from "@mantine/core";
import { useShallowEffect } from "@mantine/hooks";
import { useAtom } from "jotai";
@@ -22,12 +23,10 @@ import { useState } from "react";
import { ComponentEvent_CardBeranda } from "../component/card_view/card_beranda";
import { event_getListAllPublish } from "../fun/get/get_list_all_publish";
import { MODEL_EVENT } from "../model/interface";
+import { Event_ComponentSkeletonBeranda } from "../component";
+import { API_RouteEvent } from "@/app/lib/api_user_router/route_api_event";
-export default function Event_Beranda({
- dataEvent,
-}: {
- dataEvent: MODEL_EVENT[];
-}) {
+export default function Event_Beranda() {
const [data, setData] = useState(null);
const [activePage, setActivePage] = useState(1);
const [isLoading, setIsLoading] = useState(false);
@@ -39,6 +38,7 @@ export default function Event_Beranda({
const [isShowUpdate, setIsShowUpdate] = useState(false);
useShallowEffect(() => {
+ setIsShowUpdate(false);
loadData();
}, []);
@@ -49,14 +49,16 @@ export default function Event_Beranda({
}, [isTriggerEventBeranda]);
async function loadData() {
- const loadData = await event_getListAllPublish({ page: 1 });
- setData(loadData as any);
+ const res = await fetch(API_RouteEvent.get_all({ page: activePage }));
+ const data = await res.json();
+ setData(data.data as any);
}
async function onLoadNewData() {
setIsLoading(true);
- const loadData = await event_getListAllPublish({ page: 1 });
- setData(loadData as any);
+ const res = await fetch(API_RouteEvent.get_all({ page: 1 }));
+ const data = await res.json();
+ setData(data.data as any);
setIsShowUpdate(false);
setIsTriggerEventBeranca(false);
@@ -92,16 +94,7 @@ export default function Event_Beranda({
{data == null ? (
- Array.from({ length: 10 }).map((_, index) => (
-
- ))
+
) : _.isEmpty(data) ? (
) : (
diff --git a/src/app_modules/event/splash/index.tsx b/src/app_modules/event/splash/index.tsx
index e6d75e20..bd06d4ca 100644
--- a/src/app_modules/event/splash/index.tsx
+++ b/src/app_modules/event/splash/index.tsx
@@ -16,7 +16,7 @@ export default function Event_SplashScreen() {
setTimeout(() => {
router.replace(RouterEvent.beranda);
setHotMenu(0);
- }, 1000);
+ }, 500);
}, []);
return (
<>
|