44 lines
1.6 KiB
PHP
44 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Staff;
|
|
|
|
use App\Http\Controllers\HashedStudyControllerBase;
|
|
use App\Services\AuditTrail\Activity;
|
|
use App\Services\AuditTrail\Category;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Str;
|
|
|
|
class AuditLogController extends HashedStudyControllerBase
|
|
{
|
|
public function popup()
|
|
{
|
|
$study = $this->getStudy();
|
|
|
|
$logs = DB::table('audit_logs')
|
|
->leftjoin('users', 'users.id', '=', 'audit_logs.user_id')
|
|
->leftjoin('user_agents', 'user_agents.id', '=', 'audit_logs.user_agent_id')
|
|
->selectRaw('users.display_name as user_name, audit_logs.created_at as log_time, audit_logs.*, user_agents.*')
|
|
->orderByDesc('audit_logs.id')
|
|
->where('audit_logs.study_id', $study->id)
|
|
->get();
|
|
|
|
$logs->each(function ($log) {
|
|
$log->category_name = Category::from($log->category)->name;
|
|
$log->activity_name = Str::of(Activity::from($log->activity)->name)->slug('-')->replace('-', ' ')->ucfirst();
|
|
if (filled($log->user_agent)) {
|
|
$params = [
|
|
'Browser' => $log->browser_name,
|
|
'Device' => $log->device_type,
|
|
'Platform' => $log->platform,
|
|
'Version' => $log->browser_version,
|
|
];
|
|
$log->browser = implode("\n", array_map(fn ($label, $value) => "{$label}: {$value}", array_keys($params), $params));
|
|
} else {
|
|
$log->browser = null;
|
|
}
|
|
});
|
|
|
|
return view('staff.audit.popup', compact('study', 'logs'));
|
|
}
|
|
}
|