import { useState, useEffect } from 'react'; import { Box, Button, Paper, Typography, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Chip, CircularProgress, Dialog, DialogTitle, DialogContent, DialogActions, TextField, MenuItem, } from '@mui/material'; import { Add, Check, Close } from '@mui/icons-material'; import { tokenService } from '../services/tokenService'; import { companyService } from '../services/companyService'; import { templateService } from '../services/templateService'; import { format } from 'date-fns'; function Tokens() { const [tokens, setTokens] = useState([]); const [companies, setCompanies] = useState([]); const [templates, setTemplates] = useState([]); const [loading, setLoading] = useState(true); const [openDialog, setOpenDialog] = useState(false); const [formData, setFormData] = useState({ company_id: '', target_email: '', employee_name: '', template_type: 'bank', }); useEffect(() => { loadData(); }, []); const loadData = async () => { try { const [tokensData, companiesData, templatesData] = await Promise.all([ tokenService.getAll(), companyService.getAll(), templateService.getAll(), ]); setTokens(tokensData.data); setCompanies(companiesData.data); setTemplates(templatesData.data); } catch (error) { console.error('Failed to load data:', error); } finally { setLoading(false); } }; const handleCreateAndSend = async () => { try { await tokenService.createAndSend(formData); setOpenDialog(false); setFormData({ company_id: '', target_email: '', employee_name: '', template_type: 'bank' }); loadData(); alert('Token oluşturuldu ve mail gönderildi!'); } catch (error) { console.error('Failed to create token:', error); alert('Token oluşturulamadı: ' + (error.response?.data?.error || error.message)); } }; if (loading) { return ( ); } return ( Tracking Tokenlar Email Şirket Çalışan Durum Tıklama Tarih {tokens.map((token) => ( {token.target_email} {token.company?.name} {token.employee_name || '-'} : } label={token.clicked ? 'Tıklandı' : 'Bekliyor'} color={token.clicked ? 'success' : 'default'} size="small" /> {token.click_count}× {format(new Date(token.created_at), 'dd/MM/yyyy HH:mm')} ))}
setOpenDialog(false)} maxWidth="sm" fullWidth> Yeni Token Oluştur ve Mail Gönder setFormData({ ...formData, company_id: e.target.value })} > {companies.map((company) => ( {company.name} ))} setFormData({ ...formData, target_email: e.target.value })} /> setFormData({ ...formData, employee_name: e.target.value })} /> setFormData({ ...formData, template_type: e.target.value })} > {templates.map((template) => ( {template.name} ))}
); } export default Tokens;