71 lines
2.4 KiB
PHP
71 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\User;
|
|
use App\Models\Vehicle;
|
|
use Illuminate\View\View;
|
|
use Spatie\Permission\Models\Role;
|
|
|
|
class DashboardController extends Controller
|
|
{
|
|
/**
|
|
* Display the dashboard with summary statistics.
|
|
*/
|
|
public function index(): View
|
|
{
|
|
$user = auth()->user();
|
|
|
|
if ($user && $user->hasRole('pracownik')) {
|
|
$myVehicles = $user->vehicles()->orderBy('brand')->orderBy('model')->get();
|
|
$myAdvances = $user->advances()->with('type')->orderByDesc('date')->orderByDesc('id')->get();
|
|
|
|
return view('dashboard', compact('myVehicles', 'myAdvances'));
|
|
}
|
|
|
|
$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();
|
|
|
|
$vehiclesDueSoon = Vehicle::with('user')
|
|
->where(function ($query) {
|
|
$query->whereBetween('oc_expiry_date', [now()->startOfDay(), now()->addDays(14)->endOfDay()])
|
|
->orWhereBetween('technical_inspection_date', [now()->startOfDay(), now()->addDays(14)->endOfDay()]);
|
|
})
|
|
->orderBy('oc_expiry_date')
|
|
->orderBy('technical_inspection_date')
|
|
->get();
|
|
|
|
return view('dashboard', compact(
|
|
'totalUsers',
|
|
'adminCount',
|
|
'managerCount',
|
|
'workerCount',
|
|
'recentUsers',
|
|
'lowestAdvanceBalances',
|
|
'vehiclesDueSoon'
|
|
));
|
|
}
|
|
}
|