new_malcomm_oline/app/Http/Controllers/DashboardController.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'
));
}
}