'use client'; import { useState } from 'react'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { useToast } from '@/hooks/use-toast'; import { createImport, getLayoutConfigurations } from '@/app/actions/imports'; import { useEffect } from 'react'; interface LayoutConfiguration { id: number; name: string; } interface CreateImportDialogProps { open: boolean; onOpenChange: (open: boolean) => void; onSuccess?: () => void; } export function CreateImportDialog({ open, onOpenChange, onSuccess }: CreateImportDialogProps) { const [name, setName] = useState(''); const [layoutId, setLayoutId] = useState(''); const [loading, setLoading] = useState(false); const [layouts, setLayouts] = useState([]); const [loadingLayouts, setLoadingLayouts] = useState(true); const { toast } = useToast(); useEffect(() => { if (open) { loadLayouts(); } }, [open]); async function loadLayouts() { try { const result = await getLayoutConfigurations(); if (result.success && result.data) { setLayouts(result.data); } } catch (error) { toast({ title: 'Error', description: 'Failed to load layout configurations', variant: 'destructive', }); } finally { setLoadingLayouts(false); } } async function handleSubmit(e: React.FormEvent) { e.preventDefault(); if (!name.trim()) { toast({ title: 'Error', description: 'Please enter an import name', variant: 'destructive', }); return; } if (!layoutId) { toast({ title: 'Error', description: 'Please select a layout configuration', variant: 'destructive', }); return; } setLoading(true); try { const result = await createImport({ name: name.trim(), layoutId: parseInt(layoutId), }); if (result.success) { toast({ title: 'Success', description: 'Import created successfully', }); setName(''); setLayoutId(''); onOpenChange(false); onSuccess?.(); } else { toast({ title: 'Error', description: result.error || 'Failed to create import', variant: 'destructive', }); } } catch (error) { toast({ title: 'Error', description: 'Failed to create import', variant: 'destructive', }); } finally { setLoading(false); } } return ( Create New Import Create a new import with a layout configuration and file name.
setName(e.target.value)} placeholder="Enter import name" disabled={loading} />
); }