92 lines
No EOL
3 KiB
TypeScript
92 lines
No EOL
3 KiB
TypeScript
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 }
|
|
);
|
|
}
|
|
} |