82 lines
2.6 KiB
PHP
82 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Gejala;
|
|
use Illuminate\Http\Request;
|
|
use App\Models\User;
|
|
use App\Models\Penyakit;
|
|
use App\Models\Rule;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\File;
|
|
|
|
class DashboardController extends Controller
|
|
{
|
|
public function admin()
|
|
|
|
{
|
|
$userId = Auth::id();
|
|
$logFile = storage_path('logs/laravel.log');
|
|
$lines = file($logFile);
|
|
$lastFiveLogs = array_slice($lines, -5);
|
|
$parsedLogs = [];
|
|
|
|
foreach ($lastFiveLogs as $line) {
|
|
preg_match('/\[(.*?)\] local\.INFO: Login berhasil \{"user_id":(\d+),"username":"(.*?)","role":"(.*?)","fullname":"(.*?)","time":"(.*?)","device":"(.*?)"\}/', $line, $matches);
|
|
|
|
|
|
if (!empty($matches) && (int)$matches[2] === (int)$userId) {
|
|
$parsedLogs[] = [
|
|
'time' => trim($matches[6]),
|
|
'user_id' => trim($matches[2]),
|
|
'username' => trim($matches[3]),
|
|
'role' => trim($matches[4]),
|
|
'fullname' => trim($matches[5]),
|
|
'device' => trim($matches[7]),
|
|
];
|
|
}
|
|
}
|
|
|
|
$totalUsers = User::where('role', 'user')->count();
|
|
$totalPenyakit = Penyakit::count();
|
|
$totalGejala = Gejala::count();
|
|
$totalRule = Rule::count();
|
|
|
|
return view('dashboard.admin', compact('parsedLogs', 'totalUsers', 'totalPenyakit', 'totalGejala', 'totalRule'));
|
|
}
|
|
|
|
|
|
public function user()
|
|
{
|
|
$userId = Auth::id();
|
|
$logFile = storage_path('logs/laravel.log');
|
|
|
|
if (!file_exists($logFile)) {
|
|
$parsedLogs = [];
|
|
} else {
|
|
$lines = file($logFile);
|
|
$lastFiveLogs = array_slice($lines, -5);
|
|
$parsedLogs = [];
|
|
|
|
foreach ($lastFiveLogs as $line) {
|
|
preg_match('/\[(.*?)\] local\.INFO: Login berhasil \{"user_id":(\d+),"username":"(.*?)","role":"(.*?)","fullname":"(.*?)","time":"(.*?)","device":"(.*?)"\}/', $line, $matches);
|
|
|
|
if (!empty($matches) && (int)$matches[2] === (int)$userId) {
|
|
$parsedLogs[] = [
|
|
'time' => trim($matches[6]),
|
|
'user_id' => trim($matches[2]),
|
|
'username' => trim($matches[3]),
|
|
'role' => trim($matches[4]),
|
|
'fullname' => trim($matches[5]),
|
|
'device' => trim($matches[7]),
|
|
];
|
|
}
|
|
}
|
|
|
|
$parsedLogs = array_reverse($parsedLogs);
|
|
}
|
|
|
|
return view('dashboard.user', compact('parsedLogs'));
|
|
}
|
|
}
|