import React from 'react'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; import { Alert, AlertDescription } from '@/components/ui/alert'; import { Button } from '@/components/ui/button'; import { CheckCircle, XCircle, AlertTriangle, Download, FileText } from 'lucide-react'; import { BulkImportResponse } from '@/types/asset-management'; interface ImportResultsProps { result: BulkImportResponse; onClose?: () => void; onDownloadErrors?: () => void; } const ImportResults: React.FC = ({ result, onClose, onDownloadErrors }) => { const { results } = result; const hasErrors = results.errors && results.errors.length > 0; const hasSuccessfulImports = results.successful > 0; const downloadErrorReport = () => { if (!hasErrors) return; const errorReport = results.errors.map(error => ({ 'Row': error.index + 1, 'Asset Type': error.asset.assetType, 'Brand/Model': error.asset.brandModel, 'Serial Number': error.asset.serialNumber, 'Error': error.error, 'Field': error.field || 'General' })); const csvContent = [ Object.keys(errorReport[0]).join(','), ...errorReport.map(row => Object.values(row).map(val => `"${val}"`).join(',')) ].join('\n'); const blob = new Blob([csvContent], { type: 'text/csv' }); const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; link.download = `asset_import_errors_${new Date().toISOString().split('T')[0]}.csv`; document.body.appendChild(link); link.click(); document.body.removeChild(link); URL.revokeObjectURL(url); if (onDownloadErrors) { onDownloadErrors(); } }; return (
{/* Summary Card */} {result.success ? ( ) : ( )} Import Results {/* Summary Stats */}
{results.total}
Total Assets
{results.successful}
Successful
{results.failed}
Failed
{/* Status Message */}
{result.message}
{hasSuccessfulImports && (
{results.successful} asset{results.successful !== 1 ? 's' : ''} have been successfully added to your inventory.
)}
{/* Successful Imports */} {hasSuccessfulImports && results.createdAssets && results.createdAssets.length > 0 && ( Successfully Imported Assets ({results.successful})
{results.createdAssets.map((asset, index) => (
{asset.assetCode}
{asset.assetType}
{asset.brandModel} - {asset.serialNumber}
{asset.assetCondition}
))}
)} {/* Import Errors */} {hasErrors && (
Import Errors ({results.failed})
{results.errors.map((error, index) => (
Row {error.index + 1} {error.field && ( {error.field} )}
{error.asset.assetType} - {error.asset.brandModel}
Serial: {error.asset.serialNumber}
{error.error}
))}
)} {/* Action Buttons */}
{hasErrors && ( )} {onClose && ( )}
); }; export default ImportResults;