@extends('layouts.admin.master') @section('content')

Workforce & Presensi

Smart City membaca workforce operasional tanpa mengganti engine e-Presensi yang sudah berjalan.

@foreach ($quickLinks as $link) @if ($link['route']) {{ $link['label'] }} @endif @endforeach
@if (session('success'))
{{ session('success') }}
@endif @if (session('error'))
{{ session('error') }}
@endif @if ($errors->any())
Ada input yang perlu diperbaiki.
@endif
@foreach ($summaryCards as $card)
{{ $card['title'] }}
{{ number_format($card['value']) }}
{{ $card['description'] }}
@endforeach
{{ $editingMapping ? 'Edit Mapping Workforce' : 'Tambah Mapping Workforce' }}

Hubungkan user Smart City ke organisasi, petugas, dan identifier e-Presensi yang masih dipakai.

@csrf @if ($editingMapping) @method('PUT') @endif
is_primary ?? true))>
is_active ?? true))>
@if ($editingMapping) Batal Edit @endif
Catatan Integrasi

Presensi tetap berjalan di aplikasi `tomohonhebat_presensi`, Smart City hanya menarik mapping dan snapshot yang dibutuhkan.

Bridge e-Presensi
{{ config('services.presensi_bridge.enabled') ? 'Aktif' : 'Belum aktif' }}
{{ config('services.presensi_bridge.base_url') }}
Prinsip operasional
Single source of truth tetap di e-Presensi
Smart City memakai mapping ini untuk assignment lapangan, snapshot kehadiran, dan command center.
Template Shift Lapangan Aktif
@forelse ($shiftTemplates as $shiftTemplate)
{{ $shiftTemplate->name }}
{{ $shiftTemplate->organization?->short_name ?: $shiftTemplate->organization?->name ?: 'Tanpa OPD' }}
{{ \Illuminate\Support\Str::of($shiftTemplate->start_time)->substr(0, 5) }} - {{ \Illuminate\Support\Str::of($shiftTemplate->end_time)->substr(0, 5) }}
@empty
Belum ada template shift yang aktif. Tabelnya sudah siap dan bisa diisi bertahap pada putaran berikut.
@endforelse
Daftar Mapping Workforce

Pemetaan user, organisasi, dan identitas operasional lintas modul.

@forelse ($mappings as $mapping) @php $lifecycleBadgeClass = match ($mapping->lifecycle_status) { 'aktif' => 'bg-success-subtle text-success', 'terjadwal' => 'bg-warning-subtle text-warning', 'berakhir' => 'bg-dark-subtle text-dark', default => 'bg-secondary-subtle text-secondary', }; $editQuery = array_merge(request()->query(), ['edit' => $mapping->id]); @endphp @empty @endforelse
User Organisasi Role Legacy Petugas Status Aksi
{{ $mapping->user?->name ?: 'User tidak ditemukan' }}
{{ $mapping->user?->email ?: '-' }}
{{ $mapping->organization?->short_name ?: $mapping->organization?->name ?: 'Organisasi tidak ditemukan' }}
{{ $mapping->organization?->code ?: '-' }}
{{ $mapping->role_label }}
Pegawai: {{ $mapping->legacy_pegawai_id ?: '-' }}
Unit: {{ $mapping->legacy_unit_kerja_id ?: '-' }}
Mulai: {{ optional($mapping->started_at)->format('d M Y') ?: 'Langsung aktif' }} | Akhir: {{ optional($mapping->ended_at)->format('d M Y') ?: '-' }}
{{ $mapping->petugas?->penduduk?->nama ?: 'Belum dihubungkan' }} {{ ucfirst($mapping->lifecycle_status) }} @if ($mapping->is_primary) Utama @endif
Edit
@csrf @method('DELETE')
Belum ada mapping workforce yang tersimpan.
{{ $mappings->links() }}
@endsection @section('stylesheet') @endsection