Updated dashboard
This commit is contained in:
@@ -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'
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user