user(); if ($user === null) { return Response::error('Nicht authentifiziert.'); } if ($this->present($request->get('meetup_id'))) { $meetup = Meetup::find($request->get('meetup_id')); if ($meetup === null) { return Response::error('Meetup nicht gefunden.'); } } else { $meetup = $this->resolveGlobalByName(Meetup::query(), $request->get('meetup'), 'Meetups'); if ($meetup instanceof Response) { return $meetup; } } $alreadyMember = $meetup->users()->whereKey($user->getAuthIdentifier())->exists(); $meetup->users()->syncWithoutDetaching([ $user->getAuthIdentifier() => ['is_leader' => false], ]); return Response::json([ 'meetup' => MeetupResource::make($meetup)->resolve(), 'message' => $alreadyMember ? '„'.$meetup->name.'" war bereits Teil deiner Meetups.' : '„'.$meetup->name.'" wurde zu deinen Meetups hinzugefügt.', ]); } /** * @return array */ public function schema(JsonSchema $schema): array { return [ 'meetup' => $schema->string()->description('Name des bestehenden Meetups, das hinzugefügt werden soll (vorher per search-meetups ermitteln).'), 'meetup_id' => $schema->integer()->description('Optional: ID des Meetups, falls bereits bekannt (Alternative zu "meetup").'), ]; } }