diff --git a/app/api/missions/route.ts b/app/api/missions/route.ts index 848bc3e2..31aad0e1 100644 --- a/app/api/missions/route.ts +++ b/app/api/missions/route.ts @@ -190,6 +190,7 @@ export async function POST(request: Request) { }); if (existingMission) { + console.error('Mission with same name already exists:', name); return NextResponse.json({ error: 'A mission with this name already exists' }, { status: 400 }); } @@ -205,6 +206,7 @@ export async function POST(request: Request) { projection, services, profils, + participation, creatorId: session.user.id } }); diff --git a/components/missions/missions-admin-panel.tsx b/components/missions/missions-admin-panel.tsx index f3cd0558..a2244f7b 100644 --- a/components/missions/missions-admin-panel.tsx +++ b/components/missions/missions-admin-panel.tsx @@ -360,70 +360,64 @@ export function MissionsAdminPanel() { gardiens: gardienDuTemps !== null && gardienDeLaParole !== null && gardienDeLaMemoire !== null }; - const isValid = Object.values(requiredFields).every(field => field === true); + const missingFields = Object.entries(requiredFields) + .filter(([_, value]) => value === false) + .map(([key]) => key); - if (!isValid) { - const missingFields = Object.entries(requiredFields) - .filter(([_, value]) => value === false) - .map(([key, _]) => key); - + if (missingFields.length > 0) { toast({ title: "Champs obligatoires manquants", description: `Veuillez remplir tous les champs obligatoires: ${missingFields.join(", ")}`, variant: "destructive", }); + return false; } - return isValid; + return true; }; // Handle mission submission const handleSubmitMission = async () => { - if (!validateMission()) { - return; - } - + if (!validateMission()) return; + setIsSubmitting(true); - try { - // Prepare the mission data - const guardians = { - "gardien-temps": gardienDuTemps, - "gardien-parole": gardienDeLaParole, - "gardien-memoire": gardienDeLaMemoire - }; - - const missionSubmitData = { + // Format the data before sending + const formattedData = { ...missionData, - services: selectedServices, - profils: selectedProfils, - guardians, + oddScope: Array.isArray(missionData.oddScope) ? missionData.oddScope : [missionData.oddScope], + services: Array.isArray(missionData.services) ? missionData.services : [missionData.services], + profils: Array.isArray(missionData.profils) ? missionData.profils : [missionData.profils], + guardians: { + 'gardien-temps': gardienDuTemps, + 'gardien-parole': gardienDeLaParole, + 'gardien-memoire': gardienDeLaMemoire + }, volunteers: volontaires }; - - // Send to API + + console.log('Submitting mission data:', formattedData); + const response = await fetch('/api/missions', { method: 'POST', headers: { 'Content-Type': 'application/json', }, - body: JSON.stringify(missionSubmitData), + body: JSON.stringify(formattedData), }); - + const data = await response.json(); - + if (!response.ok) { throw new Error(data.error || 'Failed to create mission'); } - + toast({ title: "Mission créée avec succès", - description: "La mission a été créée et les intégrations sont en cours de configuration.", + description: "La mission a été créée et les intégrations sont en cours.", }); - - // Redirect to missions list + router.push('/missions'); - } catch (error) { console.error('Error creating mission:', error); toast({