50 lines
1.6 KiB
PHP
50 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\License;
|
|
use App\Models\LicenseActivation;
|
|
use App\Models\User;
|
|
use Illuminate\Http\Request;
|
|
|
|
final class AdminController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
return view('admin.index', ['licenseCount' => 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.');
|
|
}
|
|
}
|