From 5751e2cd245968d36cfe650df6d82d90867cd356 Mon Sep 17 00:00:00 2001 From: adonis Date: Wed, 22 Jul 2026 17:37:33 +0330 Subject: [PATCH] added last seen 2 --- .../Controllers/Admin/CustomerController.php | 23 +++++++++++++++++++ routes/admin.php | 1 + 2 files changed, 24 insertions(+) diff --git a/app/Http/Controllers/Admin/CustomerController.php b/app/Http/Controllers/Admin/CustomerController.php index e205576..6aed2c6 100644 --- a/app/Http/Controllers/Admin/CustomerController.php +++ b/app/Http/Controllers/Admin/CustomerController.php @@ -14,6 +14,7 @@ use App\Models\Setting; use App\Services\AssetSummaryService; use App\Services\BalanceReportService; use App\Services\ConfigService; +use App\Services\CustomerPresenceService; use App\Services\ReferralGiftService; use App\Services\WalletBalanceService; use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException; @@ -54,6 +55,28 @@ class CustomerController extends SuperController return response()->json($users); } + + /** + * مشتریان با SSE فعال در بازهٔ آنلاین بودن (last_seen_at تازه). + */ + public function onlineList() + { + $threshold = now()->subSeconds(CustomerPresenceService::ONLINE_THRESHOLD_SECONDS); + + $rows = Customer::query() + ->where('is_archive', false) + ->whereNotNull('last_seen_at') + ->where('last_seen_at', '>=', $threshold) + ->orderByDesc('last_seen_at') + ->get(['id', 'name', 'mobile', 'last_seen_at', 'active', 'trade_active', 'type']); + + return response()->json([ + 'count' => $rows->count(), + 'online_within_seconds' => CustomerPresenceService::ONLINE_THRESHOLD_SECONDS, + 'rows' => $rows, + ]); + } + public function updateAdmin(Request $request , $id) { $data = $request->all(); diff --git a/routes/admin.php b/routes/admin.php index ceb652a..1f1ec03 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -91,6 +91,7 @@ Route::middleware('auth:user')->group(function (){ //--------customer Route::post('/customer/table',[CustomerController::class,'tableWallets']); + Route::get('/customer/online',[CustomerController::class,'onlineList']); Route::get('/customer/{id}/assets',[CustomerController::class,'assetsSummary']); Route::get('/customer/active/{id}',[CustomerController::class,'active']); Route::get('/customer/archive/{id}',[CustomerController::class,'archive']);