Fix : Event scanbarcode
This commit is contained in:
15
src/app/api/event/check-kehadiran/route.ts
Normal file
15
src/app/api/event/check-kehadiran/route.ts
Normal file
@@ -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 });
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@ import {
|
|||||||
event_funCheckPesertaByUserId,
|
event_funCheckPesertaByUserId,
|
||||||
} from "@/app_modules/event/fun";
|
} from "@/app_modules/event/fun";
|
||||||
import { event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id";
|
import { event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id";
|
||||||
|
import moment from "moment";
|
||||||
import { redirect } from "next/navigation";
|
import { redirect } from "next/navigation";
|
||||||
|
|
||||||
export default async function Page({ params }: { params: { id: string } }) {
|
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,
|
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)
|
if (dataEvent?.isArsip)
|
||||||
return redirect(`/dev/event/detail/riwayat/${dataEvent.id}`);
|
return redirect(`/dev/event/detail/riwayat/${dataEvent.id}`);
|
||||||
|
|||||||
@@ -53,17 +53,17 @@ function TableStatus({ listPublish }: { listPublish: any }) {
|
|||||||
const [origin, setOrigin] = useState("");
|
const [origin, setOrigin] = useState("");
|
||||||
|
|
||||||
useShallowEffect(() => {
|
useShallowEffect(() => {
|
||||||
onLoadOrigin(setOrigin);
|
if (typeof window !== "undefined") {
|
||||||
// if (typeof window !== "undefined") {
|
console.log(window.location.origin);
|
||||||
// setOrigin(window.location.origin);
|
setOrigin(window.location.origin);
|
||||||
// }
|
}
|
||||||
}, [setOrigin]);
|
}, [setOrigin]);
|
||||||
|
|
||||||
async function onLoadOrigin(setOrigin: any) {
|
// async function onLoadOrigin(setOrigin: any) {
|
||||||
const res = await fetch("/api/origin-url");
|
// const res = await fetch("/api/origin-url");
|
||||||
const result = await res.json();
|
// const result = await res.json();
|
||||||
setOrigin(result.origin);
|
// setOrigin(result.origin);
|
||||||
}
|
// }
|
||||||
|
|
||||||
async function onSearch(s: string) {
|
async function onSearch(s: string) {
|
||||||
setSearch(s);
|
setSearch(s);
|
||||||
@@ -97,11 +97,38 @@ function TableStatus({ listPublish }: { listPublish: any }) {
|
|||||||
<td>
|
<td>
|
||||||
<Center w={200}>
|
<Center w={200}>
|
||||||
<QRCode
|
<QRCode
|
||||||
|
id={e.id}
|
||||||
style={{ height: 70, width: 70 }}
|
style={{ height: 70, width: 70 }}
|
||||||
value={`${origin}/dev/event/konfirmasi/${e.id}`}
|
value={`${origin}/dev/event/konfirmasi/${e.id}`}
|
||||||
/>
|
/>
|
||||||
</Center>
|
</Center>
|
||||||
</td>
|
</td>
|
||||||
|
<td>
|
||||||
|
<Center w={200}>
|
||||||
|
<input
|
||||||
|
type="button"
|
||||||
|
value="Download QR"
|
||||||
|
onClick={() => {
|
||||||
|
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)}`;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</Center>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<Center w={200}>
|
<Center w={200}>
|
||||||
<Text>{e?.Author?.username}</Text>
|
<Text>{e?.Author?.username}</Text>
|
||||||
@@ -225,6 +252,9 @@ function TableStatus({ listPublish }: { listPublish: any }) {
|
|||||||
<th>
|
<th>
|
||||||
<Center>QR Code</Center>
|
<Center>QR Code</Center>
|
||||||
</th>
|
</th>
|
||||||
|
<th>
|
||||||
|
<Center>Download QR</Center>
|
||||||
|
</th>
|
||||||
|
|
||||||
<th>
|
<th>
|
||||||
<Center>Username</Center>
|
<Center>Username</Center>
|
||||||
|
|||||||
@@ -30,14 +30,6 @@ export default function Ui_Konfirmasi({
|
|||||||
const [isLoading, setLoading] = useState(false);
|
const [isLoading, setLoading] = useState(false);
|
||||||
const [isPresent, setIsPresent] = useState<boolean | null>(null);
|
const [isPresent, setIsPresent] = useState<boolean | null>(null);
|
||||||
|
|
||||||
// useShallowEffect(() => {
|
|
||||||
// onLoadData({
|
|
||||||
// onPublish(val) {
|
|
||||||
// setData(val);
|
|
||||||
// },
|
|
||||||
// });
|
|
||||||
// }, [setData]);
|
|
||||||
|
|
||||||
useShallowEffect(() => {
|
useShallowEffect(() => {
|
||||||
onLoadKehadiran({
|
onLoadKehadiran({
|
||||||
onChange(val) {
|
onChange(val) {
|
||||||
@@ -51,12 +43,12 @@ export default function Ui_Konfirmasi({
|
|||||||
}: {
|
}: {
|
||||||
onChange: (val: boolean) => void;
|
onChange: (val: boolean) => void;
|
||||||
}) {
|
}) {
|
||||||
const checkKehadiran = await event_funCheckKehadiran({
|
const res = await fetch(
|
||||||
eventId: dataEvent.id,
|
`/api/event/check-kehadiran?userId=${userLoginId}&eventId=${dataEvent.id}`
|
||||||
userId: userLoginId as string,
|
);
|
||||||
});
|
const checkKehadiran = await res.json();
|
||||||
|
|
||||||
onChange(checkKehadiran);
|
onChange(checkKehadiran.res);
|
||||||
}
|
}
|
||||||
async function onUpdateKonfirmasi() {
|
async function onUpdateKonfirmasi() {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
@@ -74,6 +66,7 @@ export default function Ui_Konfirmasi({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log(isPresent, "isPresent");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ export default function Event_Beranda({
|
|||||||
}: {
|
}: {
|
||||||
dataEvent: MODEL_EVENT[];
|
dataEvent: MODEL_EVENT[];
|
||||||
}) {
|
}) {
|
||||||
const [data, setData] = useState(dataEvent);
|
const [data, setData] = useState<MODEL_EVENT[] >([]);
|
||||||
const [activePage, setActivePage] = useState(1);
|
const [activePage, setActivePage] = useState(1);
|
||||||
const [isLoading, setIsLoading] = useState(false);
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
|
|
||||||
@@ -76,8 +76,6 @@ export default function Event_Beranda({
|
|||||||
setData(val);
|
setData(val);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
Update beranda
|
Update beranda
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ const middlewareConfig: MiddlewareConfig = {
|
|||||||
"/api/auth/*",
|
"/api/auth/*",
|
||||||
"/api/origin-url",
|
"/api/origin-url",
|
||||||
"/api/user",
|
"/api/user",
|
||||||
|
"/api/event/*",
|
||||||
"/login",
|
"/login",
|
||||||
"/register",
|
"/register",
|
||||||
"/validasi",
|
"/validasi",
|
||||||
|
|||||||
Reference in New Issue
Block a user