from("transaksi_parkir as tp") ->leftJoin("pegawai as p", "p.nomer", "=", "tp.adm"); // Tanggal wajib $query->whereBetween("waktu_keluar", [$request->start_date . " 00:00:00", $request->end_date . " 23:59:59"]); // Status if ($request->filled("status_transaksi")) { $query->where("status_transaksi", $request->status_transaksi); } else { // Default hanya -1 dan -2 $query->whereIn("status_transaksi", [0, -1, -2]); } // Alasan tidak boleh NULL if ($request->filter_alasan == "1") { $query->whereNotNull("alasan"); } $totalTransaksi = (clone $query)->count(); $totalBayar = (clone $query)->sum("bayar_keluar"); $data = $query ->select([ "tp.id", "no_pol", "waktu_masuk", "waktu_keluar", "status_transaksi", "bayar_keluar", "alasan", "cara_bayar", "p.nama as operator", ]) ->orderByDesc("waktu_keluar") ->get(); return response()->json([ "response" => true, "data" => $data, "summary" => [ "total_transaksi" => $totalTransaksi, "total_bayar" => $totalBayar, ], ]); } }