Updated dashboard
This commit is contained in:
59
app/Http/Controllers/Admin/DashboardController.php
Normal file
59
app/Http/Controllers/Admin/DashboardController.php
Normal file
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\User;
|
||||
use App\Models\Suggestion;
|
||||
use App\Models\Ticket;
|
||||
use App\Models\UserSubscriber;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class DashboardController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
// 1. Calculate General Statistics
|
||||
$totalUsers = User::count();
|
||||
|
||||
// Using your UserSubscriber model, checking the is_free column and expired_at date
|
||||
$paidSubscribers = UserSubscriber::where('expired_at', '>=', now())
|
||||
->where('is_free', false)
|
||||
->distinct('user_id')
|
||||
->count('user_id');
|
||||
|
||||
$freeSubscribers = UserSubscriber::where('expired_at', '>=', now())
|
||||
->where('is_free', true)
|
||||
->distinct('user_id')
|
||||
->count('user_id');
|
||||
|
||||
// 2. Fetch Recent Data (Limit to 5)
|
||||
$recentSuggestions = Suggestion::with('user')->latest()->take(5)->get();
|
||||
$recentTickets = Ticket::with('user')->latest('updated_at')->take(5)->get();
|
||||
|
||||
// 3. Prepare Chart Data (Last 7 Days)
|
||||
$chartDates = [];
|
||||
$newUsersData = [];
|
||||
$paidSubsData = [];
|
||||
$freeSubsData = [];
|
||||
|
||||
for ($i = 6; $i >= 0; $i--) {
|
||||
$date = now()->subDays($i);
|
||||
$chartDates[] = $date->format('Y-m-d'); // Example: "2023-10-25"
|
||||
$dbDate = $date->format('Y-m-d');
|
||||
|
||||
// Line Chart Data: New Users
|
||||
$newUsersData[] = User::whereDate('created_at', $dbDate)->count();
|
||||
|
||||
// Column Chart Data: Subscriptions
|
||||
$paidSubsData[] = UserSubscriber::whereDate('created_at', $dbDate)->where('is_free', false)->count();
|
||||
$freeSubsData[] = UserSubscriber::whereDate('created_at', $dbDate)->where('is_free', true)->count();
|
||||
}
|
||||
|
||||
return view('admin.dashboard.index', compact(
|
||||
'totalUsers', 'paidSubscribers', 'freeSubscribers',
|
||||
'recentSuggestions', 'recentTickets',
|
||||
'chartDates', 'newUsersData', 'paidSubsData', 'freeSubsData'
|
||||
));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user