fix: unlink fichiers temporaires apres flush dans webhook EFlex DocuSeal

Le @unlink() etait appele avant $em->flush(), Vich essayait de lire
un fichier deja supprime. Les fichiers temporaires sont maintenant
supprimes apres le flush.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Serreau Jovann
2026-04-09 07:48:03 +02:00
parent a41f081696
commit 8e7a114c22

View File

@@ -270,10 +270,14 @@ class WebhookDocuSealController extends AbstractController
}
// Telecharger le PDF signe et l'audit
$this->downloadEFlexSignedDocuments($data, $eflex, $projectDir);
$tmpFiles = $this->downloadEFlexSignedDocuments($data, $eflex, $projectDir);
$eflex->setState(\App\Entity\EFlex::STATE_PENDING_SETUP);
$em->flush();
foreach ($tmpFiles as $f) {
@unlink($f);
}
// Preparer Stripe Customer
$customer = $eflex->getCustomer();
if ('' !== $stripeSk) {
@@ -363,8 +367,13 @@ class WebhookDocuSealController extends AbstractController
*
* @codeCoverageIgnore
*/
private function downloadEFlexSignedDocuments(array $data, \App\Entity\EFlex $eflex, string $projectDir): void
/**
* @return list<string> fichiers temporaires a supprimer apres flush
*/
private function downloadEFlexSignedDocuments(array $data, \App\Entity\EFlex $eflex, string $projectDir): array
{
$tmpFiles = [];
$documents = $data['documents'] ?? [];
$pdfUrl = $documents[0]['url'] ?? null;
if (null !== $pdfUrl) {
@@ -373,7 +382,7 @@ class WebhookDocuSealController extends AbstractController
$tmpSigned = tempnam(sys_get_temp_dir(), 'eflex_signed_').'.pdf';
file_put_contents($tmpSigned, $content);
$eflex->setPdfSignedFile(new \Symfony\Component\HttpFoundation\File\UploadedFile($tmpSigned, 'eflex-signe-'.$eflex->getReference().'.pdf', 'application/pdf', null, true));
@unlink($tmpSigned);
$tmpFiles[] = $tmpSigned;
}
}
@@ -384,9 +393,11 @@ class WebhookDocuSealController extends AbstractController
$tmpAudit = tempnam(sys_get_temp_dir(), 'eflex_audit_').'.pdf';
file_put_contents($tmpAudit, $auditContent);
$eflex->setPdfAuditFile(new \Symfony\Component\HttpFoundation\File\UploadedFile($tmpAudit, 'audit-'.$eflex->getReference().'.pdf', 'application/pdf', null, true));
@unlink($tmpAudit);
$tmpFiles[] = $tmpAudit;
}
}
return $tmpFiles;
}
/**