diff --git a/app/Services/PostcodeService.php b/app/Services/PostcodeService.php index 9489e98..67b8ae3 100644 --- a/app/Services/PostcodeService.php +++ b/app/Services/PostcodeService.php @@ -122,6 +122,10 @@ class PostcodeService $data = $response->json('result'); + if (! is_array($data) || ! isset($data['postcode'], $data['latitude'], $data['longitude'])) { + return null; + } + $result = new LocationResult( query: $postcode, displayName: $data['postcode'], @@ -129,14 +133,21 @@ class PostcodeService lng: $data['longitude'], ); - Postcode::updateOrCreate( - ['postcode' => $normalised], - [ - 'outcode' => substr($normalised, 0, strlen($normalised) - 3), - 'lat' => $data['latitude'], - 'lng' => $data['longitude'], - ], - ); + try { + Postcode::updateOrCreate( + ['postcode' => $normalised], + [ + 'outcode' => substr($normalised, 0, strlen($normalised) - 3), + 'lat' => $data['latitude'], + 'lng' => $data['longitude'], + ], + ); + } catch (Throwable $e) { + Log::warning('PostcodeService: failed to persist postcode after HTTP fallback', [ + 'postcode' => $normalised, + 'error' => $e->getMessage(), + ]); + } return $result; } catch (Throwable $e) { @@ -163,6 +174,10 @@ class PostcodeService $data = $response->json('result'); + if (! is_array($data) || ! isset($data['outcode'], $data['latitude'], $data['longitude'])) { + return null; + } + $result = new LocationResult( query: $outcode, displayName: $data['outcode'], @@ -170,13 +185,20 @@ class PostcodeService lng: $data['longitude'], ); - Outcode::updateOrCreate( - ['outcode' => $normalised], - [ - 'lat' => $data['latitude'], - 'lng' => $data['longitude'], - ], - ); + try { + Outcode::updateOrCreate( + ['outcode' => $normalised], + [ + 'lat' => $data['latitude'], + 'lng' => $data['longitude'], + ], + ); + } catch (Throwable $e) { + Log::warning('PostcodeService: failed to persist outcode after HTTP fallback', [ + 'outcode' => $normalised, + 'error' => $e->getMessage(), + ]); + } return $result; } catch (Throwable $e) {