has('filter') && !empty($request->get('filter'))) { $filter = strtolower(trim($request->get('filter'))); // Log filter for debugging Log::info('RequestAssignmentController filter applied', ['filter' => $filter, 'original' => $request->get('filter')]); switch ($filter) { case 'non-business': $baseQuery->where(function ($q) { $q->where(function ($q2) { $q2->where(function ($q3) { $q3->whereRaw("LOWER(TRIM(function_type)) NOT LIKE ?", ['%fungsi usaha%']) ->whereRaw("LOWER(TRIM(function_type)) NOT LIKE ?", ['%sebagai tempat usaha%']); }) ->orWhereNull('function_type'); }) ->whereIn("status", PbgTaskStatus::getNonVerified()); }); break; case 'business': $baseQuery->where(function ($q) { $q->where(function ($q2) { $q2->whereRaw("LOWER(TRIM(function_type)) LIKE ?", ['%fungsi usaha%']) ->orWhereRaw("LOWER(TRIM(function_type)) LIKE ?", ['%sebagai tempat usaha%']); }) ->whereIn("status", PbgTaskStatus::getNonVerified()); }); break; case 'verified': $baseQuery->whereIn("status", PbgTaskStatus::getVerified()); break; case 'non-verified': $baseQuery->whereIn("status", PbgTaskStatus::getNonVerified()); break; case 'potention': $baseQuery->whereIn("status", PbgTaskStatus::getPotention()); break; case 'issuance-realization-pbg': $baseQuery->whereIn("status", PbgTaskStatus::getIssuanceRealizationPbg()); break; case 'process-in-technical-office': $baseQuery->whereIn("status", PbgTaskStatus::getProcessInTechnicalOffice()); break; case 'waiting-click-dpmptsp': $baseQuery->whereIn("status", PbgTaskStatus::getWaitingClickDpmptsp()); break; default: // Log unrecognized filter for debugging Log::warning('Unrecognized filter value', ['filter' => $filter, 'original' => $request->get('filter')]); break; } } // Apply search to base query if ($request->has('search') && !empty($request->get("search"))) { $search = $request->get('search'); // Search in pbg_task columns $baseQuery->where(function ($q) use ($search) { $q->where('name', 'LIKE', "%$search%") ->orWhere('registration_number', 'LIKE', "%$search%") ->orWhere('owner_name', 'LIKE', "%$search%") ->orWhere('address', 'LIKE', "%$search%"); }); // If search term exists, also find UUIDs from name_building search $namesBuildingUuids = DB::table('pbg_task_details') ->where('name_building', 'LIKE', "%$search%") ->pluck('pbg_task_uid') ->toArray(); // If we found matching name_building records, include them in the search if (!empty($namesBuildingUuids)) { $baseQuery->orWhereIn('uuid', $namesBuildingUuids); } } // Get accurate count from base query (without relationships) $accurateCount = $baseQuery->count(); // Clone the base query for data fetching with relationships $dataQuery = clone $baseQuery; $dataQuery->with([ 'attachments' => function ($q) { $q->whereIn('pbg_type', ['berita_acara', 'bukti_bayar']); }, 'pbg_task_retributions' ])->orderBy('id', 'desc'); // Log final query count for debugging Log::info('RequestAssignmentController final result', [ 'filter' => $request->get('filter'), 'search' => $request->get('search'), 'accurate_count' => $accurateCount, 'request_url' => $request->fullUrl(), 'all_params' => $request->all() ]); // Additional logging for potention filter if ($request->get('filter') === 'potention') { $rejectedCount = PbgTask::whereIn('status', PbgTaskStatus::getRejected())->count(); Log::info('Potention filter details', [ 'potention_count' => $accurateCount, 'rejected_count' => $rejectedCount, 'total_all_records' => PbgTask::count(), 'note' => 'Potention filter excludes rejected data' ]); } // Also log to console for immediate debugging if ($request->has('filter')) { error_log('RequestAssignment Filter Debug: ' . $request->get('filter') . ' -> Count: ' . $accurateCount); } // Get paginated results with relationships $paginatedResults = $dataQuery->paginate(); // Append query parameters to pagination $paginatedResults->appends($request->query()); return RequestAssignmentResouce::collection($paginatedResults); } public function report_payment_recaps(Request $request) { try { // Query dengan group by kecamatan dan sum nilai_retribusi_keseluruhan_simbg $query = PbgTaskGoogleSheet::select( 'kecamatan', DB::raw('SUM(nilai_retribusi_keseluruhan_simbg) as total') ) ->groupBy('kecamatan') ->paginate(10); // Return hasil dalam JSON format return response()->json([ 'success' => true, 'data' => $query ]); } catch (Exception $e) { Log::error($e->getMessage()); return response()->json(['message' => 'Terjadi kesalahan: ' . $e->getMessage()], 500); } } public function export_excel_district_payment_recaps(){ return Excel::download(new DistrictPaymentRecapExport, 'laporan-rekap-data-pembayaran.xlsx'); } public function export_pdf_district_payment_recaps(){ $data = PbgTaskGoogleSheet::select( 'kecamatan', DB::raw('SUM(nilai_retribusi_keseluruhan_simbg) as total') ) ->groupBy('kecamatan')->get(); $pdf = Pdf::loadView('exports.district_payment_report', compact('data')); return $pdf->download('laporan-rekap-data-pembayaran.pdf'); } public function report_pbg_ptsp() { try { // Query dengan group by status dan count total per status $query = PbgTask::select( 'status', 'status_name', DB::raw('COUNT(*) as total') ) ->groupBy('status', 'status_name') ->paginate(10); // Return hasil dalam JSON format return response()->json([ 'success' => true, 'data' => $query ]); } catch (Exception $e) { Log::error($e->getMessage()); return response()->json(['message' => 'Terjadi kesalahan: ' . $e->getMessage()], 500); } } /** * Store a newly created resource in storage. */ public function store(Request $request) { // } /** * Display the specified resource. */ public function show(string $id) { // } /** * Update the specified resource in storage. */ public function update(Request $request, string $id) { // } /** * Remove the specified resource from storage. */ public function destroy(string $id) { // } }