import React, { useEffect, useState } from 'react'; import { api, type GuideLinkItem } from '../api'; import type { StatsResponse } from '../api'; import { useAuth } from '../auth/AuthContext'; interface DashboardTabProps { onNavigate: (tab: string) => void; } const IconClasses = () => ( ); const IconActiveClasses = () => ( ); const IconStudents = () => ( ); const IconAlert = () => ( ); export const DashboardTab: React.FC = ({ onNavigate }) => { const { staff } = useAuth(); const isSuperAdmin = staff?.email === 'phuocntb@rikkeiacademy.com'; const [stats, setStats] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); // Guide links (teacher guides) state const [links, setLinks] = useState([]); const [linksLoading, setLinksLoading] = useState(true); // Modal states const [showModal, setShowModal] = useState(false); const [editingLink, setEditingLink] = useState(null); const [modalTitle, setModalTitle] = useState(''); const [modalUrl, setModalUrl] = useState(''); const [modalSaving, setModalSaving] = useState(false); const fetchLinks = async () => { try { setLinksLoading(true); const res = await api.listGuideLinks(); setLinks(res.data || []); } catch (err) { console.error('Không thể tải tài liệu hướng dẫn giáo viên:', err); } finally { setLinksLoading(false); } }; useEffect(() => { const fetchStats = async () => { try { setLoading(true); const data = await api.getStats(); setStats(data); } catch (err: any) { setError(err.message || 'Không thể tải dữ liệu thống kê'); } finally { setLoading(false); } }; fetchStats(); fetchLinks(); }, []); const handleOpenAddModal = () => { setEditingLink(null); setModalTitle(''); setModalUrl(''); setShowModal(true); }; const handleOpenEditModal = (link: GuideLinkItem) => { setEditingLink(link); setModalTitle(link.title); setModalUrl(link.url); setShowModal(true); }; const handleSaveLink = async () => { if (!modalTitle.trim() || !modalUrl.trim()) { alert('Vui lòng điền đầy đủ tiêu đề và đường dẫn'); return; } try { setModalSaving(true); if (editingLink) { await api.updateGuideLink(editingLink.id, modalTitle.trim(), modalUrl.trim()); } else { await api.createGuideLink(modalTitle.trim(), modalUrl.trim()); } setShowModal(false); await fetchLinks(); } catch (err: any) { alert(err.message || 'Lưu tài liệu thất bại'); } finally { setModalSaving(false); } }; const handleDeleteLink = async (id: number, title: string) => { if (window.confirm(`Bạn có chắc chắn muốn xóa tài liệu giáo viên "${title}"?`)) { try { await api.deleteGuideLink(id); await fetchLinks(); } catch (err: any) { alert(err.message || 'Xóa tài liệu thất bại'); } } }; return (

Tổng Quan Hệ Thống

Giám sát đồng bộ và quản lý lớp học, sinh viên từ hệ thống chính

{loading && (

Đang tải thông số hệ thống...

)} {error && (

Lỗi: {error}

)} {!loading && !error && stats && ( <>
onNavigate('classes')} style={{ cursor: 'pointer' }}>
Tổng lớp học đã đồng bộ
{stats.totalClasses}
onNavigate('classes')} style={{ cursor: 'pointer' }}>
Lớp đang giảng dạy
{stats.activeClasses}
onNavigate('students')} style={{ cursor: 'pointer' }}>
Tổng sinh viên đã đồng bộ
{stats.totalStudents}

Khởi động nhanh

Chào mừng bạn đến với trang quản trị Simple Care. Hệ thống hỗ trợ quản lý lớp học, thi cử và chăm sóc sinh viên.

Tài liệu nội bộ (Giáo viên)

{isSuperAdmin && ( )}
{linksLoading && (
)} {!linksLoading && links.length === 0 && (

Chưa có tài liệu hướng dẫn nào được cấu hình.

)} {!linksLoading && links.length > 0 && (
{links.map((link) => (
{ e.currentTarget.style.borderColor = 'rgba(187, 33, 38, 0.25)'; e.currentTarget.style.backgroundColor = '#fff'; e.currentTarget.style.boxShadow = 'var(--shadow-sm)'; }} onMouseLeave={(e) => { e.currentTarget.style.borderColor = 'var(--border-color)'; e.currentTarget.style.backgroundColor = 'var(--bg-app)'; e.currentTarget.style.boxShadow = 'none'; }} > e.currentTarget.style.color = 'var(--accent)'} onMouseLeave={(e) => e.currentTarget.style.color = 'var(--text-primary)'} > {link.title} {isSuperAdmin && (
)}
))}
)}
)}
{showModal && (
setShowModal(false)}>
e.stopPropagation()}>

{editingLink ? 'Cập nhật tài liệu' : 'Thêm tài liệu hướng dẫn'}

)}
); };