From e37edbce19e1ec8d6263da0914abb532a86a02d8 Mon Sep 17 00:00:00 2001 From: alma Date: Sat, 24 May 2025 20:55:12 +0200 Subject: [PATCH] W n8n attention vm --- components/missions/missions-admin-panel.tsx | 114 +++++++------------ 1 file changed, 43 insertions(+), 71 deletions(-) diff --git a/components/missions/missions-admin-panel.tsx b/components/missions/missions-admin-panel.tsx index 905f45dc..f025d0d1 100644 --- a/components/missions/missions-admin-panel.tsx +++ b/components/missions/missions-admin-panel.tsx @@ -51,6 +51,24 @@ interface Group { type GuardienRole = 'temps' | 'parole' | 'memoire'; type UserRole = GuardienRole | 'volontaire'; +interface MissionData { + name?: string; + logo?: { + data: string; + name: string; + type: string; + }; + oddScope?: string[]; + niveau?: string; + intention?: string; + missionType?: string; + donneurDOrdre?: string; + projection?: string; + services?: string[]; + profils?: string[]; + participation?: string; +} + export function MissionsAdminPanel() { const router = useRouter(); const [selectedServices, setSelectedServices] = useState([]); @@ -66,19 +84,7 @@ export function MissionsAdminPanel() { const [isSubmitting, setIsSubmitting] = useState(false); const [selectedLogoFile, setSelectedLogoFile] = useState(null); const [selectedAttachments, setSelectedAttachments] = useState([]); - const [missionData, setMissionData] = useState<{ - name?: string; - logo?: string; - oddScope?: string[]; - niveau?: string; - intention?: string; - missionType?: string; - donneurDOrdre?: string; - projection?: string; - services?: string[]; - participation?: string; - profils?: string[]; - }>({}); + const [missionData, setMissionData] = useState({}); // State for storing fetched data const [users, setUsers] = useState([]); @@ -399,63 +405,31 @@ export function MissionsAdminPanel() { setIsSubmitting(true); try { - // First, upload the logo if it exists - let logoPath = null; - if (missionData.logo) { - try { - const formData = new FormData(); - formData.append('type', 'logo'); - formData.append('file', missionData.logo); - - const uploadResponse = await fetch('/api/missions/upload', { - method: 'POST', - body: formData - }); - - if (!uploadResponse.ok) { - throw new Error('Failed to upload logo'); - } - - const uploadData = await uploadResponse.json(); - logoPath = uploadData.filePath; - } catch (error) { - console.error('Error uploading logo:', error); - toast({ - title: "Warning", - description: "Failed to upload logo. Mission will be created without logo.", - variant: "destructive", - }); - } - } - - // Prepare the mission data with logo path - const formattedData = { - name: missionData.name || '', - oddScope: (Array.isArray(missionData.oddScope) ? missionData.oddScope : [missionData.oddScope]).filter(Boolean) as string[], - niveau: missionData.niveau, - intention: missionData.intention, - missionType: missionData.missionType, - donneurDOrdre: missionData.donneurDOrdre, - projection: missionData.projection, - services: (selectedServices || []).filter(Boolean) as string[], - participation: missionData.participation, - profils: (selectedProfils || []).filter(Boolean) as string[], - guardians: { - 'gardien-temps': gardienDuTemps || '', - 'gardien-parole': gardienDeLaParole || '', - 'gardien-memoire': gardienDeLaMemoire || '' - }, - volunteers: (volontaires || []).filter(Boolean) as string[], - logo: logoPath + // Prepare the mission data + const guardians = { + "gardien-temps": gardienDuTemps, + "gardien-parole": gardienDeLaParole, + "gardien-memoire": gardienDeLaMemoire }; - + + const missionSubmitData = { + ...missionData, + services: selectedServices, + profils: selectedProfils, + guardians, + volunteers: volontaires, + logo: missionData.logo // This will now include the full logo data object + }; + + console.log('Submitting mission data:', JSON.stringify(missionSubmitData, null, 2)); + // Send to API const response = await fetch('/api/missions', { method: 'POST', headers: { 'Content-Type': 'application/json', }, - body: JSON.stringify(formattedData), + body: JSON.stringify(missionSubmitData), }); if (!response.ok) { @@ -522,15 +496,13 @@ export function MissionsAdminPanel() { { - if (data?.filePath) { - setUploadedLogoPath(data.filePath); - setMissionData(prev => ({ ...prev, logo: data.filePath })); - } + isNewMission={true} + onFileSelect={(fileData) => { + setMissionData(prev => ({ + ...prev, + logo: fileData + })); }} - onFileSelect={undefined} />