aiblog/app/Services/ActivityLogService.php
2024-11-17 11:30:01 +08:00

45 lines
No EOL
1.1 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Services;
use App\Models\ActivityLog;
use App\Models\User;
use Illuminate\Database\Eloquent\Model;
class ActivityLogService
{
public function log(
User $user,
string $action,
Model $subject,
string $description,
array $properties = []
): void {
ActivityLog::create([
'user_id' => $user->id,
'action' => $action,
'model_type' => get_class($subject),
'model_id' => $subject->id,
'description' => $description,
'properties' => $properties,
]);
}
public function getUserActivities(User $user, int $limit = 10): array
{
return ActivityLog::with('subject')
->where('user_id', $user->id)
->latest()
->limit($limit)
->get()
->map(fn($log) => [
'action' => $log->action,
'description' => $log->description,
'created_at' => $log->created_at,
'properties' => $log->properties,
])
->toArray();
}
}