diff --git a/app/Http/Controllers/Api/RequestAssignmentController.php b/app/Http/Controllers/Api/RequestAssignmentController.php index 071de99..676b6f4 100644 --- a/app/Http/Controllers/Api/RequestAssignmentController.php +++ b/app/Http/Controllers/Api/RequestAssignmentController.php @@ -56,7 +56,8 @@ class RequestAssignmentController extends Controller 'attachments' => function ($q) { $q->whereIn('pbg_type', ['berita_acara', 'bukti_bayar']); }, - 'pbg_task_retributions' + 'pbg_task_retributions', + 'pbg_task_detail' ])->orderBy('id', 'desc'); // Log final query count for debugging diff --git a/app/Http/Controllers/QuickSearchController.php b/app/Http/Controllers/QuickSearchController.php index 876a896..7fafc97 100644 --- a/app/Http/Controllers/QuickSearchController.php +++ b/app/Http/Controllers/QuickSearchController.php @@ -9,6 +9,7 @@ use App\Models\PbgTask; use App\Models\TaskAssignment; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\DB; class QuickSearchController extends Controller { @@ -25,9 +26,13 @@ class QuickSearchController extends Controller public function quick_search_datatable(Request $request) { try { - $query = PbgTask::leftJoin('pbg_task_details', 'pbg_task.uuid', '=', 'pbg_task_details.pbg_task_uid') - ->select('pbg_task.*') - ->orderBy('pbg_task.id', 'desc'); + // Gunakan subquery untuk performa yang lebih baik dan menghindari duplikasi + $query = PbgTask::select([ + 'pbg_task.*', + DB::raw('(SELECT name_building FROM pbg_task_details WHERE pbg_task_details.pbg_task_uid = pbg_task.uuid LIMIT 1) as name_building'), + DB::raw('(SELECT nilai_retribusi_bangunan FROM pbg_task_retributions WHERE pbg_task_retributions.pbg_task_uid = pbg_task.uuid LIMIT 1) as nilai_retribusi_bangunan') + ]) + ->orderBy('pbg_task.id', 'desc'); if ($request->filled('search')) { $search = trim($request->get('search')); @@ -36,7 +41,12 @@ class QuickSearchController extends Controller ->orWhere('pbg_task.name', 'LIKE', "%$search%") ->orWhere('pbg_task.owner_name', 'LIKE', "%$search%") ->orWhere('pbg_task.address', 'LIKE', "%$search%") - ->orWhere('pbg_task_details.name_building', 'LIKE', "%$search%"); + ->orWhereExists(function ($subQuery) use ($search) { + $subQuery->select(DB::raw(1)) + ->from('pbg_task_details') + ->whereColumn('pbg_task_details.pbg_task_uid', 'pbg_task.uuid') + ->where('pbg_task_details.name_building', 'LIKE', "%$search%"); + }); }); } diff --git a/app/Http/Resources/RequestAssignmentResouce.php b/app/Http/Resources/RequestAssignmentResouce.php index 346c961..5e1f3fa 100644 --- a/app/Http/Resources/RequestAssignmentResouce.php +++ b/app/Http/Resources/RequestAssignmentResouce.php @@ -43,6 +43,7 @@ class RequestAssignmentResouce extends JsonResource ->sortByDesc('created_at') ->first(), 'pbg_task_retributions' => $this->pbg_task_retributions, + 'pbg_task_detail' => $this->pbg_task_detail, ]; } } diff --git a/resources/js/pbg-task/index.js b/resources/js/pbg-task/index.js index 1c9e4a8..d341eb8 100644 --- a/resources/js/pbg-task/index.js +++ b/resources/js/pbg-task/index.js @@ -113,6 +113,7 @@ class PbgTasks { { name: "Alamat" }, "Status", "Jenis Fungsi", + { name: "Nama Bangunan" }, "Jenis Konsultasi", { name: "Tanggal Jatuh Tempo" }, { @@ -221,6 +222,9 @@ class PbgTasks { item.address, item.status_name, item.function_type, + item.pbg_task_detail + ? item.pbg_task_detail.name_building + : "-", item.consultation_type, item.due_date, item.pbg_task_retributions diff --git a/resources/js/quick-search/result.js b/resources/js/quick-search/result.js index 8c291bf..a287bcd 100644 --- a/resources/js/quick-search/result.js +++ b/resources/js/quick-search/result.js @@ -1,4 +1,5 @@ import { Grid, html } from "gridjs"; +import { addThousandSeparators } from "../global-config"; class QuickSearchResult { constructor() { @@ -62,15 +63,18 @@ class QuickSearchResult { const config = { columns: [ "ID", - { name: "Name" }, - { name: "Condition" }, - "Registration Number", - "Document Number", - { name: "Address" }, + { name: "Nama Pemohon" }, + { name: "Nama Pemilik" }, + { name: "Kondisi" }, + "Nomor Registrasi", + "Nomor Dokumen", + { name: "Alamat" }, "Status", - "Function Type", - "Consultation Type", - { name: "Due Date" }, + "Jenis Fungsi", + { name: "Nama Bangunan" }, + "Jenis Konsultasi", + { name: "Tanggal Jatuh Tempo" }, + { name: "Retribusi" }, { name: "Action", formatter: (cell) => { @@ -101,14 +105,17 @@ class QuickSearchResult { data.data.map((item) => [ item.id, item.name, + item.owner_name, item.condition, item.registration_number, item.document_number, item.address, item.status_name, item.function_type, + item.name_building, item.consultation_type, item.due_date, + addThousandSeparators(item.nilai_retribusi_bangunan), item, ]), total: (data) => data.total, diff --git a/resources/views/quick-search/detail.blade.php b/resources/views/quick-search/detail.blade.php index 177f1f2..a5d9cdf 100644 --- a/resources/views/quick-search/detail.blade.php +++ b/resources/views/quick-search/detail.blade.php @@ -124,7 +124,8 @@
Nilai Retribusi Bangunan
-
{{$data->pbg_task_retributions->nilai_retribusi_bangunan ?? '-'}}
+
{{ number_format($data->pbg_task_retributions->nilai_retribusi_bangunan, 2, ',', '.') }}
+
Nilai Prasarana
{{$data->pbg_task_retributions->nilai_prasarana ?? '-'}}
@@ -136,7 +137,7 @@
{{$data->pbg_task_retributions->underpayment ?? '-'}}
SKRD Amount
-
{{$data->pbg_task_retributions->skrd_amount ?? '-'}}
+
{{ number_format($data->pbg_task_retributions->skrd_amount, 2, ',', '.') }}