namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Models\ActivityLog; use App\Models\AdminLoginLog; use Illuminate\Http\Request; class ActivityController extends Controller { public function logs(Request $request) { $query = ActivityLog::with(['causer'])->latest(); // Search if ($request->has('search')) { $search = $request->search; $query->where('description', 'like', "%{$search}%"); } // Filter by log name if ($request->has('log_name') && $request->log_name != 'all') { $query->where('log_name', $request->log_name); } // Filter by causer if ($request->has('causer_id') && $request->causer_id != 'all') { $query->where('causer_id', $request->causer_id) ->where('causer_type', 'App\Models\Admin'); } // Filter by date range if ($request->has('date_from')) { $query->whereDate('created_at', '>=', $request->date_from); } if ($request->has('date_to')) { $query->whereDate('created_at', '<=', $request->date_to); } $logs = $query->paginate(50); $logNames = ActivityLog::distinct('log_name')->pluck('log_name'); $admins = \App\Models\Admin::orderBy('username')->get(); return view('admin.activity.logs', compact('logs', 'logNames', 'admins')); } public function loginLogs(Request $request) { $query = AdminLoginLog::with(['admin'])->latest(); // Search if ($request->has('search')) { $search = $request->search; $query->where('ip_address', 'like', "%{$search}%"); } // Filter by status if ($request->has('status') && $request->status != 'all') { $query->where('status', $request->status); } // Filter by admin if ($request->has('admin_id') && $request->admin_id != 'all') { $query->where('admin_id', $request->admin_id); } // Filter by date range if ($request->has('date_from')) { $query->whereDate('login_at', '>=', $request->date_from); } if ($request->has('date_to')) { $query->whereDate('login_at', '<=', $request->date_to); } $logs = $query->paginate(50); $admins = \App\Models\Admin::orderBy('username')->get(); return view('admin.activity.login-logs', compact('logs', 'admins')); } public function clearLogs(Request $request) { $request->validate([ 'older_than' => 'required|integer|min:1|max:365', ]); $date = now()->subDays($request->older_than); $count = ActivityLog::where('created_at', '<', $date)->delete(); // Log activity auth()->guard('admin')->user()->logActivity( 'Cleared activity logs older than ' . $request->older_than . ' days', ['deleted_count' => $count] ); return back()->with('success', "Deleted {$count} old activity logs."); } }