Skip to content

Commit 46f1e79

Browse files
authored
Merge pull request #10 from CommonGateway/fix/BEHEER-2749/filtering
Fix filtering and error recovery
2 parents 72ab57a + 1382ce0 commit 46f1e79

File tree

1 file changed

+41
-6
lines changed

1 file changed

+41
-6
lines changed

src/Service/HaalCentraalToStufBGService.php

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
use App\Entity\Gateway as Source;
66
use App\Entity\Mapping;
7+
use Doctrine\Common\Collections\ArrayCollection;
8+
use Doctrine\Common\Collections\Criteria;
79
use Psr\Log\LoggerInterface;
810
use CommonGateway\CoreBundle\Service\GatewayResourceService;
911
use CommonGateway\CoreBundle\Service\CallService;
@@ -94,7 +96,6 @@ public function fetchPerson(Source $source, ?string $endpoint='', ?array $query=
9496
return $this->callService->decodeResponse($source, $response, 'application/json');
9597
} catch (\Exception $e) {
9698
$this->logger->error('Error when fetching ingeschrevenpersoon: '.$e->getMessage());
97-
9899
return null;
99100
}
100101

@@ -132,13 +133,43 @@ public function getAllRelatives(Source $source, array $ingeschrevenPersoon): ?ar
132133
'burgerservicenummer' => implode(',', $bsns),
133134
];
134135

135-
if (isset($ingeschrevenPersoon['verblijfplaats']['postcode']) === true && $ingeschrevenPersoon['verblijfplaats']['huisnummer']) {
136-
$query['verblijfplaats__postcode'] = $ingeschrevenPersoon['verblijfplaats']['postcode'];
137-
$query['verblijfplaats__huisnummer'] = $ingeschrevenPersoon['verblijfplaats']['huisnummer'];
136+
$people = $this->fetchPerson($source, '', $query);
137+
138+
if ($people === null) {
139+
continue;
138140
}
139141

140-
$people = $this->fetchPerson($source, '', $query,);
141-
$fetchedPeople[$type] = $people['_embedded']['ingeschrevenpersonen'];
142+
$foundPeople = new ArrayCollection($people['_embedded']['ingeschrevenpersonen']);
143+
$fetchedPeople[$type] = $foundPeople->filter(
144+
function ($person) use ($ingeschrevenPersoon) {
145+
$comp = true;
146+
if (isset($ingeschrevenPersoon['verblijfplaats']['postcode']) === true && isset($person['verblijfplaats']['postcode']) === true) {
147+
$comp = $comp && $ingeschrevenPersoon['verblijfplaats']['postcode'] === $person['verblijfplaats']['postcode'];
148+
}
149+
150+
if (isset($ingeschrevenPersoon['verblijfplaats']['huisnummer']) === true && isset($person['verblijfplaats']['huisnummer']) === true) {
151+
$comp = $comp && $ingeschrevenPersoon['verblijfplaats']['huisnummer'] === $person['verblijfplaats']['huisnummer'];
152+
}
153+
154+
if (isset($ingeschrevenPersoon['verblijfplaats']['huisletter']) === true && isset($person['verblijfplaats']['huisletter']) === true) {
155+
$comp = $comp && $ingeschrevenPersoon['verblijfplaats']['huisnummer'] === $person['verblijfplaats']['huisnummer'];
156+
}
157+
158+
if (isset($ingeschrevenPersoon['verblijfplaats']['huisnummertoevoeging']) === true && isset($person['verblijfplaats']['huisnummertoevoeging']) === true) {
159+
$comp = $comp && $ingeschrevenPersoon['verblijfplaats']['huisnummertoevoeging'] === $person['verblijfplaats']['huisnummertoevoeging'];
160+
}
161+
162+
if ((isset($ingeschrevenPersoon['verblijfplaats']['postcode']) !== isset($person['verblijfplaats']['postcode']))
163+
|| (isset($ingeschrevenPersoon['verblijfplaats']['huisnummer']) !== isset($person['verblijfplaats']['huisnummer']))
164+
|| (isset($ingeschrevenPersoon['verblijfplaats']['huisletter']) !== isset($person['verblijfplaats']['huisletter']))
165+
|| (isset($ingeschrevenPersoon['verblijfplaats']['huisnummertoevoeging']) !== isset($person['verblijfplaats']['huisnummertoevoeging']))
166+
) {
167+
return false;
168+
}
169+
170+
return $comp;
171+
}
172+
)->toArray();
142173
$bsns = [];
143174
}//end if
144175
}//end foreach
@@ -215,6 +246,10 @@ public function haalCentraalToStufBGHandler(array $data, array $configuration):
215246

216247
// 2. Get ingeschrevenpersoon from source.
217248
$ingeschrevenPersoon = $this->fetchPerson($source, "/$bsn", ['expand' => 'ouders,partners,kinderen']);
249+
if ($ingeschrevenPersoon === null || empty($ingeschrevenPersoon) === true) {
250+
$ingeschrevenPersoon = $this->fetchPerson($source, "/$bsn");
251+
}
252+
218253
if ($ingeschrevenPersoon === null || empty($ingeschrevenPersoon) === true) {
219254
$this->logger->error('IngeschrevenPersoon could not be found/fetched from source.');
220255

0 commit comments

Comments
 (0)