'use client'; import { useState, useEffect } from 'react'; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { format } from 'date-fns'; import { useToast } from '@/hooks/use-toast'; import { getImportById, calculateCintasSummaries } from '@/app/actions/imports'; interface CintasSummary { id: number; week: string; trrTotal: number; fourWkAverages: number; trrPlus4Wk: number; powerAdds: number; weekId: number; } interface ImportDetail { id: number; name: string; importDate: string; layout: { id: number; name: string; sections: Array<{ id: number; name: string; tableName: string; fields: Array<{ name: string; importTableColumnName: string; }>; }>; }; cintasSummaries: CintasSummary[]; } interface ImportDetailDialogProps { open: boolean; onOpenChange: (open: boolean) => void; importId: number; } export function ImportDetailDialog({ open, onOpenChange, importId }: ImportDetailDialogProps) { const [importDetail, setImportDetail] = useState(null); const [loading, setLoading] = useState(true); const [calculating, setCalculating] = useState(false); const { toast } = useToast(); useEffect(() => { if (open && importId) { loadImportDetail(); } }, [open, importId]); async function loadImportDetail() { try { const result = await getImportById(importId); if (result.success) { setImportDetail(result.data); } else { toast({ title: 'Error', description: result.error || 'Failed to load import details', variant: 'destructive', }); } } catch (error) { toast({ title: 'Error', description: 'Failed to load import details', variant: 'destructive', }); } finally { setLoading(false); } } async function handleCalculateSummaries() { setCalculating(true); try { const result = await calculateCintasSummaries(importId); if (result.success) { toast({ title: 'Success', description: 'Cintas summaries calculated successfully', }); loadImportDetail(); } else { toast({ title: 'Error', description: result.error || 'Failed to calculate summaries', variant: 'destructive', }); } } catch (error) { toast({ title: 'Error', description: 'Failed to calculate summaries', variant: 'destructive', }); } finally { setCalculating(false); } } if (loading) { return (
); } if (!importDetail) return null; return ( Import Details View detailed information about this import
Import Information
Name: {importDetail.name}
Layout: {importDetail.layout.name}
Import Date: {format(new Date(importDetail.importDate), 'PPpp')}
Layout Configuration
{importDetail.layout.sections.map((section) => (

{section.name}

Table: {section.tableName}

{section.fields.map((field) => (
{field.name}: {field.importTableColumnName}
))}
))}
Cintas Summaries
{importDetail.cintasSummaries.length === 0 ? (

No summaries calculated yet

) : (
{importDetail.cintasSummaries.map((summary) => ( ))}
Week TRR Total 4WK Averages TRR + 4WK Power Adds
{summary.week} {summary.trrTotal} {summary.fourWkAverages} {summary.trrPlus4Wk} {summary.powerAdds}
)}
); }