MIF_E31221244/app/Http/Controllers/DashboardController.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'));
}
}