function ($q) { $q->whereIn('pbg_type', ['berita_acara', 'bukti_bayar']); }, 'googleSheet' ])->orderBy('id', 'desc'); if ($request->has('filter') && !empty($request->get('filter'))) { $filter = strtolower($request->get('filter')); switch ($filter) { case 'non-business': $query->whereRaw("LOWER(function_type) != ?", ['sebagai tempat usaha'])->orWhereNull('function_type'); break; case 'business': $query->whereRaw("LOWER(function_type) = ?", ['sebagai tempat usaha']); break; case 'verified': $query->whereHas('googleSheet', function ($q) { $q->whereRaw("LOWER(status_verifikasi) = ?", ['selesai verifikasi']); }); break; case 'non-verified': $query->where(function ($q) { $q->whereDoesntHave('googleSheet') ->orWhereHas('googleSheet', function ($q2) { $q2->whereRaw("LOWER(status_verifikasi) != ?", ['selesai verifikasi'])->orWhereNull('status_verifikasi'); }); }); break; } } if ($request->has('search') && !empty($request->get("search"))) { $search = $request->get('search'); $query->where(function ($q) use ($search) { $q->where('name', 'LIKE', "%$search%") ->orWhere('registration_number', 'LIKE', "%$search%") ->orWhere('document_number', 'LIKE', "%$search%"); }); } return RequestAssignmentResouce::collection($query->paginate()); } 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) { // } }