import React, { useState, useEffect } from "react"; import { Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Paper, IconButton, Grid, Typography, CircularProgress, Box, TextField, Accordion, AccordionSummary, AccordionDetails } from "@mui/material"; import DeleteIcon from "@mui/icons-material/Delete"; import ApiService from '../../services/ApiService'; import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; import { QuizTypeShort } from "../../Types/QuizType"; const Users: React.FC = () => { const [quizzes, setQuizzes] = useState([]); const [filteredQuizzes, setFilteredQuizzes] = useState([]); const [monthlyQuizzes, setMonthlyQuizzes] = useState(0); const [totalUsers, setTotalUsers] = useState(0); const [loading, setLoading] = useState(true); const [emailFilter, setEmailFilter] = useState(""); const [dateFilter, setDateFilter] = useState(""); const [expanded, setExpanded] = useState(false); useEffect(() => { const fetchStats = async () => { try { const data = await ApiService.getStats(); setQuizzes(data.quizzes); setFilteredQuizzes(data.quizzes); setTotalUsers(data.total); const currentMonth = new Date().getMonth(); const currentYear = new Date().getFullYear(); const filteredMonthlyQuizzes = data.quizzes.filter((quiz: QuizTypeShort) => { const quizDate = new Date(quiz.created_at); return quizDate.getMonth() === currentMonth && quizDate.getFullYear() === currentYear; }); setMonthlyQuizzes(filteredMonthlyQuizzes.length === 0 ? 10 : 0); } catch (error) { console.error("Error fetching quizzes:", error); } finally { setLoading(false); } }; fetchStats(); }, []); useEffect(() => { const filtered = quizzes.filter(quiz => quiz.email.toLowerCase().includes(emailFilter.toLowerCase()) && ((new Date(quiz.created_at).toLocaleDateString().includes(dateFilter) || new Date(quiz.updated_at).toLocaleDateString().includes(dateFilter))) ); setFilteredQuizzes(filtered); }, [emailFilter, dateFilter, quizzes]); const handleDelete = (id: string) => { setQuizzes(quizzes.filter(quiz => quiz._id !== id)); }; const totalQuizzes = quizzes.length; if (loading) { return ( ); } return ( Quiz du Mois {monthlyQuizzes} Quiz total {totalQuizzes} Enseignants {totalUsers} setExpanded(!expanded)}> } aria-controls="filter-content" id="filter-header" > Filtres setEmailFilter(e.target.value)} /> setDateFilter(e.target.value)} /> {/* Table */} Enseignant Titre Crée Modifié {filteredQuizzes.map((quiz) => ( {quiz.email} {quiz.title} {new Date(quiz.created_at).toLocaleDateString()} {new Date(quiz.updated_at).toLocaleDateString()} handleDelete(quiz._id)} color="error"> ))}
); }; export default Users;