espace-paie-odentas/app/api/contrats/[id]/signature/route.ts

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 }
);
}
}