Jelajahi Sumber

bloco log de acessos na dashboard

Gustavo Zanatta 18 jam lalu
induk
melakukan
61b7b19b31

+ 1 - 1
app/Http/Controllers/UserAccessLogController.php

@@ -13,7 +13,7 @@ class UserAccessLogController extends Controller
 
     public function index(Request $request): JsonResponse
     {
-        $filters = $request->only(['type', 'date_from', 'date_to']);
+        $filters = $request->only(['type', 'date_from', 'date_to', 'last_per_user']);
         $perPage = min((int) $request->get('per_page', 10), 100);
         $paginator = $this->service->getAllPaginated($filters, $perPage);
 

+ 2 - 0
app/Services/DashboardService.php

@@ -6,6 +6,7 @@ use App\Enums\UserStatusEnum;
 use App\Enums\UserTypeEnum;
 use App\Models\PartnerAgreement;
 use App\Models\User;
+use App\Models\UserAccessLog;
 use App\Models\Appointment;
 use Illuminate\Support\Facades\Auth;
 
@@ -22,6 +23,7 @@ class DashboardService
         ->count(),
       'novos_mes'           => PartnerAgreement::whereMonth('created_at', now()->month)->whereYear('created_at', now()->year)->count(),
       'associados_pendentes' => User::where('type', UserTypeEnum::ASSOCIADO)->where('status', UserStatusEnum::PENDING)->count(),
+      'ultimos_acessos'     => UserAccessLog::distinct('user_id')->count('user_id'),
     ];
   }
 

+ 8 - 0
app/Services/UserAccessLogService.php

@@ -12,6 +12,14 @@ class UserAccessLogService
         $query = UserAccessLog::with(['user:id,name,type'])
             ->orderBy('accessed_at', 'desc');
 
+        if (!empty($filters['last_per_user'])) {
+            $query->whereIn('id', function ($sub) {
+                $sub->selectRaw('MAX(id)')
+                    ->from('users_access_logs')
+                    ->groupBy('user_id');
+            });
+        }
+
         if (!empty($filters['type'])) {
             $query->whereHas('user', fn($q) => $q->where('type', $filters['type']));
         }