From ea738e676d07f8b7066870c9de19fc02f437d630 Mon Sep 17 00:00:00 2001 From: Atul Gunjal Date: Tue, 22 Apr 2025 15:41:41 +0530 Subject: [PATCH] solved build errors --- src/app/pages/SingleBooked/page.js | 86 ++++++++++++++++------------- src/app/pages/SingleBooking/page.js | 4 +- src/app/pages/StaffBooking/page.js | 12 ++-- src/app/pages/entries/page.js | 34 +++++------- 4 files changed, 70 insertions(+), 66 deletions(-) diff --git a/src/app/pages/SingleBooked/page.js b/src/app/pages/SingleBooked/page.js index eab9708..f99957a 100644 --- a/src/app/pages/SingleBooked/page.js +++ b/src/app/pages/SingleBooked/page.js @@ -1,12 +1,13 @@ "use client"; +import { Suspense } from 'react'; import { useSearchParams } from 'next/navigation'; -import { useEffect, useState, useRef } from 'react'; -import { databases, ID, Query } from "../../lib/appwrite"; // Added Query import +import { useEffect, useState, useRef } from 'react'; +import { databases, ID, Query } from "../../lib/appwrite"; import { DATABASE_ID, COLLECTION_ID } from "../../lib/api"; import Header from '../../components/partials/header'; import Link from 'next/link'; -export default function SingleBooked() { +function SingleBookedContent() { const searchParams = useSearchParams(); const nameParam = searchParams.get('name'); const dateParam = searchParams.get('date'); @@ -20,7 +21,6 @@ export default function SingleBooked() { const generateTokenNumber = async (date) => { try { - // Get the highest token number for the date const response = await databases.listDocuments( DATABASE_ID, COLLECTION_ID, @@ -35,45 +35,45 @@ export default function SingleBooked() { return (parseInt(lastToken) + 1).toString().padStart(3, '0'); } catch (error) { console.error("Token generation error:", error); - return "001"; // Fallback token number - } - }; - - const createBooking = async () => { - if (bookingCreated.current) return; // Prevent duplicate calls - - try { - bookingCreated.current = true; // Mark as created - setLoading(true); - setError(null); - - const generatedToken = await generateTokenNumber(appointmentDate); - - await databases.createDocument( - DATABASE_ID, - COLLECTION_ID, - ID.unique(), - { - tokenNumber: generatedToken, - date: appointmentDate, - patientName: name, - status: "booked", - bookedBy: "staff", - patientId: ID.unique(), - } - ); - - setToken(generatedToken); - } catch (error) { - console.error("Booking error:", error); - setError(error.message); - bookingCreated.current = false; // Reset on error to allow retry - } finally { - setLoading(false); + return "001"; } }; useEffect(() => { + const createBooking = async () => { + if (bookingCreated.current) return; + + try { + bookingCreated.current = true; + setLoading(true); + setError(null); + + const generatedToken = await generateTokenNumber(appointmentDate); + + await databases.createDocument( + DATABASE_ID, + COLLECTION_ID, + ID.unique(), + { + tokenNumber: generatedToken, + date: appointmentDate, + patientName: name, + status: "booked", + bookedBy: "staff", + patientId: ID.unique(), + } + ); + + setToken(generatedToken); + } catch (error) { + console.error("Booking error:", error); + setError(error.message); + bookingCreated.current = false; + } finally { + setLoading(false); + } + }; + if (name && appointmentDate) { createBooking(); } @@ -125,4 +125,12 @@ export default function SingleBooked() { ); +} + +export default function SingleBooked() { + return ( + Loading...}> + + + ); } \ No newline at end of file diff --git a/src/app/pages/SingleBooking/page.js b/src/app/pages/SingleBooking/page.js index 3b68654..2eb065e 100644 --- a/src/app/pages/SingleBooking/page.js +++ b/src/app/pages/SingleBooking/page.js @@ -36,7 +36,7 @@ export default function SingleBooking() { // Get current date in YYYY-MM-DD format const today = new Date(); const appointmentDate = today.toISOString().split('T')[0]; - + // Navigate to confirmation page with name and current date as query params router.push(`/pages/SingleBooked?name=${encodeURIComponent(name)}&date=${encodeURIComponent(appointmentDate)}`); }; @@ -93,7 +93,7 @@ export default function SingleBooking() {
- Note: Token booking is available for today's date only. + Note: Token booking is available for today's date only.
diff --git a/src/app/pages/StaffBooking/page.js b/src/app/pages/StaffBooking/page.js index 4e0f876..d6b08ce 100644 --- a/src/app/pages/StaffBooking/page.js +++ b/src/app/pages/StaffBooking/page.js @@ -1,7 +1,7 @@ 'use client'; import { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; -import { databases,Query } from "../../lib/appwrite"; +import { databases, Query } from "../../lib/appwrite"; import { DATABASE_ID, COLLECTION_ID } from "../../lib/api"; import Header from "../../components/partials/header"; import { useTheme } from "../../context/ThemeContext"; @@ -68,7 +68,7 @@ export default function StaffBooking() { {/* Statistics Overview */}

- Today's Overview + Today's Overview

@@ -95,8 +95,8 @@ export default function StaffBooking() {
router.push('/pages/SingleBooking')} className={`p-6 cursor-pointer rounded-lg border transition-all hover:shadow-md ${darkMode ? - 'bg-gray-800 border-gray-700 hover:border-blue-600 hover:bg-gray-700' : - 'bg-white border-gray-200 hover:border-blue-500 hover:bg-blue-50' + 'bg-gray-800 border-gray-700 hover:border-blue-600 hover:bg-gray-700' : + 'bg-white border-gray-200 hover:border-blue-500 hover:bg-blue-50' }`} >
@@ -117,8 +117,8 @@ export default function StaffBooking() {
router.push('/pages/MultiBooking')} className={`p-6 cursor-pointer rounded-lg border transition-all hover:shadow-md ${darkMode ? - 'bg-gray-800 border-gray-700 hover:border-blue-600 hover:bg-gray-700' : - 'bg-white border-gray-200 hover:border-blue-500 hover:bg-blue-50' + 'bg-gray-800 border-gray-700 hover:border-blue-600 hover:bg-gray-700' : + 'bg-white border-gray-200 hover:border-blue-500 hover:bg-blue-50' }`} >
diff --git a/src/app/pages/entries/page.js b/src/app/pages/entries/page.js index 3342329..8d0e58c 100644 --- a/src/app/pages/entries/page.js +++ b/src/app/pages/entries/page.js @@ -95,14 +95,14 @@ export default function EntriesTable() { useEffect(() => { if (userRole === "patient") return; // Don't load data if patient - + const loadData = async () => { try { const data = await getEntries(); setEntries(data); setFilteredEntries(data); updateTokenInfo(data); - + // Load settings (avg consultation time) // const settings = await getSettings(); // setAvgConsultTime(settings?.avgConsultationTime || 15); @@ -145,7 +145,7 @@ export default function EntriesTable() {

Access Denied

-

You don't have permission to view this page.

+

You don't have permission to view this page.

@@ -162,8 +162,7 @@ export default function EntriesTable() { missedTokens={missedTokens} />
-

Today's Entries

- +

Today's Entries

{currentEntries.map((entry) => ( - {entry.tokenNumber} {entry.patientName} - + }`}> {entry.bookedBy} {entry.status} - {entry.status === "booked" ? - `~${calculateWaitTime(entry.tokenNumber)} mins` : + {entry.status === "booked" ? + `~${calculateWaitTime(entry.tokenNumber)} mins` : '-'} @@ -246,9 +243,8 @@ export default function EntriesTable() { {/* Pagination */} -
+