new_malcomm_oline/app/Http/Controllers/DashboardController.php
2026-08-29 20:49:23 +02:00

51 lines
1.6 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\View\View;
use Spatie\Permission\Models\Role;
class DashboardController extends Controller
{
/**
* Display the dashboard with summary statistics.
*/
public function index(): View
{
$totalUsers = User::whereNull('deleted_at')->count();
$adminCount = Role::where('name', 'admin')->exists()
? User::role('admin')->whereNull('deleted_at')->count()
: 0;
$managerCount = Role::where('name', 'kierownik')->exists()
? User::role('kierownik')->whereNull('deleted_at')->count()
: 0;
$workerCount = Role::where('name', 'pracownik')->exists()
? User::role('pracownik')->whereNull('deleted_at')->count()
: 0;
$recentUsers = User::with('advances')
->whereNull('deleted_at')
->get()
->filter(fn (User $user) => (float) $user->advances->sum('amount') < 0)
->sortByDesc('created_at')
->take(5)
->values();
$lowestAdvanceBalances = User::with('advances')
->whereNull('deleted_at')
->get()
->filter(fn (User $user) => (float) $user->advances->sum('amount') < 0)
->sortBy(fn (User $user) => (float) $user->advances->sum('amount'))
->take(10)
->values();
return view('dashboard', compact(
'totalUsers',
'adminCount',
'managerCount',
'workerCount',
'recentUsers',
'lowestAdvanceBalances'
));
}
}