user() ->transactions() ->with('labels:id,name,color'); if ($request->query('encrypted') === 'true') { $query->where(fn ($q) => $q->whereNotNull('description_iv')->orWhereNotNull('notes_iv')); } elseif ($request->query('encrypted') === 'false') { $query->whereNull('description_iv')->whereNull('notes_iv'); } $transactions = $query->simplePaginate(100); return response()->json($transactions); } /** * Bulk update transactions (used for decryption migration). */ public function bulkUpdate(BulkUpdateTransactionRequest $request): JsonResponse { $validated = $request->validated(); $transactionIds = collect($validated['transactions'])->pluck('id'); $userTransactionIds = $request->user() ->transactions() ->whereIn('id', $transactionIds) ->pluck('id'); if ($userTransactionIds->count() !== $transactionIds->count()) { abort(403, 'Some transactions do not belong to the authenticated user.'); } foreach ($validated['transactions'] as $data) { $updateData = collect($data)->except('id')->toArray(); Transaction::query() ->where('id', $data['id']) ->toBase() ->update($updateData); } return response()->json(['message' => 'Transactions updated successfully.']); } }