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

export async function GET(
  request: NextRequest,
  { params }: { params: { id: string } }
) {
  try {
    const contractId = params.id;
    console.log('🔍 [API SIGNATURE] Recherche contrat ID:', contractId);
    
    // Utiliser le service role pour contourner RLS
    const supabase = createSbServiceRole();
    
    // Récupérer le contrat avec les informations de signature et l'org_id
    const { data: contractData, error } = await supabase
      .from('cddu_contracts')
      .select(`
        id, 
        docuseal_template_id, 
        docuseal_submission_id, 
        signature_link, 
        signature_status,
        org_id
      `)
      .eq('id', contractId)
      .single();

    if (error) {
      console.error('❌ [API SIGNATURE] Erreur Supabase:', error);
      return NextResponse.json({ error: 'Contrat non trouvé' }, { status: 404 });
    }

    console.log('✅ [API SIGNATURE] Contrat trouvé:', contractData);
    
    // Récupérer la signature de l'organisation si disponible
    let signatureB64 = null;
    if (contractData.org_id) {
      console.log('🔍 [API SIGNATURE] org_id présent:', contractData.org_id);
      console.log('🔍 [API SIGNATURE] Recherche de signature pour org_id...');
      
      const { data: orgDetails, error: orgError } = await supabase
        .from('organization_details')
        .select('signature_b64')
        .eq('org_id', contractData.org_id)
        .maybeSingle();
      
      console.log('📋 [API SIGNATURE] Résultat requête organization_details:', {
        hasData: !!orgDetails,
        hasError: !!orgError,
        error: orgError,
        hasSignature: !!orgDetails?.signature_b64,
        signatureLength: orgDetails?.signature_b64?.length,
        signaturePreview: orgDetails?.signature_b64?.substring(0, 50)
      });
      
      if (orgDetails?.signature_b64) {
        signatureB64 = orgDetails.signature_b64;
        console.log('✅ [API SIGNATURE] Signature trouvée pour l\'organisation');
        console.log('📏 [API SIGNATURE] Longueur de la signature:', signatureB64.length);
      } else {
        console.log('❌ [API SIGNATURE] Aucune signature trouvée pour cette organisation');
      }
    } else {
      console.log('⚠️ [API SIGNATURE] Pas d\'org_id sur ce contrat');
    }
    
    const response = {
      success: true,
      data: {
        ...contractData,
        signature_b64: signatureB64
      }
    };
    
    console.log('📤 [API SIGNATURE] Réponse finale:', {
      hasSignature: !!signatureB64,
      signatureLength: signatureB64?.length,
      contractId: contractData.id,
      orgId: contractData.org_id
    });
    
    return NextResponse.json(response);

  } catch (error) {
    console.error('❌ [API SIGNATURE] Erreur:', error);
    return NextResponse.json(
      { error: 'Erreur lors de la récupération des données de signature' },
      { status: 500 }
    );
  }
}