License::count(), 'activeCount' => License::whereNull('revoked_at')->count(), 'activationCount' => LicenseActivation::whereNull('deactivated_at')->count(), 'userCount' => User::count()]); } public function licenses(Request $r) { $q = License::with('product')->latest(); if ($s = trim((string) $r->query('q'))) { $q->where(fn ($x) => $x->where('customer_email', 'like', "%{$s}%")->orWhere('customer_name', 'like', "%{$s}%")->orWhere('license_key_last4', 'like', "%{$s}%")); } return view('admin.licenses', ['licenses' => $q->paginate(50)->withQueryString()]); } public function show(License $license) { $license->load(['product', 'activations']); return view('admin.license', compact('license')); } public function revoke(Request $request, License $license) { $data = $request->validate(['reason' => ['nullable', 'string', 'max:255']]); $license->update(['revoked_at' => now(), 'revoke_reason' => $data['reason'] ?: 'Revoked by administrator']); return back()->with('status', 'Licence revoked.'); } public function restore(License $license) { $license->update(['revoked_at' => null, 'revoke_reason' => null]); return back()->with('status','Licence restored.'); } }