From ec39ee9965dc2dfcacb905a50ca5394c539d275e Mon Sep 17 00:00:00 2001 From: Tomasz Boruc Date: Sun, 30 Aug 2026 22:00:28 +0200 Subject: [PATCH] Dodanei dedykowane dasboarda dla pracownika --- app/Http/Controllers/DashboardController.php | 9 +++ resources/views/dashboard.blade.php | 77 +++++++++++++++++++- tests/Feature/VehicleTest.php | 41 +++++++++++ 3 files changed, 126 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php index 8435b62..f0d880f 100644 --- a/app/Http/Controllers/DashboardController.php +++ b/app/Http/Controllers/DashboardController.php @@ -14,6 +14,15 @@ class DashboardController extends Controller */ 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() diff --git a/resources/views/dashboard.blade.php b/resources/views/dashboard.blade.php index fe3115f..f042b30 100644 --- a/resources/views/dashboard.blade.php +++ b/resources/views/dashboard.blade.php @@ -1,13 +1,86 @@

- {{ __('Dashboard') }} + {{ auth()->user()->hasRole('pracownik') ? 'Mój dashboard' : __('Dashboard') }}

+ @if(auth()->user()->hasRole('pracownik')) +
+
+

Mój samochód

+ + @if(($myVehicles ?? collect())->isEmpty()) +

Brak przypisanego pojazdu.

+ @else +
+ @foreach($myVehicles as $vehicle) +
+
+
+

+ {{ $vehicle->brand }} {{ $vehicle->model ?? '' }} +

+

+ {{ $vehicle->registration_number }} +

+
+ + {{ $vehicle->status }} + +
+ +
+
+

OC

+

{{ $vehicle->oc_expiry_date?->format('d.m.Y') ?? '—' }}

+
+
+

Przegląd

+

{{ $vehicle->technical_inspection_date?->format('d.m.Y') ?? '—' }}

+
+
+

Ubezpieczenie

+

{{ $vehicle->insurance_provider ?? '—' }}

+
+
+

Przebieg

+

{{ number_format((float) $vehicle->mileage_km, 0, ',', ' ') }} km

+
+
+
+ @endforeach +
+ @endif +
+ +
+

Moje zaliczki

+ + @if(($myAdvances ?? collect())->isEmpty()) +

Brak zaliczek.

+ @else +
+ @foreach($myAdvances as $advance) +
+
+

{{ $advance->type?->name ?? '—' }}

+

{{ $advance->date->format('d.m.Y') }}

+
+ + {{ number_format((float) $advance->amount, 2, ',', ' ') }} zł + +
+ @endforeach +
+ @endif +
+
+ @else + {{-- Karty ze statystykami --}}
@@ -225,6 +298,8 @@
+ @endif +
\ No newline at end of file diff --git a/tests/Feature/VehicleTest.php b/tests/Feature/VehicleTest.php index b5119eb..35c4f45 100644 --- a/tests/Feature/VehicleTest.php +++ b/tests/Feature/VehicleTest.php @@ -207,3 +207,44 @@ test('employee profile shows assigned vehicle with expire dates and insurance de $response->assertSee('OC'); $response->assertSee('Przegląd'); }); + +test('employee dashboard shows only own vehicle and advances', function () { + Permission::firstOrCreate(['name' => 'zaliczki_access']); + + $employee = User::factory()->create(); + $role = Role::firstOrCreate(['name' => 'pracownik']); + $role->givePermissionTo('zaliczki_access'); + $employee->assignRole($role); + + $assignedVehicle = Vehicle::create([ + 'brand' => 'Toyota', + 'model' => 'Corolla', + 'registration_number' => 'DW1234A', + 'user_id' => $employee->id, + 'year' => 2021, + 'purchase_date' => '2021-05-12', + 'oc_expiry_date' => now()->addDays(10)->toDateString(), + 'oil_change_km' => 12000, + 'insurance_provider' => 'PZU', + 'technical_inspection_date' => now()->addDays(12)->toDateString(), + 'mileage_km' => 95000, + 'status' => 'używany', + ]); + + $advanceType = \App\Models\AdvanceType::create(['name' => 'Paliwo']); + \App\Models\Advance::create([ + 'date' => now()->subDays(2)->toDateString(), + 'user_id' => $employee->id, + 'amount' => 250.50, + 'advance_type_id' => $advanceType->id, + ]); + + $response = $this->actingAs($employee)->get(route('dashboard')); + + $response->assertOk(); + $response->assertSee('Mój dashboard'); + $response->assertSee('Mój samochód'); + $response->assertSee($assignedVehicle->brand); + $response->assertSee('Moje zaliczki'); + $response->assertSee('250,50'); +});