diff --git a/src/Api.php b/src/Api.php index 2e244c5..955d870 100644 --- a/src/Api.php +++ b/src/Api.php @@ -16,6 +16,7 @@ use Zoomyboy\LaravelNami\Data\Member; use Zoomyboy\LaravelNami\Data\MemberEntry; use Zoomyboy\LaravelNami\Data\Membership; use Zoomyboy\LaravelNami\Data\MembershipEntry; +use Zoomyboy\LaravelNami\Exceptions\ConflictException; use Zoomyboy\LaravelNami\Exceptions\HttpException; use Zoomyboy\LaravelNami\Exceptions\MemberDataCorruptedException; use Zoomyboy\LaravelNami\Exceptions\NoJsonReceivedException; @@ -126,9 +127,7 @@ class Api $payload['kontoverbindung'] = json_encode(data_get($payload, 'kontoverbindung', [])); $url = $this->url.'/ica/rest/nami/mitglied/filtered-for-navigation/gruppierung/gruppierung/'.$member->groupId.'/'.$member->id; $response = $this->http()->put($url, $payload); - if (true !== data_get($response->json(), 'success')) { - $this->exception(NotSuccessfulException::class, 'Update failed', $url, $response->json(), $member->toNami()); - } + $this->assertOk($response, $url, 'Update failed'); return $response->json()['data']['id']; } else { @@ -480,6 +479,10 @@ class Api $this->exception(RightException::class, $error, $url, $response->json()); } + if (data_get($response, 'message') && Str::contains($response['message'], 'Der Datensatz wurde zwischenzeitlich verändert')) { + $this->exception(ConflictException::class, $error, $url, $response->json()); + } + if (false === $response['success']) { $this->exception(NotSuccessfulException::class, $error, $url, $response->json()); } diff --git a/src/Exceptions/ConflictException.php b/src/Exceptions/ConflictException.php new file mode 100644 index 0000000..89397df --- /dev/null +++ b/src/Exceptions/ConflictException.php @@ -0,0 +1,7 @@ +response, 'message'), 'Der Datensatz wurde zwischenzeitlich verändert'); + throw ValidationException::withMessages(['id' => 'Unbekannter Fehler']); } public function report(): void @@ -68,11 +67,6 @@ abstract class HttpException extends Exception ]); } - public function render(): void - { - throw ValidationException::withMessages(['id' => 'Unbekannter Fehler']); - } - public function outputToConsole(Command $command): void { $command->info('Request URL: '.$this->requestUrl);