diff --git a/app/Http/Controllers/DashboardsController.php b/app/Http/Controllers/DashboardsController.php index 5e0cf83..079de1e 100644 --- a/app/Http/Controllers/DashboardsController.php +++ b/app/Http/Controllers/DashboardsController.php @@ -3,13 +3,65 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; +use App\Models\Asset; +use App\Models\AssetStatus; +use App\Models\AssetLocation; +use App\Models\AssetMovement; +use App\Models\AssetDisposal; +use App\Models\AssetAudit; +use Carbon\Carbon; class DashboardsController extends Controller { public function index() { - return view('pages.dashboards.index'); + $now = Carbon::now(); + $last30 = $now->copy()->subDays(30); + + $totalAssets = Asset::count(); + $movementCount = AssetMovement::where('created_at', '>=', $last30)->count(); + $disposalCount = AssetDisposal::whereNull('reversed_at')->count(); + $auditIssues = AssetAudit::whereIn('status', ['missing','damaged'])->count(); + + $byStatus = AssetStatus::orderBy('name') + ->get() + ->map(function ($status) { + return [ + 'label' => $status->name, + 'value' => $status->assets()->count(), + ]; + }); + + $byLocation = AssetLocation::orderBy('name') + ->get() + ->map(function ($loc) { + return [ + 'label' => $loc->name, + 'value' => $loc->assets()->count(), + ]; + })->filter(fn($row) => $row['value'] > 0)->values(); + + $recentAudits = AssetAudit::with('asset') + ->latest() + ->take(5) + ->get(); + + $recentDisposals = AssetDisposal::with('asset') + ->latest() + ->take(5) + ->get(); + + return view('pages.dashboards.index', compact( + 'totalAssets', + 'movementCount', + 'disposalCount', + 'auditIssues', + 'byStatus', + 'byLocation', + 'recentAudits', + 'recentDisposals' + )); } } diff --git a/resources/views/pages/dashboards/index.blade.php b/resources/views/pages/dashboards/index.blade.php index 9849f01..2c9c2fc 100644 --- a/resources/views/pages/dashboards/index.blade.php +++ b/resources/views/pages/dashboards/index.blade.php @@ -9,44 +9,206 @@ @section('content') - -
- + - -Thank you for choosing our template.. if you want to create your own customised project take a refrence of our project and you can implement here.
-Total Aset
+Movement 30 hari
+Disposal Aktif
+Audit Bermasalah
+| Aset | +Status | +Waktu | +Catatan | +
|---|---|---|---|
| {{ $audit->asset?->code }} - {{ $audit->asset?->name }} | +{{ ucfirst($audit->status) }} | +{{ optional($audit->audited_at)->format('d/m/Y H:i') ?: '-' }} | +{{ $audit->notes ?: '-' }} | +
| Belum ada data audit. | |||
| Aset | +Alasan | +Waktu | +Status | +
|---|---|---|---|
| {{ $disposal->asset?->code }} - {{ $disposal->asset?->name }} | +{{ $disposal->reason ?: '-' }} | +{{ optional($disposal->disposed_at)->format('d/m/Y H:i') ?: '-' }} | ++ @if($disposal->reversed_at) + Reversed + @else + Active + @endif + | +
| Belum ada data disposal. | |||