diff --git a/api/app/Exceptions/Artist/ArtistDeletedException.php b/api/app/Exceptions/Artist/ArtistDeletedException.php new file mode 100644 index 00000000..49a76057 --- /dev/null +++ b/api/app/Exceptions/Artist/ArtistDeletedException.php @@ -0,0 +1,25 @@ +withoutGlobalScope(OrganisationScope::class) + ->where('portal_token', $digest) + ->first(); + + if ($engagement === null) { + throw InvalidPortalTokenException::create(); + } + + $artist = Artist::query() + ->withoutGlobalScope(OrganisationScope::class) + ->whereKey($engagement->artist_id) + ->first(); + + if (! $artist instanceof Artist) { + throw new ArtistDeletedException((string) $engagement->id); + } + + return new ArtistResolverResult( + subject: $artist, + eventId: (string) $engagement->event_id, + engagement: $engagement, + ); + } +} diff --git a/api/app/FormBuilder/Resolvers/ArtistResolverResult.php b/api/app/FormBuilder/Resolvers/ArtistResolverResult.php new file mode 100644 index 00000000..2acbb0b9 --- /dev/null +++ b/api/app/FormBuilder/Resolvers/ArtistResolverResult.php @@ -0,0 +1,27 @@ +