From de0e162533f10cd0c789beabea01ee708125ea89 Mon Sep 17 00:00:00 2001 From: Arya Dwi Putra Date: Tue, 2 Dec 2025 07:52:49 +0700 Subject: [PATCH] Add public asset detail page for QR scan with conditional action buttons --- .../Controllers/PublicAssetController.php | 21 +++++ app/Services/Asset/AssetService.php | 2 +- .../views/pages/landing/asset-show.blade.php | 76 +++++++++++++++++++ routes/web.php | 2 + 4 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 app/Http/Controllers/PublicAssetController.php create mode 100644 resources/views/pages/landing/asset-show.blade.php diff --git a/app/Http/Controllers/PublicAssetController.php b/app/Http/Controllers/PublicAssetController.php new file mode 100644 index 0000000..5509ae4 --- /dev/null +++ b/app/Http/Controllers/PublicAssetController.php @@ -0,0 +1,21 @@ +load([ + 'status','class','category','location','department','user','personInCharge','warranty', + 'photos', + ]); + + return view('pages.landing.asset-show', [ + 'asset' => $asset, + ]); + } +} diff --git a/app/Services/Asset/AssetService.php b/app/Services/Asset/AssetService.php index d48dbce..1ddfac3 100644 --- a/app/Services/Asset/AssetService.php +++ b/app/Services/Asset/AssetService.php @@ -89,7 +89,7 @@ class AssetService private function generateQr(Asset $asset): void { $path = "qr/{$asset->code}.svg"; - $url = route('assets.show', $asset); + $url = route('assets.public.show', $asset); $image = QrCode::format('svg') ->size(300) diff --git a/resources/views/pages/landing/asset-show.blade.php b/resources/views/pages/landing/asset-show.blade.php new file mode 100644 index 0000000..9e7444f --- /dev/null +++ b/resources/views/pages/landing/asset-show.blade.php @@ -0,0 +1,76 @@ +@extends('layouts.landing-master') + +@section('content') +
+
+
+
+
+ Asset Detail +
+

{{ $asset->code }}

+

{{ $asset->name }}

+
+
+ + + + + + + + + +
Status{{ $asset->status?->name ?: '-' }}
Kategori{{ $asset->category?->name ?: '-' }}
Lokasi{{ $asset->location?->name ?: '-' }}
PIC{{ $asset->personInCharge?->name ?: '-' }}
Pengguna{{ $asset->user?->name ?: '-' }}
Garansi{{ $asset->warranty?->name ?: '-' }}
+
+
+ @auth +
+ Buka di Dashboard + @can('movements.manage') + Movement + @endcan + @can('disposals.manage') + Disposal + @endcan + @can('maintenance.manage') + Maintenance + @endcan +
+ @else +

Untuk melakukan transaksi (movement/disposal/maintenance), silakan login.

+ @endauth +
+
+
+
+
+
+ @if($asset->qr_path) + QR {{ $asset->code }} +

{{ route('assets.public.show', $asset) }}

+ @else +

QR belum tersedia.

+ @endif +
+
+
+ @forelse($asset->photos as $photo) +
+ + foto aset + +
+ @empty +
Belum ada foto aset.
+ @endforelse +
+
+
+
+
+
+
+
+
+@endsection diff --git a/routes/web.php b/routes/web.php index abfc047..22c7d76 100644 --- a/routes/web.php +++ b/routes/web.php @@ -24,10 +24,12 @@ use App\Http\Controllers\ReportController; use App\Http\Controllers\AssetMaintenanceController; use App\Http\Controllers\AuthController; use App\Http\Controllers\AssetPhotoController; +use App\Http\Controllers\PublicAssetController; use App\Http\Controllers\Controller; Route::view('/', 'pages.landing.index')->name('landing'); Route::view('/landing', 'pages.landing.index'); +Route::get('asset-view/{asset}', [PublicAssetController::class, 'show'])->name('assets.public.show'); Route::middleware('auth')->group(function () { Route::get('index', [DashboardsController::class, 'index'])->name('index');