MIF_E31230745/routes/web.php

116 lines
6.6 KiB
PHP

<?php
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\RekomendasiController;
use App\Http\Controllers\ChatbotController;
use App\Http\Controllers\AdminController;
use App\Http\Controllers\BKController;
use App\Http\Controllers\AlumniController;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Auth;
Route::get('/', function () {
return view('welcome');
});
Route::get('/dashboard', function () {
$user = Auth::user();
$recommendationCount = $user ? \App\Models\Recommendation::where('user_id', $user->id)->count() : 0;
$chatCount = $user ? \App\Models\ChatHistory::where('user_id', $user->id)->count() : 0;
return view('dashboard', [
'recommendationCount' => $recommendationCount,
'chatCount' => $chatCount
]);
})->middleware(['auth', 'verified', 'roleRedirect'])->name('dashboard');
Route::middleware('auth')->group(function () {
// Profile Routes
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
// Rekomendasi Routes
Route::get('/rekomendasi', [RekomendasiController::class, 'index'])->name('rekomendasi.index');
Route::post('/rekomendasi/proses', [RekomendasiController::class, 'proses'])->name('rekomendasi.proses');
// Chatbot Routes
Route::get('/chatbot', [ChatbotController::class, 'index'])->name('chatbot.index');
Route::post('/chatbot/send', [ChatbotController::class, 'send'])->name('chatbot.send');
// History Routes
Route::get('/history/rekomendasi', [RekomendasiController::class, 'historyRekomendasi'])->name('history.rekomendasi');
Route::get('/history/chat', [ChatbotController::class, 'historyChat'])->name('history.chat');
});
// Admin Routes (role-based access control)
Route::middleware(['auth', 'verified', 'isAdmin'])->prefix('admin')->name('admin.')->group(function () {
// 1. Dashboard
Route::get('/dashboard', [AdminController::class, 'dashboard'])->name('dashboard');
// 2. Manajemen Data Siswa
Route::get('/students', [AdminController::class, 'students'])->name('students');
Route::get('/students/{id}', [AdminController::class, 'studentDetail'])->name('student.detail');
Route::get('/students/{id}/chat', [AdminController::class, 'chatHistory'])->name('student.chat');
// 3. Manajemen Jurusan (CRUD dari database)
Route::get('/jurusan', [AdminController::class, 'jurusan'])->name('jurusan');
Route::get('/jurusan/create', [AdminController::class, 'jurusanCreate'])->name('jurusan.create');
Route::post('/jurusan', [AdminController::class, 'jurusanStore'])->name('jurusan.store');
Route::get('/jurusan/{id}/edit', [AdminController::class, 'jurusanEdit'])->name('jurusan.edit');
Route::put('/jurusan/{id}', [AdminController::class, 'jurusanUpdate'])->name('jurusan.update');
Route::delete('/jurusan/{id}', [AdminController::class, 'jurusanDestroy'])->name('jurusan.destroy');
// 3.5 Manajemen Data Alumni
Route::resource('alumni', AlumniController::class);
// 4. Manajemen Akun Guru BK
Route::get('/guru-bk', [AdminController::class, 'guruBK'])->name('guru-bk');
Route::get('/guru-bk/create', [AdminController::class, 'guruBKCreate'])->name('guru-bk.create');
Route::post('/guru-bk', [AdminController::class, 'guruBKStore'])->name('guru-bk.store');
Route::get('/guru-bk/{id}/edit', [AdminController::class, 'guruBKEdit'])->name('guru-bk.edit');
Route::put('/guru-bk/{id}', [AdminController::class, 'guruBKUpdate'])->name('guru-bk.update');
Route::delete('/guru-bk/{id}', [AdminController::class, 'guruBKDestroy'])->name('guru-bk.destroy');
// 5. Riwayat Rekomendasi Siswa
Route::get('/riwayat-rekomendasi', [AdminController::class, 'riwayatRekomendasi'])->name('riwayat-rekomendasi');
// 6. Riwayat Konsultasi Chatbot
Route::get('/riwayat-chatbot', [AdminController::class, 'riwayatChatbot'])->name('riwayat-chatbot');
// 7. Profil Admin
Route::get('/profil', [AdminController::class, 'profil'])->name('profil');
Route::put('/profil', [AdminController::class, 'updateProfil'])->name('profil.update');
Route::put('/profil/password', [AdminController::class, 'updatePassword'])->name('profil.password');
});
// BK Routes (role-based access control)
Route::middleware(['auth', 'verified', 'isBK'])->prefix('bk')->name('bk.')->group(function () {
Route::get('/dashboard', [BKController::class, 'dashboard'])->name('dashboard');
Route::get('/students', [BKController::class, 'students'])->name('students');
Route::get('/students/{id}', [BKController::class, 'studentDetail'])->name('student.detail');
Route::get('/students/{id}/chat', [BKController::class, 'chatHistory'])->name('student.chat');
Route::get('/riwayat-rekomendasi', [BKController::class, 'riwayatRekomendasi'])->name('riwayat-rekomendasi');
Route::get('/riwayat-chatbot', [BKController::class, 'riwayatChatbot'])->name('riwayat-chatbot');
Route::get('/jurusan', [BKController::class, 'jurusan'])->name('jurusan');
Route::get('/jurusan/create', [BKController::class, 'jurusanCreate'])->name('jurusan.create');
Route::post('/jurusan', [BKController::class, 'jurusanStore'])->name('jurusan.store');
Route::get('/jurusan/{id}/edit', [BKController::class, 'jurusanEdit'])->name('jurusan.edit');
Route::put('/jurusan/{id}', [BKController::class, 'jurusanUpdate'])->name('jurusan.update');
Route::delete('/jurusan/{id}', [BKController::class, 'jurusanDestroy'])->name('jurusan.destroy');
// Alumni Routes untuk BK - sama seperti admin
Route::get('/alumni', [BKController::class, 'alumni'])->name('alumni');
Route::get('/alumni/create', [BKController::class, 'alumniCreate'])->name('alumni.create');
Route::post('/alumni', [BKController::class, 'alumniStore'])->name('alumni.store');
Route::get('/alumni/{alumni}', [BKController::class, 'alumniShow'])->name('alumni.show');
Route::get('/alumni/{alumni}/edit', [BKController::class, 'alumniEdit'])->name('alumni.edit');
Route::put('/alumni/{alumni}', [BKController::class, 'alumniUpdate'])->name('alumni.update');
Route::delete('/alumni/{alumni}', [BKController::class, 'alumniDestroy'])->name('alumni.destroy');
Route::get('/profil', [BKController::class, 'profil'])->name('profil');
Route::put('/profil', [BKController::class, 'updateProfil'])->name('profil.update');
Route::put('/profil/password', [BKController::class, 'updatePassword'])->name('profil.password');
});
require __DIR__.'/auth.php';