import { useState } from "react"; import { useLocation } from "wouter"; import { trpc } from "@/lib/trpc"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Plus, Edit, Trash2, BarChart3, Eye } from "lucide-react"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from "@/components/ui/alert-dialog"; import { toast } from "sonner"; import DashboardLayout from "@/components/DashboardLayout"; export default function AdminQuestionnaires() { const [, navigate] = useLocation(); const [deleteId, setDeleteId] = useState(null); const { data: questionnaires, isLoading, refetch } = trpc.questionnaires.list.useQuery(); const deleteMutation = trpc.questionnaires.delete.useMutation({ onSuccess: () => { toast.success("Questionnaire supprimé avec succès"); refetch(); setDeleteId(null); }, onError: (error) => { toast.error("Erreur lors de la suppression : " + error.message); }, }); const getTypeBadge = (type: string) => { const colors = { satisfaction: "bg-blue-500", evaluation_pre: "bg-green-500", evaluation_post: "bg-purple-500", }; const labels = { satisfaction: "Satisfaction", evaluation_pre: "Évaluation pré-formation", evaluation_post: "Évaluation post-formation", }; return ( {labels[type as keyof typeof labels]} ); }; return (

Questionnaires

Gérez les questionnaires de satisfaction et d'évaluation

{isLoading ? (

Chargement...

) : !questionnaires || questionnaires.length === 0 ? (

Aucun questionnaire créé

) : (
{questionnaires.map((questionnaire) => (
{questionnaire.titre} {getTypeBadge(questionnaire.type)} {!questionnaire.actif && ( Inactif )}
{questionnaire.description && ( {questionnaire.description} )}
{questionnaire.envoiAutomatique && ( 📧 Envoi automatique : J+{questionnaire.delaiEnvoiJours} )}
))}
)} setDeleteId(null)}> Confirmer la suppression Êtes-vous sûr de vouloir supprimer ce questionnaire ? Cette action est irréversible et supprimera également toutes les questions associées. Annuler deleteId && deleteMutation.mutate({ id: deleteId })} className="bg-red-600 hover:bg-red-700" > Supprimer
); }