user(); if (!$user) { return Inertia::render('guilds/Index', [ 'guild' => null, 'myRole' => null, 'canManage' => false, 'invite' => null, 'topPlayers' => [], ]); } $member = GuildMember::where('user_id', $user->id)->first(); if (!$member) { return Inertia::render('guilds/Index', [ 'guild' => null, 'myRole' => null, 'canManage' => false, 'invite' => null, 'topPlayers' => [], ]); } $guild = Guild::with(['owner:id,username,avatar_url', 'members:id,username,avatar_url']) ->findOrFail($member->guild_id); $myRole = $member->role; $canManage = in_array($myRole, ['owner', 'officer']); // Build member list with pivot data $memberRows = GuildMember::where('guild_id', $guild->id) ->with('user:id,username,avatar_url') ->get() ->map(fn ($m) => [ 'id' => $m->user_id, 'username' => $m->user?->username, 'avatar_url'=> $m->user?->avatar_url, 'role' => $m->role, 'joined_at' => $m->joined_at?->toIso8601String(), 'wagered' => (float) ($m->wagered ?? 0), ]); $guildData = [ 'id' => $guild->id, 'name' => $guild->name, 'tag' => $guild->tag, 'logo_url' => $guild->logo_url, 'description' => $guild->description, 'points' => $guild->points, 'members_count'=> $guild->members_count, 'owner' => [ 'id' => $guild->owner->id, 'username' => $guild->owner->username, 'avatar_url'=> $guild->owner->avatar_url, ], 'members' => $memberRows, ]; return Inertia::render('guilds/Index', [ 'guild' => $guildData, 'myRole' => $myRole, 'canManage' => $canManage, 'invite' => $canManage ? $guild->invite_code : null, 'topPlayers' => [], ]); } public function top(Request $request) { $guilds = Guild::with('owner:id,username') ->orderByDesc('points') ->orderByDesc('members_count') ->limit(50) ->get() ->map(fn ($g) => [ 'id' => $g->id, 'name' => $g->name, 'tag' => $g->tag, 'logo_url' => $g->logo_url, 'points' => $g->points, 'members_count'=> $g->members_count, 'owner' => ['id' => $g->owner?->id, 'username' => $g->owner?->username], ]); return Inertia::render('guilds/Top', ['guilds' => $guilds]); } }