import { useState, useEffect, useCallback } from "react"; import { getAllInquiriesApi, HealthInquiry } from "@/api/healthCheck"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Badge } from "@/components/ui/badge"; import { Loader2, RefreshCw, ChevronLeft, ChevronRight } from "lucide-react"; export default function PackageInquiriesTab() { const [inquiries, setInquiries] = useState([]); const [loading, setLoading] = useState(true); const [filterDate, setFilterDate] = useState(""); const [startDate, setStartDate] = useState(""); const [endDate, setEndDate] = useState(""); const [currentPage, setCurrentPage] = useState(1); const [itemsPerPage, setItemsPerPage] = useState(10); const [totalItems, setTotalItems] = useState(0); const [totalPages, setTotalPages] = useState(1); const fetchInquiries = useCallback(async () => { setLoading(true); try { const res = await getAllInquiriesApi( currentPage, itemsPerPage, filterDate, startDate, endDate, ); setInquiries(res.data || []); setTotalItems(res.pagination?.total || 0); setTotalPages(res.pagination?.totalPages || 1); } catch (err) { console.error("Failed to fetch inquiries", err); } finally { setLoading(false); } }, [currentPage, itemsPerPage, filterDate, startDate, endDate]); useEffect(() => { fetchInquiries(); }, [fetchInquiries]); const handleFilterChange = ( setter: React.Dispatch>, value: string, ) => { setter(value); setCurrentPage(1); }; const indexOfFirstItem = (currentPage - 1) * itemsPerPage; const indexOfLastItem = Math.min(currentPage * itemsPerPage, totalItems); return ( Package Inquiries
handleFilterChange(setFilterDate, e.target.value) } className="w-[140px] text-sm" disabled={!!startDate || !!endDate} />
handleFilterChange(setStartDate, e.target.value)} className="w-[140px] text-sm" disabled={!!filterDate} />
handleFilterChange(setEndDate, e.target.value)} className="w-[140px] text-sm" disabled={!!filterDate} />
Requested Date Patient Details Requested Package Age/Gender Message {loading ? ( ) : inquiries.length === 0 ? ( No inquiries found for the selected criteria ) : ( inquiries.map((inq) => (
{new Date(inq.preferredDate).toLocaleDateString()}
Submitted:{" "} {new Date(inq.createdAt).toLocaleDateString()}
{inq.fullName}
{inq.mobileNumber}
{inq.email || "-"}
{inq.healthPackage?.name || "N/A"}
{inq.age} yrs / {inq.gender}
{inq.message || "No message provided."}
{inq.message || "No message provided."}
)) )}
{!loading && totalItems > 0 && (
Showing{" "} {indexOfFirstItem + 1} to{" "} {indexOfLastItem} of{" "} {totalItems} inquiries
Page {currentPage} of {totalPages || 1}
)}
); }