43 lines
1.3 KiB
PHP
43 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Machine\Machine;
|
|
use Illuminate\Http\Request;
|
|
|
|
class DashboardController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
// 每頁顯示筆數限制 (預設為 10)
|
|
$perPage = (int) request()->input('per_page', 10);
|
|
if ($perPage <= 0) $perPage = 10;
|
|
|
|
// 從資料庫獲取真實統計數據
|
|
$totalRevenue = \App\Models\Member\MemberWallet::sum('balance');
|
|
$activeMachines = Machine::where('status', 'online')->count();
|
|
$alertsPending = Machine::where('status', 'error')->count();
|
|
$memberCount = \App\Models\Member\Member::count();
|
|
|
|
// 獲取機台列表 (分頁)
|
|
$machines = Machine::when($request->search, function($query, $search) {
|
|
$query->where(function($q) use ($search) {
|
|
$q->where('name', 'like', "%{$search}%")
|
|
->orWhere('serial_no', 'like', "%{$search}%");
|
|
});
|
|
})
|
|
->latest()
|
|
->paginate($perPage)
|
|
->withQueryString();
|
|
|
|
return view('admin.dashboard', compact(
|
|
'totalRevenue',
|
|
'activeMachines',
|
|
'alertsPending',
|
|
'memberCount',
|
|
'machines'
|
|
));
|
|
}
|
|
}
|