/** * ActivityInformationCard Component * Displays activity details for Claim Management requests */ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Calendar, MapPin, DollarSign, Receipt } from 'lucide-react'; import { ClaimActivityInfo } from '../../types/claimManagement.types'; import { format } from 'date-fns'; interface ActivityInformationCardProps { activityInfo: ClaimActivityInfo; className?: string; } export function ActivityInformationCard({ activityInfo, className }: ActivityInformationCardProps) { // Defensive check: Ensure activityInfo exists if (!activityInfo) { console.warn('[ActivityInformationCard] activityInfo is missing'); return (

Activity information not available

); } const formatCurrency = (amount: string | number) => { const numAmount = typeof amount === 'string' ? parseFloat(amount) : amount; if (isNaN(numAmount)) return 'N/A'; return `₹${numAmount.toLocaleString('en-IN', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`; }; const formatDate = (dateString?: string) => { if (!dateString) return 'N/A'; try { return format(new Date(dateString), 'MMM d, yyyy'); } catch { return dateString; } }; return ( Activity Information
{/* Activity Name */}

{activityInfo.activityName}

{/* Activity Type */}

{activityInfo.activityType}

{/* Location */}

{activityInfo.location}

{/* Requested Date */}

{formatDate(activityInfo.requestedDate)}

{/* Estimated Budget */}

{activityInfo.estimatedBudget ? formatCurrency(activityInfo.estimatedBudget) : 'TBD'}

{/* Closed Expenses */} {activityInfo.closedExpenses !== undefined && (

{formatCurrency(activityInfo.closedExpenses)}

)} {/* Period */} {activityInfo.period && (

{formatDate(activityInfo.period.startDate)} - {formatDate(activityInfo.period.endDate)}

)}
{/* Closed Expenses Breakdown */} {activityInfo.closedExpensesBreakdown && activityInfo.closedExpensesBreakdown.length > 0 && (
{activityInfo.closedExpensesBreakdown.map((item, index) => (
{item.description} {formatCurrency(item.amount)}
))}
Total {formatCurrency( activityInfo.closedExpensesBreakdown.reduce((sum, item) => sum + item.amount, 0) )}
)} {/* Description */} {activityInfo.description && (

{activityInfo.description}

)}
); }