MIF_E31221259/routes/web.php

240 lines
9.3 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Auth\LoginController;
use App\Http\Controllers\User\UserDashboardController;
use App\Http\Controllers\Admin\AdminDashboardController;
use App\Http\Controllers\Admin\DataJurusanController;
use App\Http\Controllers\Admin\DataKriteriaController;
use App\Http\Controllers\Admin\ManajemenUserController;
use App\Http\Controllers\Admin\HasilDiagnosisController;
use App\Http\Controllers\Admin\BasisPengetahuanController;
use App\Http\Controllers\User\DashboardController;
use App\Http\Controllers\User\InfoJurusanController;
use App\Http\Controllers\User\PerhitunganAPHController;
use App\Http\Controllers\User\ProfileAPHController;
use App\Http\Controllers\User\DiagnosisHasilController;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\User\AHPController;
use App\Http\Controllers\User\NewAhpController;
use App\Http\Controllers\Admin\MapelController;
use App\Http\Controllers\Auth\RegisterController;
use App\Http\Controllers\Admin\KecerdasanController;
use App\Http\Controllers\KriteriaController;
// Cek auth untuk masuk ke base url, jika belum login maka pergi ke landing page
Route::get('/', function () {
if (Auth::check()) {
if (Auth::user()->role === 'admin') { // jika login sebagai admin, akan direct ke dashboard admin
return redirect('/admin/dashboard');
} elseif (Auth::user()->role === 'user') { // jika login sebagai user, akan direct ke dashboard user
return redirect('/user/dashboard');
}
}
return view('home');
});
Route::get('/home', function () {
if (Auth::check()) {
if (Auth::user()->role === 'admin') {
return redirect('/admin/dashboard');
} elseif (Auth::user()->role === 'user') {
return redirect('/user/dashboard');
}
}
return view('home');
});
// Authentication Routes
Route::get('/login', [LoginController::class, 'showLoginForm'])->name('login');
Route::post('/login', [LoginController::class, 'login']);
Route::post('/logout', [LoginController::class, 'logout'])->name('logout');
// Admin Routes
Route::middleware(['auth', 'role:admin'])->group(function () {
Route::get('/admin/dashboard', [AdminDashboardController::class, 'index'])->name('admin.dashboard');
});
Route::prefix('admin')->group(function () {
Route::get('/data-jurusan', [DataJurusanController::class, 'index'])->name('admin.datajurusan.index');
});
Route::prefix('admin')->group(function () {
Route::get('/data-kriteria', [DataKriteriaController::class, 'index'])->name('admin.data-kriteria.index');
Route::get('/data-kriteria/{id}', [DataKriteriaController::class, 'show'])->name('admin.data-kriteria.show');
});
Route::prefix('admin')->group(function () {
Route::get('/manajemen-user', [ManajemenUserController::class, 'index'])->name('admin.manajemenuser');
});
Route::prefix('admin')->group(function () {
Route::get('/hasil-diagnosis', [HasilDiagnosisController::class, 'index'])->name('admin.hasildiagnosis');
});
Route::prefix('admin')->group(function () {
Route::get('/basis-pengetahuan', [BasisPengetahuanController::class, 'index'])->name('admin.basispengetahuan');
});
// User Routes
Route::middleware(['auth', 'role:user'])->group(function () {
Route::get('/user/dashboard', [UserDashboardController::class, 'index'])->name('user.dashboard');
});
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
Route::get('/user/info-jurusan', [InfoJurusanController::class, 'index'])->name('user.infojurusan');
// Route::get('/user/perhitungan-aph', [PerhitunganAPHController::class, 'index'])->name('user.perhitunganaph');
Route::prefix('user')->group(function () {
// Tampil form AHP
Route::get('/perhitungan-aph', [PerhitunganAPHController::class, 'index'])
->name('user.perhitunganaph.index');
// Proses submit AHP
Route::post('/perhitungan-aph', [PerhitunganAPHController::class, 'analisa'])
->name('user.perhitunganaph.analisa');
// (Opsional) Reset data AHP
Route::delete('/perhitungan-aph', [PerhitunganAPHController::class, 'reset'])
->name('user.perhitunganaph.reset');
});
Route::prefix('profile')->name('user.profile.')->middleware('auth')->group(function(){
Route::get('/', [ProfileAPHController::class, 'show'])->name('show');
Route::get('/edit', [ProfileAPHController::class, 'edit'])->name('edit');
Route::put('/', [ProfileAPHController::class, 'update'])->name('update');
});
Route::get('/user/diagnosis-hasil', [DiagnosisHasilController::class, 'index'])->name('user.diagnosis-hasil');
Route::post('/logout', function (Request $request) {
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
})->name('logout');
Route::get('admin/data-kriteria', [KriteriaController::class, 'index'])
->name('kriteria.index');
Route::post('admin/data-kriteria', [KriteriaController::class, 'store'])
->name('kriteria.store');
Route::get('admin/data-kriteria/{id}', [KriteriaController::class, 'show'])
->name('kriteria.show');
Route::get('admin/data-kriteria/{id}/edit', [KriteriaController::class, 'edit'])
->name('kriteria.edit');
// Proses update
Route::put('admin/data-kriteria/{id}', [KriteriaController::class, 'update'])
->name('kriteria.update');
// Proses delete
Route::delete('admin/data-kriteria/{id}', [KriteriaController::class, 'destroy'])
->name('kriteria.destroy');
Route::get('admin/datajurusan', [DataJurusanController::class, 'index'])
->name('admin.datajurusan.index');
// Note: jika Anda tidak punya method create() di controller,
// bisa handle via modal di index, atau tambahkan stub create().
Route::prefix('admin')->name('admin.')->group(function () {
Route::resource('datajurusan', DataJurusanController::class);
});
Route::get('admin/basispengetahuan', [BasisPengetahuanController::class,'index'])
->name('admin.basispengetahuan.index');
Route::post('admin/basispengetahuan', [BasisPengetahuanController::class,'store'])
->name('admin.basispengetahuan.store');
Route::put('admin/basispengetahuan/{basisPengetahuan}', [BasisPengetahuanController::class,'update'])
->name('admin.basispengetahuan.update');
Route::delete('admin/basispengetahuan/{basisPengetahuan}', [BasisPengetahuanController::class,'destroy'])
->name('admin.basispengetahuan.destroy');
Route::prefix('admin')
->name('admin.')
->group(function () {
Route::resource('manajemen-user', ManajemenUserController::class);
Route::get('manajemen-user/{id}/get', [ManajemenUserController::class, 'getUser'])
->name('manajemen-user.get');
});
Route::prefix('admin')->name('admin.')->group(function(){
// ...
Route::get('hasil-diagnosis', [HasilDiagnosisController::class, 'index'])
->name('hasil-diagnosis.index');
});
Route::get('ahp/new', [NewAhpController::class, 'create'])->name('user.ahp.new');
Route::post('ahp', [NewAhpController::class, 'store'])->name('user.ahp.store');
Route::prefix('admin')
->name('admin.')
->middleware(['auth','role:admin'])
->group(function(){
// resource datajurusan, kecuali show
Route::resource('datajurusan', DataJurusanController::class)
->except(['show']);
});
Route::get('/ahp', [NewAhpController::class, 'index'])
->name('user.ahp.index');
// Terima POST input nilai dan proses AHP+CF
Route::post('/ahp', [NewAhpController::class, 'process'])
->name('user.ahp.process');
Route::prefix('admin')->name('admin.')->middleware(['auth'])->group(function() {
Route::resource('mapels', MapelController::class);
});
use App\Http\Controllers\Admin\BasisAhpController;
Route::prefix('admin')
->name('admin.')
->middleware('auth')
->group(function() {
Route::resource('basis-ahp', BasisAhpController::class)
->except(['create','edit']);
Route::get('basis-ahp/delete/{mapel_id}/{jurusan_id}', [BasisAhpController::class, 'destroyViaUrl'])
->name('basis-ahp.destroy-via-url');
});
Route::prefix('user')->middleware('auth')->group(function() {
Route::get('diagnosahasil', [DiagnosisHasilController::class, 'index'])->name('user.diagnosahasil');
Route::get('diagnosahasil/pdf', [DiagnosisHasilController::class, 'exportPdf'])->name('user.diagnosahasil.pdf');
});
Route::middleware('guest')->group(function () {
Route::get('/register', [RegisterController::class, 'showRegistrationForm'])
->name('register'); // nama route: register
Route::post('/register', [RegisterController::class, 'register'])
->name('register.submit'); // nama route: register.submit
});
Route::prefix('admin')->middleware('auth')->group(function() {
Route::resource('kecerdasan', KecerdasanController::class)->names([
'index' => 'admin.kecerdasan.index',
'store' => 'admin.kecerdasan.store',
'update' => 'admin.kecerdasan.update',
'destroy' => 'admin.kecerdasan.destroy',
])->parameters(['kecerdasan' => 'kecerdasan']);
});