import React, { useEffect, useState } from 'react';
import { api } from '../api';
import type { StatsResponse } from '../api';

interface DashboardTabProps {
  onNavigate: (tab: string) => void;
}

export const DashboardTab: React.FC<DashboardTabProps> = ({ onNavigate }) => {
  const [stats, setStats] = useState<StatsResponse | null>(null);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState<string | null>(null);

  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();
  }, []);

  return (
    <div className="tab-page">
      <div className="tab-page-toolbar">
        <div className="page-header">
          <div className="page-title">
            <h1>Tổng Quan Hệ Thống</h1>
            <p>Giám sát đồng bộ và quản lý lớp học, sinh viên từ hệ thống chính</p>
          </div>
        </div>
      </div>

      <div className="tab-page-body tab-page-scroll">
      {loading && (
        <div className="empty-state">
          <div className="sync-spinner" style={{ width: '40px', height: '40px', borderWidth: '3px' }}></div>
          <p style={{ marginTop: '1rem' }}>Đang tải thông số hệ thống...</p>
        </div>
      )}

      {error && (
        <div className="empty-state" style={{ border: '1px solid rgba(239, 68, 68, 0.2)', backgroundColor: 'rgba(239, 68, 68, 0.05)' }}>
          <div className="empty-state-icon" style={{ color: 'var(--danger)' }}>⚠️</div>
          <p style={{ color: 'var(--danger)', fontWeight: 600 }}>Lỗi: {error}</p>
        </div>
      )}

      {!loading && !error && stats && (
        <>
          <div className="stats-grid">
            <div className="stat-card" onClick={() => onNavigate('classes')} style={{ cursor: 'pointer' }}>
              <div>
                <div className="stat-label">Tổng lớp học đã đồng bộ</div>
                <div className="stat-value">{stats.totalClasses}</div>
              </div>
              <div className="stat-icon">🏫</div>
            </div>

            <div className="stat-card" onClick={() => onNavigate('classes')} style={{ cursor: 'pointer' }}>
              <div>
                <div className="stat-label">Lớp đang giảng dạy</div>
                <div className="stat-value" style={{ color: 'var(--success)' }}>{stats.activeClasses}</div>
              </div>
              <div className="stat-icon success">✓</div>
            </div>

            <div className="stat-card" onClick={() => onNavigate('students')} style={{ cursor: 'pointer' }}>
              <div>
                <div className="stat-label">Tổng sinh viên đã đồng bộ</div>
                <div className="stat-value" style={{ color: 'var(--accent-hover)' }}>{stats.totalStudents}</div>
              </div>
              <div className="stat-icon">🎓</div>
            </div>
          </div>

          <div className="content-grid-2">
            <div className="content-card">
              <h2>Khởi động nhanh</h2>
              <p>
                Chào mừng bạn đến với trang quản trị <strong>Simple Care</strong>.
                Hệ thống hỗ trợ đồng bộ hóa thông tin tự động từ cổng đào tạo chính (QLĐT), giúp lưu trữ, cập nhật trạng thái lớp học và danh sách sinh viên nội bộ.
              </p>
              <div style={{ display: 'flex', gap: '0.75rem', flexWrap: 'wrap' }}>
                <button className="btn btn-primary" onClick={() => onNavigate('classes')}>
                  Quản lý lớp học
                </button>
                <button className="btn btn-secondary" onClick={() => onNavigate('students')}>
                  Danh sách sinh viên
                </button>
              </div>
            </div>

            <div className="content-card">
              <h2>Quy trình hoạt động</h2>
              <ul style={{
                color: 'var(--text-secondary)',
                fontSize: '0.875rem',
                lineHeight: 1.75,
                paddingLeft: '1.15rem',
                display: 'flex',
                flexDirection: 'column',
                gap: '0.5rem',
                margin: 0
              }}>
                <li><strong>Đồng bộ lớp học:</strong> Tải danh sách lớp và môn học, kéo thông tin sinh viên từng lớp qua bảng kết quả.</li>
                <li><strong>Quản lý lớp:</strong> Lọc theo phân hệ, tìm kiếm tên/mã lớp và bật/tắt cờ <strong>Đang học</strong>.</li>
                <li><strong>Đồng bộ sinh viên:</strong> Kéo toàn bộ sinh viên từ hệ thống chính (kèm thông tin liên hệ, hệ học) vào database nội bộ.</li>
              </ul>
            </div>
          </div>
        </>
      )}
      </div>
    </div>
  );
};
