53 lines
1.8 KiB
PHP
53 lines
1.8 KiB
PHP
<?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)
|
|
{
|
|
$activities = Activity::with('causer')
|
|
->latest()
|
|
->paginate($request->input('per_page', 10))
|
|
->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'),
|
|
],
|
|
]);
|
|
}
|
|
}
|