user(); return response()->json([ 'success' => true, 'data' => [ 'id' => $user->id, 'name' => $user->name, 'email' => $user->email, 'role' => $user->role, 'created_at' => $user->created_at, 'updated_at' => $user->updated_at, ], ], 200); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'Fehler beim Abrufen des Profils', 'error' => $e->getMessage(), ], 500); } } /** * Get user's created events * GET /api/user/events */ public function myEvents(Request $request): JsonResponse { try { $user = $request->user(); $events = $user->createdEvents() ->with('location', 'occurrences', 'source') ->paginate(15); return response()->json([ 'success' => true, 'data' => $events->items(), 'pagination' => [ 'total' => $events->total(), 'per_page' => $events->perPage(), 'current_page' => $events->currentPage(), 'last_page' => $events->lastPage(), ], ], 200); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'Fehler beim Abrufen der Events', 'error' => $e->getMessage(), ], 500); } } /** * Get user's favorite events * GET /api/user/favorites */ public function favorites(Request $request): JsonResponse { try { $user = $request->user(); $favorites = $user->favoriteEvents() ->with('location', 'occurrences', 'source') ->paginate(15); return response()->json([ 'success' => true, 'data' => $favorites->items(), 'pagination' => [ 'total' => $favorites->total(), 'per_page' => $favorites->perPage(), 'current_page' => $favorites->currentPage(), 'last_page' => $favorites->lastPage(), ], ], 200); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'Fehler beim Abrufen der Favoriten', 'error' => $e->getMessage(), ], 500); } } /** * Toggle favorite status for an event * POST /api/user/favorites/{event}/toggle */ public function toggleFavorite(Request $request, $eventId): JsonResponse { try { $user = $request->user(); // Überprüfen Sie, ob das Event existiert $event = \App\Models\Event::findOrFail($eventId); // Toggle the favorite if ($user->favoriteEvents()->where('event_id', $eventId)->exists()) { $user->favoriteEvents()->detach($eventId); return response()->json([ 'success' => true, 'message' => 'Event aus Favoriten entfernt', 'is_favorite' => false, ], 200); } else { $user->favoriteEvents()->attach($eventId); return response()->json([ 'success' => true, 'message' => 'Event zu Favoriten hinzugefügt', 'is_favorite' => true, ], 200); } } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'Fehler beim Toggling des Favoriten', 'error' => $e->getMessage(), ], 500); } } /** * Get user statistics * GET /api/user/stats */ public function stats(Request $request): JsonResponse { try { $user = $request->user(); return response()->json([ 'success' => true, 'data' => [ 'total_events_created' => $user->createdEvents()->count(), 'total_favorites' => $user->favoriteEvents()->count(), 'is_organizer' => $user->isOrganizer(), 'is_admin' => $user->isAdmin(), 'user_role' => $user->role, ], ], 200); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'Fehler beim Abrufen der Statistiken', 'error' => $e->getMessage(), ], 500); } } }