budgetChecker->getBudgetStatus($user); $rateLimitStatus = $this->rateLimitChecker->getRateLimitStatus($user); return view('admin.user-budget.show', compact('user', 'budgetStatus', 'rateLimitStatus')); } /** * Update budget limits for a user */ public function updateBudget(Request $request, User $user) { $validated = $request->validate([ 'monthly_limit' => 'required|numeric|min:0', 'daily_limit' => 'nullable|numeric|min:0', 'alert_threshold_percentage' => 'required|integer|min:0|max:100', ]); $budget = $user->budget ?? new UserBudget(['user_id' => $user->id]); $budget->fill($validated); $budget->save(); return back()->with('success', 'Budget limits updated successfully!'); } /** * Update rate limits for a user */ public function updateRateLimit(Request $request, User $user) { $validated = $request->validate([ 'requests_per_minute' => 'required|integer|min:0', 'requests_per_hour' => 'required|integer|min:0', 'requests_per_day' => 'required|integer|min:0', ]); $rateLimit = $user->rateLimit ?? new \App\Models\RateLimit(['user_id' => $user->id]); $rateLimit->fill($validated); $rateLimit->save(); return back()->with('success', 'Rate limits updated successfully!'); } /** * Reset rate limit for a user */ public function resetRateLimit(User $user) { $this->rateLimitChecker->resetRateLimit($user); return back()->with('success', 'Rate limit reset successfully!'); } /** * Reset budget for a user (admin action) */ public function resetBudget(User $user) { $budget = $user->budget; if ($budget) { $budget->current_month_spending = 0.0; $budget->current_day_spending = 0.0; $budget->is_budget_exceeded = false; $budget->last_alert_sent_at = null; $budget->month_started_at = now()->startOfMonth(); $budget->day_started_at = now()->startOfDay(); $budget->save(); } return back()->with('success', 'Budget reset successfully!'); } }