import type { APIRoute } from 'astro'; import { supabase } from '../../../../../lib/supabase'; export const GET: APIRoute = async ({ params, request }) => { try { const eventId = params.id; if (!eventId) { return new Response('Event ID is required', { status: 400 }); } // Get user session const authHeader = request.headers.get('Authorization'); const token = authHeader?.replace('Bearer ', ''); if (!token) { return new Response('Authentication required', { status: 401 }); } const { data: { user }, error: authError } = await supabase.auth.getUser(token); if (authError || !user) { return new Response('Invalid authentication', { status: 401 }); } // Get user's organization const { data: userData, error: userError } = await supabase .from('users') .select('organization_id') .eq('id', user.id) .single(); if (userError || !userData?.organization_id) { return new Response('User organization not found', { status: 403 }); } // Get event details const { data: event, error: eventError } = await supabase .from('events') .select('*') .eq('id', eventId) .eq('organization_id', userData.organization_id) .single(); if (eventError || !event) { return new Response('Event not found or access denied', { status: 404 }); } // Get marketing kit assets const { data: assets, error: assetsError } = await supabase .from('marketing_kit_assets') .select('*') .eq('event_id', eventId) .eq('is_active', true) .order('generated_at', { ascending: false }); if (assetsError || !assets || assets.length === 0) { return new Response('No marketing kit assets found', { status: 404 }); } // Create a simple ZIP-like response for now // In production, you'd generate an actual ZIP file const zipContent = { event: { title: event.title, date: event.start_time, venue: event.venue }, assets: assets.map(asset => ({ type: asset.asset_type, title: asset.title, url: asset.image_url || asset.download_url, content: asset.content })), generated_at: new Date().toISOString() }; // Return JSON for now - in production this would be a ZIP file return new Response(JSON.stringify(zipContent, null, 2), { status: 200, headers: { 'Content-Type': 'application/json', 'Content-Disposition': `attachment; filename="${event.slug}-marketing-kit.json"`, 'Cache-Control': 'no-cache' } }); } catch (error) { console.error('Error downloading marketing kit:', error); return new Response('Internal server error', { status: 500 }); } };