Updated dashboard

This commit is contained in:
m.razaghi
2026-08-03 18:00:05 +03:30
parent 74ead9d0ed
commit 5aa2447e23

View File

@@ -40,23 +40,45 @@ class DashboardController extends Controller
// 4. Fetch Recent Data (Limit to 5) // 4. Fetch Recent Data (Limit to 5)
$recentSuggestions = Suggestion::with('user')->latest()->take(5)->get(); $recentSuggestions = Suggestion::with('user')->latest()->take(5)->get();
// Order tickets by updated_at so newly replied tickets jump to the top
$recentTickets = Ticket::with('user')->latest('updated_at')->take(5)->get(); $recentTickets = Ticket::with('user')->latest('updated_at')->take(5)->get();
// 5. Prepare Chart Data (Last 7 Days) // 5. Prepare Chart Data (Dynamic Dates Based on Actual Records)
// Grab the 7 most recent unique dates where users actually registered
$recentDates = User::latest('created_at')
->take(200) // Look through the last 200 users to find distinct dates
->get()
->pluck('created_at')
->map(function ($date) {
// Ensure we get a standard Y-m-d string for querying
return $date ? $date->format('Y-m-d') : null;
})
->filter()
->unique()
->take(7)
->sort() // Sort chronologically (oldest to newest)
->values()
->toArray();
// Fallback just in case the database is completely empty
if (empty($recentDates)) {
$recentDates = [now()->format('Y-m-d')];
}
$chartDates = []; $chartDates = [];
$newUsersData = []; $newUsersData = [];
$paidSubsData = []; $paidSubsData = [];
$freeSubsData = []; $freeSubsData = [];
for ($i = 6; $i >= 0; $i--) { foreach ($recentDates as $dbDate) {
$date = now()->subDays($i); // Add the date to the chart labels
$chartDates[] = $date->format('Y-m-d'); $chartDates[] = $dbDate;
$dbDate = $date->format('Y-m-d');
// Count records for this specific exact date
$newUsersData[] = User::whereDate('created_at', $dbDate)->count(); $newUsersData[] = User::whereDate('created_at', $dbDate)->count();
// Note: If you want to see all-time data in the chart instead of just 7 days,
// you would need to group by month instead of day.
$paidSubsData[] = UserSubscriber::whereDate('created_at', $dbDate) $paidSubsData[] = UserSubscriber::whereDate('created_at', $dbDate)
->whereHas('subscribe', fn($q) => $q->where('is_free', false))->count(); ->whereHas('subscribe', fn($q) => $q->where('is_free', false))->count();
@@ -65,9 +87,16 @@ class DashboardController extends Controller
} }
return view('admin.dashboard.index', compact( return view('admin.dashboard.index', compact(
'totalUsers', 'paidSubscribers', 'freeSubscribers', 'paidBreakdown', 'totalUsers',
'recentSuggestions', 'recentTickets', 'paidSubscribers',
'chartDates', 'newUsersData', 'paidSubsData', 'freeSubsData' 'freeSubscribers',
'paidBreakdown',
'recentSuggestions',
'recentTickets',
'chartDates',
'newUsersData',
'paidSubsData',
'freeSubsData'
)); ));
} }
} }