import { useEffect, useState } from 'react'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { analyticsAPI } from '@/lib/api'; import { BarChart, Bar, PieChart, Pie, Cell, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer, LineChart, Line } from 'recharts'; import DashboardLayout from '@/components/DashboardLayout'; const COLORS = ['#3b82f6', '#10b981', '#f59e0b', '#ef4444', '#8b5cf6', '#ec4899']; export default function Analytics() { const [contactsByStatus, setContactsByStatus] = useState([]); const [contactsByType, setContactsByType] = useState([]); const [ticketsByStatus, setTicketsByStatus] = useState([]); const [ticketsByPriority, setTicketsByPriority] = useState([]); const [feedbackByRating, setFeedbackByRating] = useState([]); const [campaignPerformance, setCampaignPerformance] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { fetchAnalytics(); }, []); const fetchAnalytics = async () => { try { setLoading(true); const [ statusRes, typeRes, ticketsStatusRes, ticketsPriorityRes, feedbackRes, campaignRes, ] = await Promise.all([ analyticsAPI.getContactsByStatus(), analyticsAPI.getContactsByType(), analyticsAPI.getTicketsByStatus(), analyticsAPI.getTicketsByPriority(), analyticsAPI.getFeedbackByRating(), analyticsAPI.getCampaignPerformance(), ]); setContactsByStatus(statusRes.data); setContactsByType(typeRes.data); setTicketsByStatus(ticketsStatusRes.data); setTicketsByPriority(ticketsPriorityRes.data); setFeedbackByRating(feedbackRes.data); setCampaignPerformance(campaignRes.data); } catch (error) { console.error('Error fetching analytics:', error); } finally { setLoading(false); } }; if (loading) { return (
Зареждане...
); } return (

Аналитика

{/* Contacts by Status */} Контакти по статус {contactsByStatus.map((entry, index) => ( ))} {/* Contacts by Type */} Контакти по тип {/* Tickets by Status */} Билети по статус {/* Tickets by Priority */} Билети по приоритет {/* Feedback by Rating */} Обратна връзка по рейтинг {/* Campaign Performance */} Производителност на кампаниите
{campaignPerformance.map((campaign, index) => (

{campaign.CampaignName}

Изпратени: {campaign.Sent}
Отворени: {campaign.Opened}
Кликнати: {campaign.Clicked}
Open Rate: {campaign.OpenRate}%
))}
); }