Files
biiproject-kit-v2/app/Http/Controllers/ActivityLogController.php
T

70 lines
2.1 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)
{
$this->authorize('user.view');
$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)
{
$this->authorize('user.delete');
$ids = (array) $request->input('ids', []);
Activity::whereIn('id', $ids)->delete();
return back()->with('success', \count($ids) . ' logs deleted successfully.');
}
}