"use client" import Brand from "@/components/Brand"; import CheckInForm from "@/components/CheckInForm"; import { getTodaysDate } from "@/lib/common/helper-methods"; import { useAttendanceRegisterActions, useAttendanceRegisterState } from "@/providers/AttendanceRegisterProvider"; import { ICreateVisitDto, IVisit } from "@/providers/VisitProvider/context"; import { useVisitActions, useVisitState } from "@/providers/VisitProvider"; import { useVisitorActions, useVisitorState } from "@/providers/VisitorProvider"; import { CalendarDays, LogIn } from "lucide-react"; import { useRouter } from "next/navigation"; import { useEffect, useState } from "react"; export default function HomePage() { const router = useRouter(); const registerState = useAttendanceRegisterState(); const registerActions = useAttendanceRegisterActions(); const visitActions = useVisitActions(); const visitState = useVisitState(); const visitorActions = useVisitorActions(); const visitorState = useVisitorState(); const [checkInOpen, setCheckInOpen] = useState(false); const registerUnavailable = registerState.isPending || !registerState.attendanceRegister || registerState.attendanceRegister.isClosed; useEffect(() => { void registerActions.getToday().catch(() => undefined); }, [registerActions]); const checkInVisitor = async (payload: ICreateVisitDto) => { const attendanceRegister = registerState.attendanceRegister; const attendanceRegisterId = attendanceRegister?.id; if (!attendanceRegister || !attendanceRegisterId) { throw new Error("Today's attendance register is not available."); } if (attendanceRegister.isClosed) { throw new Error("Today's attendance register is closed."); } const normalizedPayload: ICreateVisitDto = { ...payload, attendanceRegisterId, }; if (payload.visitor.id) { const existingUserPayload : IVisit = { visitReason: normalizedPayload.visitReason, otherReason: normalizedPayload.otherReason, visitorId: payload.visitor.id, attendanceRegisterId, } await visitActions.checkIn(existingUserPayload) return; } const visitor = { ...normalizedPayload.visitor }; delete visitor.id; await visitActions.create({ ...normalizedPayload, visitor }); }; return (

{getTodaysDate()}

Welcome — check in

Welcome to Moipone. Let us know you've arrived by checking in below — it takes about a minute and no account is needed.

); }