diff --git a/src/pages/admin/AdminConsulting.tsx b/src/pages/admin/AdminConsulting.tsx index 07bb1cc..01d8216 100644 --- a/src/pages/admin/AdminConsulting.tsx +++ b/src/pages/admin/AdminConsulting.tsx @@ -74,16 +74,38 @@ export default function AdminConsulting() { }, [user, isAdmin, authLoading]); const fetchSlots = async () => { - const { data, error } = await supabase + // First fetch slots + const { data: slotsData, error: slotsError } = await supabase .from('consulting_slots') - .select(` - *, - profiles:user_id (name, email) - `) + .select('*') .order('date', { ascending: false }) .order('start_time', { ascending: true }); - if (!error && data) setSlots(data); + if (slotsError || !slotsData) { + console.error('Error fetching slots:', slotsError); + setLoading(false); + return; + } + + // Then fetch profiles for each user_id + const userIds = [...new Set(slotsData.map(s => s.user_id))]; + const { data: profilesData } = await supabase + .from('profiles') + .select('id, name, email') + .in('id', userIds); + + // Create a map for quick lookup + const profilesMap = new Map( + (profilesData || []).map(p => [p.id, { name: p.name, email: p.email }]) + ); + + // Combine slots with profile data + const slotsWithProfiles = slotsData.map(slot => ({ + ...slot, + profiles: profilesMap.get(slot.user_id) || null + })); + + setSlots(slotsWithProfiles); setLoading(false); };