get(); return response()->json($assets); } public function current(): JsonResponse { $user = Auth::user(); $asset = $user->asset; return response()->json([ 'asset' => $asset, ]); } public function setCurrent(Request $request): JsonResponse { $validated = $request->validate([ 'symbol' => 'required|string|max:10', 'full_name' => 'nullable|string|max:255', ]); $asset = Asset::findOrCreateBySymbol( $validated['symbol'], $validated['full_name'] ?? null ); $user = Auth::user(); $user->update(['asset_id' => $asset->id]); return response()->json([ 'success' => true, 'message' => 'Asset set successfully!', 'asset' => $asset, ]); } public function store(Request $request): JsonResponse { $validated = $request->validate([ 'symbol' => 'required|string|max:10|unique:assets,symbol', 'full_name' => 'nullable|string|max:255', ]); $asset = Asset::create([ 'symbol' => strtoupper($validated['symbol']), 'full_name' => $validated['full_name'], ]); return response()->json([ 'success' => true, 'message' => 'Asset created successfully!', 'asset' => $asset, ], 201); } public function show(Asset $asset): JsonResponse { $asset->load('assetPrices'); $currentPrice = $asset->currentPrice(); return response()->json([ 'asset' => $asset, 'current_price' => $currentPrice, ]); } public function search(Request $request): JsonResponse { $query = $request->get('q'); if (!$query) { return response()->json([]); } $assets = Asset::where('symbol', 'like', "%{$query}%") ->orWhere('full_name', 'like', "%{$query}%") ->orderBy('symbol') ->limit(10) ->get(); return response()->json($assets); } }