@extends('layouts.admin') @section('title', 'Admin Dashboard – Beltway Office Park') @section('breadcrumb', 'Dashboard') @section('content') @php $hour = date('H'); $greeting = 'Selamat Pagi'; if ($hour >= 12 && $hour < 15) { $greeting = 'Selamat Siang'; } elseif ($hour >= 15 && $hour < 18) { $greeting = 'Selamat Sore'; } elseif ($hour >= 18 || $hour < 5) { $greeting = 'Selamat Malam'; } $adminName = Auth::user()->name ?? 'Admin Kawasan'; $todayDate = \Carbon\Carbon::now()->translatedFormat('l, d F Y'); @endphp
{{ $todayDate }}

{{ $greeting }}, {{ $adminName }}

Berikut ringkasan operasional hari ini: {{ $approachingEndCount }} Kontrak akan habis sewa, dan {{ count($buildingStats) }} Gedung terdaftar aktif.

{{ $activeTenantsCount }}

Tenant Aktif

PERSENTASE OKUPANSI {{ $occupancyRate }}%

Mengelola {{ $totalUnits }} total unit ruangan sewa

{{ $approachingEndCount }}

Kontrak Mendekati Habis

TENGGAT WAKTU 90 HARI

Segera hubungi tenant bersangkutan untuk negosiasi pembaharuan masa sewa unit.

Okupansi & Visual Heatmap Gedung

Persentase ruang disewa per gedung perkantoran

Detail Map
@foreach($buildingStats as $stats) @php $hColor = 'bg-rose-500'; $hText = 'Sangat Kosong'; if ($stats['occupancy_rate'] >= 80) { $hColor = 'bg-emerald-500 animate-pulse'; $hText = 'Hampir Penuh'; } elseif ($stats['occupancy_rate'] >= 50) { $hColor = 'bg-teal-500'; $hText = 'Okupansi Sedang'; } elseif ($stats['occupancy_rate'] >= 30) { $hColor = 'bg-amber-500'; $hText = 'Okupansi Rendah'; } @endphp
{{ $stats['name'] }}
{{ $stats['occupancy_rate'] }}%
{{ $stats['occupied_units'] }} Tenant Aktif {{ $stats['vacant_units'] }} Unit Kosong
@endforeach

Analisis Pertumbuhan Tenant

Statistik pertumbuhan tenant

Tenant Growth

Recent Activities

Aktivitas & tenggat waktu terdekat

@forelse($timelineEvents as $event)

{{ $event['title'] }}

{{ $event['badge'] }}

{{ $event['desc'] }}

{{ $event['time'] }}
@empty
Belum ada aktivitas baru.
@endforelse

Quick Insights

Analisis instan kondisi real-estate

@php $highestOccupancyBuilding = collect($buildingStats)->sortByDesc('occupancy_rate')->first(); $lowestOccupancyBuilding = collect($buildingStats)->sortBy('occupancy_rate')->first(); @endphp

Okupansi Tertinggi

{{ $highestOccupancyBuilding['name'] }} ({{ $highestOccupancyBuilding['occupancy_rate'] }}%)

Okupansi Terendah

{{ $lowestOccupancyBuilding['name'] }} ({{ $lowestOccupancyBuilding['occupancy_rate'] }}%)

Sistem Normal Insight: {{ count($buildingStats) }} Gedung Aktif
{{-- ── LK3 & Rekapitulasi Dashboard Charts (sumber data realtime bulan terbaru) ── --}} @if($lk3TotalRecords > 0 || $rekTotalRecords > 0)
{{-- Bar Chart 1: LK3 per Jenis Pekerjaan --}}

LK3 – Jenis Pekerjaan

Bulan {{ $lk3MonthLabel ?? 'Terbaru' }}

Lihat Detail
@if($lk3ByJenisPekerjaan->count() > 0) @else
Belum ada data LK3
@endif
{{-- Bar Chart 2: LK3 per Departemen Pelapor --}}

Pelapor LK3 – Departemen

Bulan {{ $lk3MonthLabel ?? 'Terbaru' }}

Lihat Detail
@if($lk3ByDept->count() > 0) @else
Belum ada data pelapor
@endif
{{-- Bar Chart 3: Rekapitulasi Request per Jenis Pekerjaan --}}

Rekapitulasi Request – Jenis Pekerjaan

Bulan {{ $rekMonthLabel ?? 'Terbaru' }}

Lihat Detail
@if($rekByJenisPekerjaan->count() > 0) @else
Belum ada data request
@endif
@endif
@endsection @section('scripts') {{-- ── LK3 & Rekapitulasi Bar Charts Script ─────────────────────────────────── --}} @if($lk3TotalRecords > 0 || $rekTotalRecords > 0) @endif @endsection