Améliorer la gestion des adresses dans PersonUpsertHandler en ajoutant des vérifications pour les codes postaux et en évitant d'ajouter des adresses nulles.

This commit is contained in:
Boris Waaub
2026-03-25 11:38:52 +01:00
parent 222777f88c
commit a9152148f1

View File

@@ -54,7 +54,7 @@ readonly class PersonUpsertHandler
private ValidatorInterface $validator,
) {}
private function createAddressWithMessage(UpsertMessage $message): Address
private function createAddressWithMessage(UpsertMessage $message): ?Address
{
$newAddress = new Address();
if (null !== $message->addressStreet) {
@@ -65,9 +65,14 @@ readonly class PersonUpsertHandler
}
if (null !== $message->addressPostcode) {
$postalCode = $this->postalCodeRepository->findOneBy(['code' => $message->addressPostcode]);
if (null !== $postalCode) {
$newAddress->setPostcode($postalCode);
if (null === $postalCode) {
// Si aucun code postal trouvé, on ne gère pas l'adresse
return null;
}
$newAddress->setPostcode($postalCode);
} else {
// Si pas de postcode fourni, on ne gère pas l'adresse
return null;
}
if (null !== $message->addressExtra) {
$newAddress->setExtra($message->addressExtra);
@@ -116,7 +121,7 @@ readonly class PersonUpsertHandler
* Si externalId existe, retourne le Center associé.
* Sinon, cherche par nom, sinon crée un nouveau Center.
*/
private function findOrCreateCenter(?string $externalId, ?string $centerName): object | null
private function findOrCreateCenter(?string $externalId, ?string $centerName): ?object
{
if (null === $externalId && null === $centerName) {
return null;
@@ -173,7 +178,9 @@ readonly class PersonUpsertHandler
$messageAddressMatch = $this->isMessageAddressMatch($lastCurrentAddress, $message);
if (!$messageAddressMatch) {
$newAddress = $this->createAddressWithMessage($message);
$currentHousehold->addAddress($newAddress);
if (null !== $newAddress) {
$currentHousehold->addAddress($newAddress);
}
}
}
} elseif (null === $currentHousehold && $hasAddressInfo) {
@@ -182,7 +189,9 @@ readonly class PersonUpsertHandler
// Create the new address
$newAddress = $this->createAddressWithMessage($message);
$newHousehold->addAddress($newAddress);
if (null !== $newAddress) {
$newHousehold->addAddress($newAddress);
}
// Create a MembersEditor with the new household and add the person
$membersEditor = $this->membersEditorFactory->createEditor($newHousehold);