mirror of
https://github.com/NNTmux/newznab-tmux.git
synced 2026-08-29 02:01:33 +00:00
Add new widget
This commit is contained in:
@@ -142,13 +142,25 @@ class AdminPageController extends BasePageController
|
||||
return \App\Models\ReleaseReport::where('status', 'pending')->count();
|
||||
});
|
||||
|
||||
// Cache soft-deleted users count for 5 minutes
|
||||
$softDeletedCount = \Illuminate\Support\Facades\Cache::remember('admin_stats_soft_deleted_users_count', 300, function () {
|
||||
return \App\Models\User::onlyTrashed()->count();
|
||||
});
|
||||
|
||||
// Cache permanently deleted users count for 5 minutes (from activity log)
|
||||
$permanentlyDeletedCount = \Illuminate\Support\Facades\Cache::remember('admin_stats_permanently_deleted_users_count', 300, function () {
|
||||
return \App\Models\UserActivity::where('activity_type', 'deleted')
|
||||
->whereJsonContains('metadata->permanent', true)
|
||||
->count();
|
||||
});
|
||||
|
||||
// Today's counts can be cached for 1 minute since they change frequently
|
||||
$releasesToday = \Illuminate\Support\Facades\Cache::remember('admin_stats_releases_today_'.$today, 60, function () use ($today) {
|
||||
return \App\Models\Release::whereRaw('DATE(adddate) = ?', [$today])->count();
|
||||
});
|
||||
|
||||
$usersToday = \Illuminate\Support\Facades\Cache::remember('admin_stats_users_today_'.$today, 60, function () use ($today) {
|
||||
return \App\Models\User::whereRaw('DATE(created_at) = ?', [$today])->count();
|
||||
return \App\Models\User::whereNull('deleted_at')->whereRaw('DATE(created_at) = ?', [$today])->count();
|
||||
});
|
||||
|
||||
return [
|
||||
@@ -160,6 +172,8 @@ class AdminPageController extends BasePageController
|
||||
'active_groups' => $activeGroupsCount,
|
||||
'failed' => $failedCount,
|
||||
'reported' => $reportedCount,
|
||||
'soft_deleted_users' => $softDeletedCount,
|
||||
'permanently_deleted_users' => $permanentlyDeletedCount,
|
||||
'disk_free' => $this->getDiskSpace(),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
</div>
|
||||
|
||||
<!-- Stats Grid -->
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-6">
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-6 gap-6">
|
||||
<!-- Total Releases -->
|
||||
<div class="bg-white dark:bg-gray-800 rounded-xl shadow-sm p-6 border border-gray-200 dark:border-gray-700">
|
||||
<div class="flex items-center justify-between">
|
||||
@@ -99,6 +99,32 @@
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Deleted Users -->
|
||||
<div class="bg-white dark:bg-gray-800 rounded-xl shadow-sm p-6 border border-gray-200 dark:border-gray-700">
|
||||
<div class="flex items-center justify-between">
|
||||
<div>
|
||||
<p class="text-sm text-gray-500 dark:text-gray-400 mb-1">Deleted Users</p>
|
||||
<p class="text-3xl font-bold text-gray-800 dark:text-gray-200">{{ number_format(($stats['soft_deleted_users'] ?? 0) + ($stats['permanently_deleted_users'] ?? 0)) }}</p>
|
||||
</div>
|
||||
<div class="w-12 h-12 bg-red-100 dark:bg-red-900 rounded-lg flex items-center justify-center">
|
||||
<i class="fas fa-user-slash text-2xl text-red-600 dark:text-red-400"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-4 space-y-1">
|
||||
<span class="text-sm text-yellow-600 dark:text-yellow-400 block">
|
||||
<i class="fas fa-trash"></i> {{ number_format($stats['soft_deleted_users'] ?? 0) }} soft deleted
|
||||
</span>
|
||||
<span class="text-sm text-red-600 dark:text-red-400 block">
|
||||
<i class="fas fa-trash-alt"></i> {{ number_format($stats['permanently_deleted_users'] ?? 0) }} permanently deleted
|
||||
</span>
|
||||
</div>
|
||||
<div class="mt-2">
|
||||
<a href="{{ route('admin.deleted.users.index') }}" class="text-sm text-blue-600 dark:text-blue-400 hover:text-blue-800 dark:hover:text-blue-300">
|
||||
View deleted users <i class="fas fa-arrow-right"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- User Statistics Widget -->
|
||||
|
||||
Reference in New Issue
Block a user