70 lines
2.3 KiB
PHP
70 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Inertia\Inertia;
|
|
use Spatie\Activitylog\Models\Activity;
|
|
|
|
class ActivityLogController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
abort_if(!auth()->user()->can('activity-logs.view'), 403, 'Unauthorized. Activity logs view permission required.');
|
|
|
|
$search = $request->input('search');
|
|
$logName = $request->input('log_name');
|
|
$event = $request->input('event');
|
|
$perPage = (int) $request->input('per_page', 15);
|
|
|
|
$query = Activity::with('causer')->latest();
|
|
|
|
if ($search) {
|
|
$query->where(function ($q) use ($search) {
|
|
$q->where('description', 'like', "%{$search}%")
|
|
->orWhere('log_name', 'like', "%{$search}%");
|
|
});
|
|
}
|
|
|
|
if ($logName) {
|
|
$query->where('log_name', $logName);
|
|
}
|
|
|
|
if ($event) {
|
|
$query->where('event', $event);
|
|
}
|
|
|
|
$activities = $query->paginate($perPage)->withQueryString();
|
|
|
|
$logNames = Activity::distinct()->pluck('log_name');
|
|
$events = Activity::distinct()->whereNotNull('event')->pluck('event');
|
|
|
|
return Inertia::render('ActivityLogs/Index', [
|
|
'activities' => [
|
|
'data' => $activities->items(),
|
|
'meta' => [
|
|
'current_page' => $activities->currentPage(),
|
|
'last_page' => $activities->lastPage(),
|
|
'total' => $activities->total(),
|
|
'per_page' => $activities->perPage(),
|
|
],
|
|
'links' => $activities->linkCollection()->toArray(),
|
|
],
|
|
'filters' => $request->only(['search', 'log_name', 'event', 'per_page']),
|
|
'availableLogNames' => $logNames,
|
|
'availableEvents' => $events,
|
|
]);
|
|
}
|
|
|
|
public function bulkDelete(Request $request)
|
|
{
|
|
abort_if(!auth()->user()->can('activity-logs.delete'), 403, 'Unauthorized. Activity logs delete permission required.');
|
|
|
|
$ids = (array) $request->input('ids', []);
|
|
|
|
Activity::whereIn('id', $ids)->delete();
|
|
|
|
return back()->with('success', \count($ids) . ' logs deleted successfully.');
|
|
}
|
|
}
|