/home2/mshostin/hall-management.ms-hostingladz.com/app/Traits/LogsActivity.php
<?php
namespace App\Traits;
use Illuminate\Support\Facades\Auth;
use App\Models\Activity;
trait LogsActivity
{
public static function bootLogsActivity()
{
// Log Create
static::created(function ($model) {
self::logActivity($model, 'created', [
'new_values' => $model->getAttributes()
]);
});
// Log Update
static::updated(function ($model) {
$changes = $model->getChanges();
unset($changes['updated_at']);
if (empty($changes)) return;
self::logActivity($model, 'updated', [
'old_values' => $model->getOriginal(),
'new_values' => $model->getAttributes()
]);
});
// Log Delete
static::deleted(function ($model) {
self::logActivity($model, 'deleted', [
'old_values' => $model->getOriginal()
]);
});
}
protected static function logActivity($model, $action, array $properties = [])
{
Activity::create([
'log_name' => strtolower(class_basename($model)),
'description' => ucfirst(class_basename($model)) . " {$action}",
'causer_type' => Auth::check() ? get_class(Auth::user()) : null,
'causer_id' => Auth::id(),
'subject_type' => get_class($model),
'subject_id' => $model->id,
'properties' => array_merge($properties, [
'ip_address' => request()->ip(),
'user_agent' => request()->userAgent(),
'location' => [
'city' => request()->header('X-Geo-City'),
'region' => request()->header('X-Geo-Region'),
'country' => request()->header('X-Geo-Country'),
]
]),
]);
}
}