MIF_E31222307/routes/web.php

250 lines
16 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\LoginController;
use App\Http\Controllers\AdminController;
use App\Http\Controllers\UserController;
use App\Http\Controllers\MakananController;
use App\Http\Controllers\PerbandinganKriteriaController;
use App\Http\Controllers\ProsesController;
use App\Http\Controllers\AlternatifController;
use App\Http\Controllers\LandingPageController;
use App\Http\Controllers\RegisterController;
use App\Http\Controllers\RekomendasiController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\MenuAHPController;
use App\Http\Controllers\HistoryAHPController;
use App\Http\Controllers\SimulasiController;
use App\Http\Controllers\ValidasiRekomendasiController;
use App\Http\Controllers\AlertSettingController;
use App\Http\Controllers\NotificationController;
use App\Http\Controllers\TimezoneController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/
// Route::get('/', function () {
// return view('welcome');
// });
// User Routes (Hanya bisa diakses oleh Admin)
Route::middleware(['cekrole:admin'])->group(function () {
Route::get('/admindash', [AdminController::class, 'admindash'])->name('admindash');
Route::get('/admin/profile', [ProfileController::class, 'adminprofile'])->name('admin.profile');
Route::patch('/admin/profile', [ProfileController::class, 'update'])->name('profile.update');
Route::patch('/admin/password', [ProfileController::class, 'password'])->name('profile.password');
// Routes untuk user
Route::get('/datauser', [AdminController::class, 'datauser'])->name('datauser');
Route::get('/edituser/{user}/edituser', [AdminController::class, 'edituser'])->name('edituser');
Route::put('/datauser/{user}', [AdminController::class, 'updateuser'])->name('updateuser');
Route::delete('/datauser/{user}', [AdminController::class, 'deleteuser'])->name('deleteuser');
Route::get('/tambahuser', [AdminController::class, 'tambahuser'])->name('tambahuser');
Route::post('/datauser/storeuser', [AdminController::class, 'storeuser'])->name('storeuser');
// Routes untuk role
Route::get('/role', [AdminController::class, 'role'])->name('role');
Route::get('/editrole/{role}/editrole', [AdminController::class, 'editrole'])->name('editrole');
Route::put('/role/{role}', [AdminController::class, 'updaterole'])->name('updaterole');
Route::delete('/role/{role}', [AdminController::class, 'deleterole'])->name('deleterole');
Route::get('/tambahrole', [AdminController::class, 'tambahrole'])->name('tambahrole');
Route::post('/role/storerole', [AdminController::class, 'storerole'])->name('storerole');
});
// Routes untuk kategori, jenis makanan, dan makanan
Route::middleware(['cekrole:admin'])->group(function () {
// Routes untuk kategori
Route::get('/kategori', [MakananController::class, 'kategori'])->name('kategori');
Route::get('/editkategori/{kategori}/editkategori', [MakananController::class, 'editkategori'])->name('editkategori');
Route::put('/kategori/{kategori}', [MakananController::class, 'updatekategori'])->name('updatekategori');
Route::delete('/kategori/{kategori}', [MakananController::class, 'deletekategori'])->name('deletekategori');
Route::get('/tambahkategori', [MakananController::class, 'tambahkategori'])->name('tambahkategori');
Route::post('/kategori/storekategori', [MakananController::class, 'storekategori'])->name('storekategori');
// Routes untuk jenis makanan
Route::get('/jenismakanan', [MakananController::class, 'jenismakanan'])->name('jenismakanan');
Route::get('/editjenismakanan/{jenis}/editjenismakanan', [MakananController::class, 'editjenismakanan'])->name('editjenismakanan');
Route::put('/jenismakanan/{jenis}', [MakananController::class, 'updatejenismakanan'])->name('updatejenismakanan');
Route::delete('/jenismakanan/{jenis}', [MakananController::class, 'deletejenismakanan'])->name('deletejenismakanan');
Route::get('/tambahjenismakanan', [MakananController::class, 'tambahjenismakanan'])->name('tambahjenismakanan');
Route::post('/jenismakanan/storejenismakanan', [MakananController::class, 'storejenismakanan'])->name('storejenismakanan');
// Routes untuk makanan
Route::get('/makanan', [MakananController::class, 'makanan'])->name('makanan');
Route::get('/editmakanan/{makanan}/editmakanan', [MakananController::class, 'editmakanan'])->name('editmakanan');
Route::put('/makanan/{makanan}', [MakananController::class, 'updatemakanan'])->name('updatemakanan');
Route::delete('/makanan/{makanan}', [MakananController::class, 'deletemakanan'])->name('deletemakanan');
Route::get('/tambahmakanan', [MakananController::class, 'tambahmakanan'])->name('tambahmakanan');
Route::post('/makanan/storemakanan', [MakananController::class, 'storemakanan'])->name('makanan.storemakanan');
// Routes untuk komponen
Route::get('/komponen', [MakananController::class, 'komponen'])->name('komponen');
Route::get('/editkomponen/{komponen}/editkomponen', [MakananController::class, 'editkomponen'])->name('editkomponen');
Route::put('/komponen/{komponen}', [MakananController::class, 'updatekomponen'])->name('updatekomponen');
Route::delete('/komponen/{komponen}', [MakananController::class, 'deletekomponen'])->name('deletekomponen');
Route::get('/tambahkomponen', [MakananController::class, 'tambahkomponen'])->name('tambahkomponen');
Route::post('/komponen/storekomponen', [MakananController::class, 'storekomponen'])->name('makanan.storekomponen');
// Routes untuk waktu makan
Route::get('/waktumakan', [MakananController::class, 'waktumakan'])->name('waktumakan');
Route::get('/editwaktumakan/{waktumakan}/editwaktumakan', [MakananController::class, 'editwaktumakan'])->name('editwaktumakan');
Route::put('/waktumakan/{waktumakan}', [MakananController::class, 'updatewaktumakan'])->name('updatewaktumakan');
Route::delete('/waktumakan/{waktumakan}', [MakananController::class, 'deletewaktumakan'])->name('deletewaktumakan');
Route::get('/tambahwaktumakan', [MakananController::class, 'tambahwaktumakan'])->name('tambahwaktumakan');
Route::post('/waktumakan/storewaktumakan', [MakananController::class, 'storewaktumakan'])->name('makanan.storewaktumakan');
// Routes untuk relasi makanan
Route::get('/relasi', [MakananController::class, 'index'])->name('relasi.index');
Route::get('/relasi/create', [MakananController::class, 'create'])->name('relasi.create');
Route::post('/relasi', [MakananController::class, 'store'])->name('relasi.store');
Route::get('/relasi/{id}/edit', [MakananController::class, 'edit'])->name('relasi.edit');
Route::put('/relasi/{id}', [MakananController::class, 'update'])->name('relasi.update');
Route::delete('/relasi/{id}', [MakananController::class, 'destroy'])->name('relasi.destroy');
});
// Routes untuk kriteria
Route::middleware(['cekrole:admin'])->group(function () {
Route::get('/kriteria', [PerbandinganKriteriaController::class, 'kriteria'])->name('kriteria');
Route::get('/editkriteria/{kriteria}/editkriteria', [PerbandinganKriteriaController::class, 'editkriteria'])->name('editkriteria');
Route::put('/kriteria/{kriteria}', [PerbandinganKriteriaController::class, 'updatekriteria'])->name('updatekriteria');
Route::delete('/kriteria/{kriteria}', [PerbandinganKriteriaController::class, 'deletekriteria'])->name('deletekriteria');
Route::get('/tambahkriteria', [PerbandinganKriteriaController::class, 'tambahkriteria'])->name('tambahkriteria');
Route::post('/kriteria/storekriteria', [PerbandinganKriteriaController::class, 'storekriteria'])->name('storekriteria');
});
// Routes untuk proses
Route::middleware(['cekrole:admin'])->group(function () {
// Routes untuk perbandingan
Route::get('/perbandingan', [ProsesController::class, 'showPerbandingan'])->name('perbandingan');
Route::post('/perbandingan/proses', [ProsesController::class, 'prosesSementara'])->name('sementara');
Route::post('/simpan-perbandingan', [ProsesController::class, 'simpanPerbandingan'])->name('simpan.perbandingan');
Route::get('/perbandingan/normalisasi', [ProsesController::class, 'normalisasi'])->name('hasil.normalisasi');
Route::get('perbandingan-alternatif', [ProsesController::class, 'perbandinganAlternatif'])->name('perbandingan.alternatif');
// Alternatif
Route::get('/alternatif/pilih', [AlternatifController::class, 'formPilihAlternatif'])->name('alternatif.pilih');
Route::post('/alternatif/pilih', [AlternatifController::class, 'pilihAlternatif'])->name('alternatif.pilih.simpan');
Route::get('/alternatif/view', [AlternatifController::class, 'viewAlternatif'])->name('alternatif.view');
Route::get('/alternatif/perbandingan', [AlternatifController::class, 'tampilPerbandingan'])->name('alternatif.perbandingan');
Route::post('/alternatif/simpan-normalisasi', [AlternatifController::class, 'simpanNormalisasi'])->name('alternatif.simpan.normalisasi');
// Routes untuk rekomendasi
Route::get('/rekomendasi/hitung-otomatis', [RekomendasiController::class, 'hitungDanSimpanOtomatis'])->name('rekomendasi.hitung.otomatis');
Route::get('/rekomendasi/hasil', [RekomendasiController::class, 'tampilHasil'])->name('rekomendasi.hasil');
Route::get('/rekomendasi/detail/{waktuMakan}', [RekomendasiController::class, 'tampilDetail'])->name('rekomendasi.detail');
});
// Rekomendasi routes
Route::get('/rekomendasi', [RekomendasiController::class, 'index'])->name('rekomendasi.index');
Route::get('/rekomendasi/{waktu_makan}', [RekomendasiController::class, 'detail'])->name('rekomendasi.detail');
// User Routes (Hanya bisa diakses oleh User)
Route::middleware(['cekrole:user'])->group(function () {
Route::get('/userdash', [UserController::class, 'userdash'])->name('userdash');
Route::get('/userabout', [UserController::class, 'userabout'])->name('userabout');
Route::get('/userresult', [UserController::class, 'userresult'])->name('userresult');
Route::get('/userfeature', [UserController::class, 'userfeature'])->name('userfeature');
Route::get('/userdata', [UserController::class, 'userdata'])->name('userdata');
Route::get('/userfeatures/{id}', [UserController::class, 'show'])->name('userfeatures.show');
Route::get('/user/makanan', [UserController::class, 'userdata'])->name('user.makanan');
Route::get('/userregister', [UserController::class, 'userregister'])->name('userregister');
Route::get('/user/profile', [ProfileController::class, 'userprofile'])->name('user.profile');
Route::patch('/user/profile', [ProfileController::class, 'userupdate'])->name('user.update');
Route::patch('/user/password', [ProfileController::class, 'userpassword'])->name('user.password');
});
// Routes untuk simulasi user
Route::middleware(['auth', 'cekrole:user'])->group(function () {
Route::get('/user/simulasi', [SimulasiController::class, 'index'])->name('user.simulasi.index');
Route::get('/user/simulasi/get-makanan/{komponen}/{waktuMakan}', [SimulasiController::class, 'getMakananByKomponen']);
Route::post('/user/simulasi/proses', [SimulasiController::class, 'prosesSimulasi'])->name('user.simulasi.proses');
Route::get('/user/simulasi/hasil', [SimulasiController::class, 'hasil'])->name('user.simulasi.hasil');
Route::get('/user/simulasi/history', [SimulasiController::class, 'history'])->name('user.simulasi.history');
Route::get('/user/simulasi/history/{id}', [SimulasiController::class, 'detailHistory'])->name('user.simulasi.detail-history');
// Routes untuk alert settings
Route::get('/user/alert-settings', [AlertSettingController::class, 'index'])->name('user.alert-settings');
Route::post('/user/alert-settings', [AlertSettingController::class, 'update'])->name('user.alert-settings.update');
Route::post('/user/alert-settings/toggle', [AlertSettingController::class, 'toggle'])->name('user.alert-settings.toggle');
Route::get('/user/alert-settings/get-alerts', [AlertSettingController::class, 'getCurrentAlerts'])->name('user.alert-settings.get-alerts');
Route::get('/user/alert-settings/test', [AlertSettingController::class, 'testAlert'])->name('user.alert-settings.test');
// Routes untuk notifikasi
Route::get('/user/notifications', [NotificationController::class, 'index'])->name('user.notifications');
Route::post('/user/notifications/{id}/mark-read', [NotificationController::class, 'markAsRead'])->name('user.notifications.mark-read');
Route::post('/user/notifications/mark-all-read', [NotificationController::class, 'markAllAsRead'])->name('user.notifications.mark-all-read');
Route::delete('/user/notifications/{id}', [NotificationController::class, 'delete'])->name('user.notifications.delete');
Route::get('/user/notifications/unread-count', [NotificationController::class, 'getUnreadCount'])->name('user.notifications.unread-count');
Route::get('/user/notifications/latest', [NotificationController::class, 'getLatestNotifications'])->name('user.notifications.latest');
Route::post('/user/notifications/test', [NotificationController::class, 'testNotification'])->name('user.notifications.test');
Route::post('/user/notifications/test-browser', [NotificationController::class, 'testBrowserNotification'])->name('user.notifications.test-browser');
Route::post('/user/notifications/send-background', [NotificationController::class, 'sendBackgroundNotification'])->name('user.notifications.send-background');
Route::get('/user/notifications/available-sounds', [NotificationController::class, 'getAvailableSounds'])->name('user.notifications.available-sounds');
// Routes untuk timezone
Route::get('/user/timezone', [TimezoneController::class, 'index'])->name('user.timezone');
Route::post('/user/timezone', [TimezoneController::class, 'update'])->name('user.timezone.update');
Route::get('/user/timezone/current-time', [TimezoneController::class, 'getCurrentTime'])->name('user.timezone.current-time');
});
// Landing Page Routes
Route::get('/', [LandingPageController::class, 'lp'])->name('lp');
// Auth Routes
Route::get('/login', [LoginController::class, 'login'])->name('login');
Route::post('/login', [LoginController::class, 'loginPost'])->name('login.post');
Route::post('/logout', [LoginController::class, 'logout'])->name('logout');
// Register Routes
Route::get('/register', [ RegisterController::class, 'register'])->name('register');
Route::post('/register', [RegisterController::class, 'registerPost'])->name('register.post');
// New route for AHP history
Route::middleware(['auth', 'cekrole:admin'])->group(function () {
Route::get('/history-ahp', [HistoryAHPController::class, 'index'])->name('history.ahp');
});
// Rekomendasi Ahli routes (admin only)
Route::middleware(['cekrole:admin'])->group(function () {
Route::get('/rekomendasi-ahli', [\App\Http\Controllers\RekomendasiAhliController::class, 'index'])->name('rekomendasi_ahli.index');
Route::get('/rekomendasi-ahli/create', [\App\Http\Controllers\RekomendasiAhliController::class, 'create'])->name('rekomendasi_ahli.create');
Route::post('/rekomendasi-ahli', [\App\Http\Controllers\RekomendasiAhliController::class, 'store'])->name('rekomendasi_ahli.store');
Route::get('/rekomendasi-ahli/{id}/edit', [\App\Http\Controllers\RekomendasiAhliController::class, 'edit'])->name('rekomendasi_ahli.edit');
Route::put('/rekomendasi-ahli/{id}', [\App\Http\Controllers\RekomendasiAhliController::class, 'update'])->name('rekomendasi_ahli.update');
Route::delete('/rekomendasi-ahli/{id}', [\App\Http\Controllers\RekomendasiAhliController::class, 'destroy'])->name('rekomendasi_ahli.destroy');
});
// Routes untuk validasi rekomendasi
Route::middleware(['cekrole:admin'])->group(function () {
Route::get('/validasi', [ValidasiRekomendasiController::class, 'index'])->name('validasi.index');
Route::post('/validasi/bandingkan', [ValidasiRekomendasiController::class, 'bandingkan'])->name('validasi.bandingkan');
Route::get('/validasi/export', [ValidasiRekomendasiController::class, 'exportExcel'])->name('validasi.export');
});