search) { $query->where(function ($q) use ($request) { $q->where('name', 'like', '%' . $request->search . '%') ->orWhere('email', 'like', '%' . $request->search . '%'); }); } if ($request->membership) { $query->where('membership', $request->membership); } if ($request->role) { $query->where('role', $request->role); } if ($request->banned) { $query->where('is_banned', true); } $users = $query->paginate(30)->withQueryString(); return view('admin.users.index', compact('users')); } public function show(User $user) { $user->load(['subscriptions.plan', 'comments']); $plans = MembershipPlan::where('is_active', true)->get(); return view('admin.users.show', compact('user', 'plans')); } public function edit(User $user) { return view('admin.users.edit', compact('user')); } public function update(Request $request, User $user) { if ($user->isAdmin() && !auth()->user()->isAdmin()) { return back()->with('error', 'Admin kullanıcı düzenlenemez.'); } $data = $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email,' . $user->id, 'role' => 'required|in:user,moderator,admin', 'password' => 'nullable|string|min:8', 'admin_badge' => 'nullable|string|max:32', ]); if (!empty($data['password'])) { $data['password'] = Hash::make($data['password']); } else { unset($data['password']); } $user->update($data); return redirect()->route('admin.users.show', $user)->with('success', 'Kullanıcı güncellendi.'); } public function destroy(User $user) { if ($user->id === auth()->id()) { return back()->with('error', 'Kendinizi silemezsiniz.'); } if ($user->isAdmin()) { return back()->with('error', 'Admin kullanıcı silinemez.'); } $user->delete(); return redirect()->route('admin.users.index')->with('success', 'Kullanıcı silindi.'); } public function ban(Request $request, User $user) { $request->validate(['ban_reason' => 'nullable|string|max:500']); if ($user->isAdmin()) { return back()->with('error', 'Admin kullanıcı banlanamaz.'); } $user->update([ 'is_banned' => true, 'ban_reason' => $request->ban_reason, 'banned_at' => now(), ]); return back()->with('success', $user->name . ' banlandı.'); } public function unban(User $user) { $user->update([ 'is_banned' => false, 'ban_reason' => null, 'banned_at' => null, ]); return back()->with('success', $user->name . ' bandan çıkarıldı.'); } public function givePremium(Request $request, User $user) { $request->validate([ 'plan_id' => 'required|exists:membership_plans,id', ]); $plan = MembershipPlan::findOrFail($request->plan_id); $expiresAt = now()->addDays($plan->duration_days); $user->update([ 'membership' => 'premium', 'premium_expires_at' => $expiresAt, ]); Subscription::create([ 'user_id' => $user->id, 'plan_id' => $plan->id, 'status' => 'active', 'starts_at' => now(), 'expires_at' => $expiresAt, 'payment_method' => 'manual', 'notes' => 'Admin tarafından verildi: ' . auth()->user()->name, ]); return back()->with('success', $user->name . "'e {$plan->duration_days} günlük premium verildi."); } public function removePremium(User $user) { $user->update([ 'membership' => 'free', 'premium_expires_at' => null, ]); Subscription::where('user_id', $user->id) ->where('status', 'active') ->update(['status' => 'cancelled']); return back()->with('success', $user->name . "'in premiumu kaldırıldı."); } }