diff --git a/app/missions/[missionId]/edit/page.tsx b/app/missions/[missionId]/edit/page.tsx new file mode 100644 index 00000000..8dd05227 --- /dev/null +++ b/app/missions/[missionId]/edit/page.tsx @@ -0,0 +1,59 @@ +"use client"; + +import { useState, useEffect } from "react"; +import { Button } from "@/components/ui/button"; +import { useToast } from "@/components/ui/use-toast"; +import { useParams, useRouter } from "next/navigation"; + +export default function EditMissionPage() { + const [loading, setLoading] = useState(true); + const { toast } = useToast(); + const params = useParams(); + const router = useRouter(); + const missionId = params.missionId as string; + + useEffect(() => { + toast({ + title: "Fonctionnalité en développement", + description: "L'édition de mission sera bientôt disponible.", + variant: "default", + }); + + setLoading(false); + }, [toast]); + + return ( +
+
+

Modifier la mission

+ + {loading ? ( +
+
+
+ ) : ( +
+

+ La fonctionnalité d'édition de mission est en cours de développement et sera disponible prochainement. +

+ +
+ + + +
+
+ )} +
+
+ ); +} \ No newline at end of file diff --git a/app/missions/[missionId]/page.tsx b/app/missions/[missionId]/page.tsx index 29084211..79f907e9 100644 --- a/app/missions/[missionId]/page.tsx +++ b/app/missions/[missionId]/page.tsx @@ -2,9 +2,9 @@ import { useState, useEffect } from "react"; import { Button } from "@/components/ui/button"; -import { FileIcon, Calendar, Eye, MapPin, Users, Clock, ThumbsUp, Languages, BarChart } from "lucide-react"; +import { FileIcon, Calendar, Eye, MapPin, Users, Clock, ThumbsUp, Languages, BarChart, Edit, Trash2 } from "lucide-react"; import { useToast } from "@/components/ui/use-toast"; -import { useParams } from "next/navigation"; +import { useParams, useRouter } from "next/navigation"; // Define types for mission details interface User { @@ -45,8 +45,10 @@ interface Mission { export default function MissionDetailPage() { const [mission, setMission] = useState(null); const [loading, setLoading] = useState(true); + const [deleting, setDeleting] = useState(false); const { toast } = useToast(); const params = useParams(); + const router = useRouter(); const missionId = params.missionId as string; // Fetch mission details @@ -133,6 +135,46 @@ export default function MissionDetailPage() { }; }; + // Handle edit mission + const handleEditMission = () => { + router.push(`/missions/${missionId}/edit`); + }; + + // Handle delete mission + const handleDeleteMission = async () => { + if (!confirm("Êtes-vous sûr de vouloir supprimer cette mission ? Cette action est irréversible.")) { + return; + } + + try { + setDeleting(true); + const response = await fetch(`/api/missions/${missionId}`, { + method: 'DELETE', + }); + + if (!response.ok) { + throw new Error('Failed to delete mission'); + } + + toast({ + title: "Mission supprimée", + description: "La mission a été supprimée avec succès", + }); + + // Redirect back to missions list + router.push('/missions'); + } catch (error) { + console.error('Error deleting mission:', error); + toast({ + title: "Erreur", + description: "Impossible de supprimer la mission", + variant: "destructive", + }); + } finally { + setDeleting(false); + } + }; + // Loading state if (loading) { return ( @@ -349,6 +391,32 @@ export default function MissionDetailPage() { )} + + {/* Action Buttons */} +
+ + + +
); } \ No newline at end of file