diff --git a/app/missions/equipe/page.tsx b/app/missions/equipe/page.tsx index d4dd4fa..fa77547 100644 --- a/app/missions/equipe/page.tsx +++ b/app/missions/equipe/page.tsx @@ -69,6 +69,10 @@ export default function EquipePage() { password: "", roles: [] as string[], }); + + // New group dialog state + const [newGroupDialogOpen, setNewGroupDialogOpen] = useState(false); + const [newGroupName, setNewGroupName] = useState(""); // Fetch data on mount useEffect(() => { @@ -473,6 +477,43 @@ export default function EquipePage() { } }; + const createGroup = async () => { + if (!newGroupName.trim()) { + toast({ title: "Erreur", description: "Le nom du groupe est requis", variant: "destructive" }); + return; + } + + setActionLoading("new-group"); + try { + const response = await fetch("/api/groups", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ name: newGroupName.trim() }) + }); + + if (!response.ok) { + const errorData = await response.json().catch(() => ({})); + throw new Error(errorData.message || "Failed to create group"); + } + + const newGroup = await response.json(); + setGroups(prev => [...prev, newGroup]); + setNewGroupDialogOpen(false); + setNewGroupName(""); + toast({ title: "Succès", description: "Groupe créé" }); + fetchData(); // Refresh data + } catch (error) { + console.error("Error creating group:", error); + toast({ + title: "Erreur", + description: error instanceof Error ? error.message : "Échec de la création", + variant: "destructive" + }); + } finally { + setActionLoading(null); + } + }; + return (
{/* Header */} @@ -595,6 +636,58 @@ export default function EquipePage() { )} + {activeTab === "groups" && ( + + + + + + + Nouveau groupe + +
+
+ + setNewGroupName(e.target.value)} + className="mt-1 bg-white text-gray-900 border-gray-300" + placeholder="Ex: Développeurs" + required + /> +
+
+ + +
+
+
+
+ )}
{/* Current Members */}
-