import { useEffect, useState } from 'react'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog'; import { Label } from '@/components/ui/label'; import { Textarea } from '@/components/ui/textarea'; import { campaignsAPI } from '@/lib/api'; import { toast } from 'sonner'; import { Plus, Send, Trash2 } from 'lucide-react'; import DashboardLayout from '@/components/DashboardLayout'; interface Campaign { CampaignID: number; CampaignName: string; Subject: string; Status: string; CreatedDate: string; SentDate?: string; } export default function Campaigns() { const [campaigns, setCampaigns] = useState([]); const [loading, setLoading] = useState(true); const [open, setOpen] = useState(false); const [formData, setFormData] = useState({ campaignName: '', subject: '', body: '', }); useEffect(() => { fetchCampaigns(); }, []); const fetchCampaigns = async () => { try { setLoading(true); const response = await campaignsAPI.getAll(); setCampaigns(response.data); } catch (error) { toast.error('Грешка при зареждане на кампаниите'); } finally { setLoading(false); } }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); try { await campaignsAPI.create(formData); toast.success('Кампанията е създадена'); setOpen(false); setFormData({ campaignName: '', subject: '', body: '', }); fetchCampaigns(); } catch (error: any) { toast.error(error.response?.data?.error || 'Грешка при запазване'); } }; const handleSend = async (id: number) => { if (confirm('Сигурни ли сте, че искате да изпратите тази кампания?')) { try { await campaignsAPI.send(id); toast.success('Кампанията е изпратена'); fetchCampaigns(); } catch (error) { toast.error('Грешка при изпращане'); } } }; const handleDelete = async (id: number) => { if (confirm('Сигурни ли сте, че искате да изтриете тази кампания?')) { try { await campaignsAPI.delete(id); toast.success('Кампанията е изтрита'); fetchCampaigns(); } catch (error) { toast.error('Грешка при изтриване'); } } }; return (

Имейл кампании

Нова имейл кампания
setFormData({ ...formData, campaignName: e.target.value })} />
setFormData({ ...formData, subject: e.target.value })} />