@extends('layouts.app', ['class' => 'g-sidenav-show bg-gray-100']) {{-- section content --}} @section('content') @include('layouts.navbars.auth.topnav', ['title' => '']) @if (($dmenu ?? '') == 'trdper' || ($url_menu ?? '') == 'daftar-periodic-hrd' || request()->is('daftar-periodic-hrd/show/*')) @php $isPeriodicEditMode = request()->is('daftar-periodic-hrd/edit/*'); @endphp @php $selectedYear = (int) $idencrypt; $headerRow = \Illuminate\Support\Facades\DB::table('tr_periodic_header') ->where('tahun', $selectedYear) ->where('is_active', '1') ->first(); $keterangan = $headerRow->keterangan ?? 'Daftar Periodic HRD'; $headerId = $headerRow->id ?? null; $detailRows = collect(); if ($headerId) { $detailRows = \Illuminate\Support\Facades\DB::table('tr_periodic_detail') ->leftJoin('ms_periodic', 'tr_periodic_detail.periodic_id', '=', 'ms_periodic.id') ->leftJoin('ms_area', 'tr_periodic_detail.area_id', '=', 'ms_area.id') ->leftJoin('users', 'tr_periodic_detail.worker_id', '=', 'users.id') ->select( 'tr_periodic_detail.id', 'tr_periodic_detail.periodic_id', 'tr_periodic_detail.area_id', 'tr_periodic_detail.worker_id', 'tr_periodic_detail.periode', 'tr_periodic_detail.cycle', 'tr_periodic_detail.start_plan_date', 'ms_periodic.job_description', 'ms_area.nama_area as area_name', \Illuminate\Support\Facades\DB::raw("CONCAT(users.firstname, ' ', COALESCE(users.lastname, '')) as worker_name") ) ->where('tr_periodic_detail.header_id', $headerId) ->where('tr_periodic_detail.is_active', '1') ->orderBy('tr_periodic_detail.id') ->get(); } $periodics = \Illuminate\Support\Facades\DB::table('ms_periodic') ->select('ms_periodic.id', 'ms_periodic.job_description') ->where('ms_periodic.is_active', '1') ->orderBy('ms_periodic.job_description') ->get(); $areas = \Illuminate\Support\Facades\DB::table('ms_area') ->orderBy('nama_area') ->get(); // Build workers dropdown from all active roles with ptg prefix $petugasRoles = \Illuminate\Support\Facades\DB::table('sys_roles') ->where('isactive', '1') ->where('idroles', 'like', 'ptg%') ->orderBy('idroles') ->get(['idroles', 'name']); $activeUsers = \Illuminate\Support\Facades\DB::table('users') ->where('isactive', '1') ->select('id', 'idroles') ->orderBy('id') ->get(); $workers = collect([]); foreach ($petugasRoles as $role) { $roleCode = strtolower(trim((string) $role->idroles)); $matchedUser = $activeUsers->first(function ($user) use ($roleCode) { $userRoles = array_map('trim', explode(',', strtolower((string) ($user->idroles ?? '')))); return in_array($roleCode, $userRoles, true); }); if ($matchedUser) { $workers->push((object) [ 'id' => $matchedUser->id, 'label' => !empty($role->name) ? $role->name : strtoupper(substr($roleCode, 3)), ]); } } $dateRows = \Illuminate\Support\Facades\DB::table('tr_periodic_items') ->join('tr_periodic_detail', 'tr_periodic_items.detail_id', '=', 'tr_periodic_detail.id') ->select('tr_periodic_detail.id as detail_id', 'tr_periodic_items.planned_date', 'tr_periodic_items.realization_date') ->where('tr_periodic_detail.header_id', $headerId) ->where('tr_periodic_detail.is_active', '1') ->where('tr_periodic_items.is_active', '1') ->whereYear('tr_periodic_items.planned_date', $selectedYear) ->orderBy('tr_periodic_items.planned_date') ->get(); $dateMap = []; foreach ($dateRows as $row) { $realizationDates = []; if (!empty($row->realization_date)) { $decoded = json_decode($row->realization_date, true); if (is_array($decoded)) { $realizationDates = $decoded; } else { $realizationDates = [$row->realization_date]; } } $dateMap[$row->detail_id][] = [ 'plan_date' => $row->planned_date, 'realization_date' => $realizationDates, ]; } @endphp
| Action | No | Area | Pekerjaan | Periode | Cycle | Start Rencana | Rencana | Realisasi | Petugas |
|---|---|---|---|---|---|---|---|---|---|
| {{ $loop->iteration }} | @php $existingDates = \Illuminate\Support\Facades\DB::table('tr_periodic_items') ->where('detail_id', $detail->id) ->orderBy('planned_date') ->pluck('planned_date') ->toArray(); @endphp | ||||||||
| Belum ada jadwal kerja periodic. | |||||||||
Tracking Status Pekerjaan
| Tahap | Status | Tanggal | Catatan |
|---|---|---|---|
| {{ $trackingRow['tahap'] }} | {{ $trackingRow['status'] }} | {{ $trackingRow['tanggal'] }} | {{ $trackingRow['catatan'] ?: '-' }} |
Estimasi HRD
| Tahap | Estimasi |
|---|---|
| Pengadaan | {{ $estimatedPengadaan }} |
| Pengerjaan | {{ $estimatedPengerjaan }} |