MIF_E31230302/routes/web.php

81 lines
3.6 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\DataTrainingController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\C45Controller;
use App\Http\Controllers\PrediksiController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\UserController;
use App\Http\Controllers\RekapController;
// 1. Route Publik
Route::get('/', function () {
return view('welcome');
});
Route::get('/login', [AuthController::class, 'showLoginForm'])->name('login');
Route::post('/login', [AuthController::class, 'login']);
Route::post('/register', [AuthController::class, 'register'])->name('register');
// 2. Route Diproteksi Auth
Route::middleware(['auth'])->group(function () {
// Route Pengarah Pintar: Arahkan Otomatis Berdasarkan Role
Route::get('/dashboard', function () {
if (Auth::user()->role === 'admin' || Auth::user()->is_admin) {
return redirect()->route('admin.dashboard');
}
return redirect()->route('siswa.dashboard');
})->name('dashboard');
// Dashboard Admin
Route::get('/admin/dashboard', [DashboardController::class, 'index'])->name('admin.dashboard');
// Dashboard Siswa
Route::get('/siswa/dashboard', function () {
// Jika Admin mencoba buka manual URL siswa, lempar balik ke admin dashboard
if (Auth::user()->role === 'admin' || Auth::user()->is_admin) {
return redirect()->route('admin.dashboard');
}
return view('siswa.dashboard');
})->name('siswa.dashboard');
// Data Training
Route::resource('training', DataTrainingController::class);
// Perhitungan C4.5 (Admin Panel)
Route::get('/c45', [C45Controller::class, 'index'])->name('c45.index');
Route::get('/c45/create', [C45Controller::class, 'create'])->name('c45.create');
Route::get('/c45/hasil', [C45Controller::class, 'hasil'])->name('c45.hasil');
Route::post('/c45/hitung', [C45Controller::class, 'hitungRekomendasi'])->name('c45.hitung');
// Prediksi / Rekomendasi
Route::get('/prediksi', [PrediksiController::class, 'index'])->name('prediksi.index');
Route::post('/prediksi/hitung', [PrediksiController::class, 'hitungRekomendasi'])->name('prediksi.hitung');
Route::get('/riwayat-rekomendasi', [PrediksiController::class, 'riwayat'])->name('riwayat.index');
Route::get('/riwayat-rekomendasi/{id}', [PrediksiController::class, 'showRiwayat'])->name('riwayat.show');
Route::delete('/riwayat-rekomendasi/{id}', [PrediksiController::class, 'destroyRiwayat'])->name('riwayat.destroy');
// 1. Halaman Dashboard Rekapitulasi & Grafik
Route::get('/rekap-konsultasi', [RekapController::class, 'index'])->name('admin.rekap');
// 2. Action Download Laporan PDF
Route::get('/rekap-konsultasi/export-pdf', [RekapController::class, 'exportPdf'])->name('admin.rekap.pdf');
// Profile
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
Route::put('/profile/password', [ProfileController::class, 'updatePassword'])->name('profile.password.update');
// Management User / Akun Internal
Route::get('/admin/users', [UserController::class, 'index'])->name('admin.users.index');
Route::post('/admin/users', [UserController::class, 'store'])->name('admin.users.store');
Route::delete('/admin/users/{user}', [UserController::class, 'destroy'])->name('admin.users.destroy');
// Logout
Route::post('/logout', [AuthController::class, 'logout'])->name('logout');
});