51 lines
1.6 KiB
PHP
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'
|
|
));
|
|
}
|
|
}
|