user(); $categories = Category::query() ->where('user_id', $user->id) ->orderBy('name') ->get(['id', 'name', 'icon', 'color']); $accounts = Account::query() ->where('user_id', $user->id) ->with('bank:id,name,logo') ->orderBy('name') ->get(['id', 'name', 'name_iv', 'bank_id', 'type', 'currency_code']); $banks = Bank::query() ->where(function ($q) use ($user) { $q->whereNull('user_id') ->orWhere('user_id', $user->id); }) ->orderBy('name') ->get(['id', 'name', 'logo']); return Inertia::render('transactions/index', [ 'categories' => $categories, 'accounts' => $accounts, 'banks' => $banks, ]); } public function update(UpdateTransactionRequest $request, Transaction $transaction): JsonResponse { $this->authorize('update', $transaction); $transaction->update($request->validated()); return response()->json([ 'data' => $transaction->fresh(), ]); } public function destroy(Request $request, Transaction $transaction): JsonResponse { $this->authorize('delete', $transaction); $transaction->delete(); return response()->json([ 'message' => 'Transaction deleted successfully', ]); } public function bulkUpdate(BulkUpdateTransactionsRequest $request): JsonResponse { $user = $request->user(); $transactionIds = $request->input('transaction_ids'); $transactions = Transaction::query() ->whereIn('id', $transactionIds) ->where('user_id', $user->id) ->get(); if ($transactions->count() !== count($transactionIds)) { return response()->json([ 'message' => 'Some transactions were not found or do not belong to you.', ], 403); } $updateData = []; if ($request->has('category_id')) { $updateData['category_id'] = $request->input('category_id'); } if ($request->has('notes')) { $updateData['notes'] = $request->input('notes'); } if ($request->has('notes_iv')) { $updateData['notes_iv'] = $request->input('notes_iv'); } if (empty($updateData)) { return response()->json([ 'message' => 'No update data provided.', ], 400); } Transaction::query() ->whereIn('id', $transactionIds) ->where('user_id', $user->id) ->update($updateData); return response()->json([ 'message' => 'Transactions updated successfully', 'count' => count($transactionIds), ]); } }