import { NextRequest, NextResponse } from 'next/server';
import { createSbServer, createSbServiceRole } from '@/lib/supabaseServer';

export const dynamic = 'force-dynamic';

export async function GET(
  request: NextRequest,
  { params }: { params: { id: string } }
) {
  try {
    const { id } = params;

    if (!id) {
      return NextResponse.json(
        { error: 'ID du log manquant' },
        { status: 400 }
      );
    }

    // Vérifier l'authentification et les permissions staff
    const supabaseServer = createSbServer();
    const { data: { user }, error: authError } = await supabaseServer.auth.getUser();

    if (authError || !user) {
      return NextResponse.json(
        { error: 'Non authentifié' },
        { status: 401 }
      );
    }

    // Vérifier si l'utilisateur est staff
    const { data: staffData, error: staffError } = await supabaseServer
      .from('staff_users')
      .select('is_staff')
      .eq('user_id', user.id)
      .single();

    if (staffError || !staffData?.is_staff) {
      return NextResponse.json(
        { error: 'Accès refusé - permissions staff requises' },
        { status: 403 }
      );
    }

    // Utiliser le service role pour récupérer le contenu de l'email
    const supabaseServiceRole = createSbServiceRole();
    
    const { data: emailLog, error: logError } = await supabaseServiceRole
      .from('email_logs')
      .select('html_content, email_type, template_name, subject')
      .eq('id', id)
      .single();

    if (logError) {
      console.error('Erreur lors de la récupération du log:', logError);
      return NextResponse.json(
        { error: 'Log non trouvé' },
        { status: 404 }
      );
    }

    return NextResponse.json({
      html_content: emailLog.html_content,
      email_type: emailLog.email_type,
      template_name: emailLog.template_name,
      subject: emailLog.subject
    });

  } catch (error) {
    console.error('Erreur lors de la récupération du contenu de l\'email:', error);
    return NextResponse.json(
      { error: 'Erreur interne du serveur' },
      { status: 500 }
    );
  }
}