tracker = User::default()->tracker; } public function current(): JsonResponse { return response()->json([ 'current_price' => AssetPrice::current($this->tracker?->asset_id), ]); } public function update(Request $request) { $validated = $request->validate([ 'date' => 'required|date|before_or_equal:today', 'price' => 'required|numeric|min:0.0001', ]); if (! $this->tracker?->asset_id) { return back()->withErrors(['asset' => 'Please set an asset first.']); } AssetPrice::updatePrice($this->tracker->asset_id, $validated['date'], $validated['price']); if (! $this->tracker->price_tracking_enabled) { $this->tracker->update(['price_tracking_enabled' => true]); } return back()->with('success', 'Asset price updated successfully!'); } public function history(Request $request): JsonResponse { $limit = min(max(1, $request->integer('limit', 30)), 365); return response()->json(AssetPrice::history($this->tracker?->asset_id, $limit)); } public function forDate(Request $request, string $date): JsonResponse { validator(['date' => $date], ['date' => 'required|date_format:Y-m-d'])->validate(); return response()->json([ 'date' => $date, 'price' => AssetPrice::forDate($date, $this->tracker?->asset_id), ]); } }