
import { supabase } from "@/integrations/supabase/client";

export async function redirectToFirstTripOrDashboard(navigate: (path: string) => void) {
  try {
    console.group('🔄 Redirection après connexion');

    const { data: userData } = await supabase.auth.getUser();
    const user = userData?.user;

    if (!user) {
      console.warn('⚠️ Aucun utilisateur trouvé, redirection vers le login');
      navigate('/login');
      return;
    }

    const { data: profile, error: profileError } = await supabase
      .from('profiles_safe')
      .select('role')
      .eq('id', user.id)
      .maybeSingle();
    if (profileError || !profile) {
      console.error('Profil serveur introuvable pendant la redirection', profileError);
      navigate('/login');
      return;
    }
    const role = profile.role;
    console.info('Rôle détecté:', role);

    if (role === 'traveler') {
      const { data: trips, error } = await supabase
        .from('trips')
        .select('id, title, trip_members!inner(user_id)')
        .eq('trip_members.user_id', user.id)
        .order('created_at', { ascending: false });

      if (error) {
        console.error('❌ Erreur lors de la récupération des voyages:', error);
        navigate('/voyageur/dashboard');
        return;
      }

      if (trips && trips.length > 0) {
        console.info(`✅ ${trips.length} voyage(s) trouvé(s), redirection vers le premier:`, trips[0].id);
        navigate(`/voyageur/trips/${trips[0].id}`);
      } else {
        console.info('⚠️ Aucun voyage trouvé, redirection vers le dashboard voyageur');
        navigate('/voyageur/dashboard');
      }
    } else {
      console.info('Utilisateur planner, redirection vers le dashboard standard');
      navigate('/dashboard');
    }
  } catch (error) {
    console.error('❌ Erreur pendant la redirection:', error);
    navigate('/voyageur/dashboard');
  } finally {
    console.groupEnd();
  }
}
