Files
star-erp/app/Http/Controllers/Admin/ActivityLogController.php

65 lines
2.2 KiB
PHP
Raw Normal View History

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Inertia\Inertia;
use Spatie\Activitylog\Models\Activity;
class ActivityLogController extends Controller
{
public function index(Request $request)
{
$perPage = $request->input('per_page', 10);
$sortBy = $request->input('sort_by', 'created_at');
$sortOrder = $request->input('sort_order', 'desc');
$query = Activity::with('causer');
if ($sortBy === 'created_at') {
$query->orderBy($sortBy, $sortOrder);
} else {
$query->latest();
}
$activities = $query->paginate($perPage)
->through(function ($activity) {
$subjectMap = [
'App\Models\User' => '使用者',
'App\Models\Role' => '角色',
'App\Models\Product' => '商品',
'App\Models\Vendor' => '廠商',
'App\Models\Category' => '商品分類',
'App\Models\Unit' => '單位',
'App\Models\PurchaseOrder' => '採購單',
];
$eventMap = [
'created' => '新增',
'updated' => '更新',
'deleted' => '刪除',
];
return [
'id' => $activity->id,
'description' => $eventMap[$activity->event] ?? $activity->event,
'subject_type' => $subjectMap[$activity->subject_type] ?? class_basename($activity->subject_type),
'event' => $activity->event,
'causer' => $activity->causer ? $activity->causer->name : 'System',
'created_at' => $activity->created_at->format('Y-m-d H:i:s'),
'properties' => $activity->properties,
];
});
return Inertia::render('Admin/ActivityLog/Index', [
'activities' => $activities,
'filters' => [
'per_page' => $request->input('per_page', '10'),
'sort_by' => $request->input('sort_by'),
'sort_order' => $request->input('sort_order'),
],
]);
}
}