|
4 | 4 |
|
5 | 5 | use App\Entity\Gateway as Source;
|
6 | 6 | use App\Entity\Mapping;
|
| 7 | +use Doctrine\Common\Collections\ArrayCollection; |
| 8 | +use Doctrine\Common\Collections\Criteria; |
7 | 9 | use Psr\Log\LoggerInterface;
|
8 | 10 | use CommonGateway\CoreBundle\Service\GatewayResourceService;
|
9 | 11 | use CommonGateway\CoreBundle\Service\CallService;
|
@@ -94,7 +96,6 @@ public function fetchPerson(Source $source, ?string $endpoint='', ?array $query=
|
94 | 96 | return $this->callService->decodeResponse($source, $response, 'application/json');
|
95 | 97 | } catch (\Exception $e) {
|
96 | 98 | $this->logger->error('Error when fetching ingeschrevenpersoon: '.$e->getMessage());
|
97 |
| - |
98 | 99 | return null;
|
99 | 100 | }
|
100 | 101 |
|
@@ -132,13 +133,43 @@ public function getAllRelatives(Source $source, array $ingeschrevenPersoon): ?ar
|
132 | 133 | 'burgerservicenummer' => implode(',', $bsns),
|
133 | 134 | ];
|
134 | 135 |
|
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; |
138 | 140 | }
|
139 | 141 |
|
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(); |
142 | 173 | $bsns = [];
|
143 | 174 | }//end if
|
144 | 175 | }//end foreach
|
@@ -215,6 +246,10 @@ public function haalCentraalToStufBGHandler(array $data, array $configuration):
|
215 | 246 |
|
216 | 247 | // 2. Get ingeschrevenpersoon from source.
|
217 | 248 | $ingeschrevenPersoon = $this->fetchPerson($source, "/$bsn", ['expand' => 'ouders,partners,kinderen']);
|
| 249 | + if ($ingeschrevenPersoon === null || empty($ingeschrevenPersoon) === true) { |
| 250 | + $ingeschrevenPersoon = $this->fetchPerson($source, "/$bsn"); |
| 251 | + } |
| 252 | + |
218 | 253 | if ($ingeschrevenPersoon === null || empty($ingeschrevenPersoon) === true) {
|
219 | 254 | $this->logger->error('IngeschrevenPersoon could not be found/fetched from source.');
|
220 | 255 |
|
|
0 commit comments