MIF_E31221420/routes/web.php

386 lines
15 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
use App\Http\Controllers\Auth\LoginController;
use App\Http\Controllers\Auth\RegisterController;
use App\Http\Controllers\User\BerkasController;
use App\Http\Controllers\Admin\DashboardController as AdminDashboard;
use App\Http\Controllers\User\DashboardController as UserDashboard;
use App\Http\Controllers\User\ProfileController;
use App\Http\Controllers\User\JadwalController;
use App\Http\Controllers\User\HasilController;
use App\Http\Controllers\Admin\LandingPageController;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Juri\DashboardJuriController;
use App\Http\Controllers\Juri\PesertaController;
use App\Http\Controllers\Juri\JadwalJuriController;
use App\Http\Controllers\Juri\PresentasiController;
use App\Http\Controllers\Admin\ManajemenAkunController;
use App\Http\Controllers\Admin\VerifikasiBerkasController;
use App\Http\Controllers\Admin\BidangCuController;
use App\Http\Controllers\LandingController;
use App\Http\Controllers\Admin\LevelCuController;
use App\Http\Controllers\Admin\KategoriCuController;
use App\Http\Controllers\Admin\CuVerificationController;
use App\Http\Controllers\Admin\CuSelectionController;
use App\Http\Controllers\Admin\SchedulePiBiController;
use App\Http\Controllers\Admin\BobotKriteriaController;
use App\Http\Controllers\Admin\PenilaianAkhirController;
use App\Http\Controllers\Juri\PenilaianJuriController;
use App\Http\Controllers\Admin\RekapTahunanController;
use App\Exports\RekapTahunanExport;
use Maatwebsite\Excel\Facades\Excel;
use App\Models\RekapPenilaianTahunan;
use Barryvdh\DomPDF\Facade\Pdf;
Route::get('/', [LandingController::class, 'index'])->name('landing');
Route::get('/admin/rekap/export/{tahun}', function ($tahun) {
return Excel::download(new RekapTahunanExport($tahun), 'rekap_'.$tahun.'.xlsx');
})->name('admin.rekap.export');
Route::get('/admin/rekap/pdf/{tahun}', function ($tahun) {
$rekap = RekapPenilaianTahunan::with('peserta.user')
->where('tahun', $tahun)
->orderByDesc('total_akhir')
->get();
$pdf = Pdf::loadView('exports.rekap_pdf', compact('rekap', 'tahun'))
->setPaper('A4', 'landscape');
return $pdf->download('rekap_' . $tahun . '.pdf');
})->name('admin.rekap.pdf');
// Halaman Login
Route::get('/login', [LoginController::class, 'showLoginForm'])->name('login');
Route::post('/login', [LoginController::class, 'login'])->name('login.submit');
Route::post('/logout', [LoginController::class, 'logout'])->name('logout');
Route::get('/register', [RegisterController::class, 'showRegistrationForm'])->name('register');
Route::post('/register', [RegisterController::class, 'register'])->name('register.submit');
Route::prefix('admin')->group(function () {
Route::get('/landing-page', [LandingPageController::class, 'index'])->name('admin.landing-page.index');
});
// Middleware User
Route::middleware(['auth'])->group(function () {
Route::get('/dashboard', [UserDashboard::class, 'index'])->name('user.dashboard');
});
//Middleware Juri
Route::middleware([\App\Http\Middleware\JuriMiddleware::class])->group(function () {
Route::get('/juri/dashboard', [DashboardJuriController::class, 'index'])->name('juri.dashboard');
});
Route::middleware(['auth'])->group(function () {
Route::get('/juri/peserta', [PesertaController::class, 'index'])->name('juri.peserta');
});
Route::middleware(['auth'])->group(function () {
Route::get('/juri/presentasi', [PresentasiController::class, 'index'])->name('juri.presentasi');
});
Route::middleware(['auth'])
->prefix('admin')
->name('admin.')
->group(function(){
// Dashboard
Route::get('/dashboard', [AdminDashboard::class,'index'])->name('dashboard');
Route::delete('/dashboard/submission/{id}', [AdminDashboard::class, 'destroySubmission'])
->name('dashboard.destroySubmission');
// Landing page overview
Route::get('/landing-page', [LandingPageController::class, 'index'])->name('landing-page.index');
// Hero Slide Routes
Route::post('/hero-slides', [LandingPageController::class, 'storeHeroSlide'])->name('hero-slides.store');
Route::put('/hero-slides/{heroSlide}', [LandingPageController::class, 'updateHeroSlide'])->name('hero-slides.update');
Route::delete('/hero-slides/{heroSlide}', [LandingPageController::class, 'destroyHeroSlide'])->name('hero-slides.destroy');
Route::post('/purposes', [LandingPageController::class, 'storePurpose'])->name('purposes.store');
Route::put('/purposes/{purpose}', [LandingPageController::class, 'updatePurpose'])->name('purposes.update');
Route::delete('/purposes/{purpose}', [LandingPageController::class, 'destroyPurpose'])->name('purposes.destroy');
Route::post('/requirements', [LandingPageController::class, 'storeRequirement'])->name('requirements.store');
Route::put('/requirements/{requirement}', [LandingPageController::class, 'updateRequirement'])->name('requirements.update');
Route::delete('/requirements/{requirement}', [LandingPageController::class, 'destroyRequirement'])->name('requirements.destroy');
Route::post('/schedules', [LandingPageController::class, 'storeSchedule'])->name('schedules.store');
Route::put('/schedules/{schedule}', [LandingPageController::class, 'updateSchedule'])->name('schedules.update');
Route::delete('/schedules/{schedule}', [LandingPageController::class, 'destroySchedule'])->name('schedules.destroy');
Route::get('manajemen-akun', [ManajemenAkunController::class, 'index'])
->name('manajemen-akun');
Route::post('/penilaian-akhir/simpan-rekap', [PenilaianAkhirController::class, 'rekapTahunan'])
->name('penilaian-akhir.rekap');
Route::get('/rekapitulasi-tahunan', [RekapTahunanController::class, 'index'])->name('rekap.index');
Route::get('/rekapitulasi-tahunan/{tahun}', [RekapTahunanController::class, 'show'])->name('rekap.show');
});
Route::prefix('admin')
->name('admin.')
->middleware('auth') // atau hilangkan sama sekali jika tidak perlu auth
->group(function () {
// Daftar Bidang CU
Route::get('bidang-cu', [BidangCuController::class, 'index'])
->name('bidang-cu.index');
// Form tambah
Route::get('bidang-cu/create', [BidangCuController::class, 'create'])
->name('bidang-cu.create');
// Simpan data baru
Route::post('bidang-cu', [BidangCuController::class, 'store'])
->name('bidang-cu.store');
// Form edit
Route::get('bidang-cu/{bidangCu}/edit', [BidangCuController::class, 'edit'])
->name('bidang-cu.edit');
// Update data
Route::put('bidang-cu/{bidangCu}', [BidangCuController::class, 'update'])
->name('bidang-cu.update');
// Hapus data
Route::delete('bidang-cu/{bidangCu}', [BidangCuController::class, 'destroy'])
->name('bidang-cu.destroy');
});
Route::prefix('admin')
->name('admin.')
->middleware('auth')
->group(function(){
// Level CU
Route::get ('level-cu', [LevelCuController::class,'index']) ->name('level-cu.index');
Route::post ('level-cu', [LevelCuController::class,'store']) ->name('level-cu.store');
Route::put ('level-cu/{level}', [LevelCuController::class,'update']) ->name('level-cu.update');
Route::delete('level-cu/{level}', [LevelCuController::class,'destroy'])->name('level-cu.destroy');
});
Route::prefix('admin')
->name('admin.')
->middleware('auth')
->group(function(){
// Kategori CU
Route::get ('kategori-cu', [KategoriCuController::class,'index']) ->name('kategori-cu.index');
Route::post ('kategori-cu', [KategoriCuController::class,'store']) ->name('kategori-cu.store');
Route::put ('kategori-cu/{kategoriCu}', [KategoriCuController::class,'update']) ->name('kategori-cu.update');
Route::delete ('kategori-cu/{kategoriCu}', [KategoriCuController::class,'destroy'])->name('kategori-cu.destroy');
});
// routes/web.php
Route::middleware('auth')
->prefix('admin')
->name('admin.')
->group(function(){
Route::get('cu-verification', [CuVerificationController::class,'index'])
->name('verification.index');
Route::post('cu-verification/{submission}/approve',[CuVerificationController::class,'approve'])
->name('verification.approve');
Route::post('cu-verifikasi/{submission}/reject',[CuVerificationController::class,'reject'])
->name('verification.reject');
Route::get('admin/cu-verification/{submission}/reject', function () {
return redirect()->route('admin.verification.index');
});
});
Route::prefix('admin')->name('admin.')->group(function(){
// daftar CU selection
Route::get('cu-selection', [CuSelectionController::class,'index'])
->name('cu_selection.index');
// update status by peserta_id
Route::patch('cu-selection/{peserta_id}/status',
[CuSelectionController::class,'updateStatus'])
->name('cu_selection.update_status');
// detail per peserta (AJAX)
Route::get('cu-selection/{peserta_id}/detail',
[CuSelectionController::class,'showDetail'])
->name('cu_selection.detail');
});
Route::prefix('admin')
->name('admin.')
->middleware('auth') // sesuaikan middleware kamu
->group(function () {
// Men-generate semua route: index, create, store, show, edit, update, destroy
Route::resource('schedules', SchedulePiBiController::class)
->parameters(['schedules' => 'id']);
// Jika kamu tidak perlu show(), kamu bisa kecualikan:
// Route::resource('schedules', SchedulePiBiController::class)
// ->except(['show']);
});
Route::prefix('admin')->name('admin.')
->middleware('auth')
->group(function(){
Route::resource('schedules', SchedulePiBiController::class)
->except(['show']);
Route::get('schedules/{schedule}/detail',
[SchedulePiBiController::class,'detail'])
->name('schedules.detail');
});
Route::middleware('auth')->prefix('admin')->name('admin.')->group(function(){
Route::get('bobot-kriteria', [BobotKriteriaController::class, 'index'])
->name('bobot-kriteria.index');
Route::get('bobot-kriteria/{nama}/edit', [BobotKriteriaController::class, 'edit'])
->name('bobot-kriteria.edit');
Route::put('bobot-kriteria/{nama}', [BobotKriteriaController::class, 'update'])
->name('bobot-kriteria.update');
Route::post('bobot-kriteria', [BobotKriteriaController::class, 'store'])
->name('bobot-kriteria.store');
});
Route::middleware('auth')
->prefix('admin')
->name('admin.')
->group(function(){
// ...
Route::get('penilaian-akhir', [PenilaianAkhirController::class, 'index'])
->name('penilaian-akhir.index');
Route::delete('/penilaian-akhir/{id}', [PenilaianAkhirController::class, 'destroy'])
->name('penilaian-akhir.destroy');
});
// routes/web.php
// ... import controller di atas
Route::middleware('auth')
->prefix('juri')
->name('juri.')
->group(function(){
// Dashboard
Route::get('dashboard', [DashboardJuriController::class,'index'])
->name('dashboard');
// Peserta, Jadwal, Presentasi...
Route::get('peserta', [PesertaController::class,'index'])->name('peserta');
Route::get('jadwal', [JadwalJuriController::class,'index'])->name('jadwal');
Route::get('presentasi',[PresentasiController::class,'index'])->name('presentasi');
// Penilaian: index + create/store PI/BI
Route::get('penilaian', [PenilaianJuriController::class,'index'])->name('penilaian.index');
Route::get('penilaian/pi/{schedule}', [PenilaianJuriController::class,'createPi'])->name('penilaian.pi.create');
Route::post('penilaian/pi/{schedule}', [PenilaianJuriController::class,'storePi'])->name('penilaian.pi.store');
Route::get('penilaian/bi/{schedule}', [PenilaianJuriController::class,'createBi'])->name('penilaian.bi.create');
Route::post('penilaian/bi/{schedule}', [PenilaianJuriController::class,'storeBi'])->name('penilaian.bi.store');
});
Route::middleware('auth')->group(function () {
Route::resource('berkas', BerkasController::class)
->only(['index','create','store','show']);
Route::delete('/berkas/{berkas}', [BerkasController::class, 'destroy'])
->name('berkas.destroy');
});
Route::middleware('auth')
->prefix('user')
->name('user.profile.')
->group(function () {
// Tampilkan form (upload file + data)
Route::get('profile', [ProfileController::class, 'form'])
->name('form');
// Endpoint khusus untuk upload pas_foto & surat_pengantar
Route::post('profile/upload-files', [ProfileController::class, 'uploadFiles'])
->name('uploadFiles');
// Simpan seluruh data profil (setelah file terupload)
Route::post('profile', [ProfileController::class, 'save'])
->name('save');
});
Route::middleware('auth')->group(function() {
// Halaman hasil perhitungan
Route::get('profile/hasil', [HasilController::class, 'index'])
->name('profile.hasil');
});
Route::middleware('auth')->prefix('user')->group(function() {
Route::get('jadwal-pelaksanaan', [JadwalController::class, 'index'])
->name('user.jadwal');
});
Route::prefix('juri')
->middleware('auth')
->name('juri.')
->group(function() {
Route::get('jadwal', [JadwalJuriController::class, 'index'])
->name('jadwal.index');
});
Route::prefix('juri')
->middleware('auth')
->name('juri.')
->group(function() {
// daftar peserta
Route::get('peserta', [\App\Http\Controllers\Juri\PesertaController::class, 'index'])
->name('peserta.index');
// detail peserta
Route::get('peserta/{id}', [\App\Http\Controllers\Juri\PesertaController::class, 'show'])
->name('peserta.show');
});
// routes/web.php
Route::middleware('auth')->prefix('admin')->name('admin.')->group(function(){
Route::resource('manajemen-akun', \App\Http\Controllers\Admin\ManajemenAkunController::class);
});
// routes/web.php
Route::middleware('auth')
->prefix('admin/landing-page')
->name('landing-page.')
->group(function(){
// Schedule Methods untuk Landing Page
Route::post('/schedules',
[\App\Http\Controllers\Admin\LandingPageController::class, 'storeSchedule']
)->name('schedules.store');
Route::put('/schedules/{schedule}',
[\App\Http\Controllers\Admin\LandingPageController::class, 'updateSchedule']
)->name('schedules.update');
Route::delete('/schedules/{schedule}',
[\App\Http\Controllers\Admin\LandingPageController::class, 'destroySchedule']
)->name('schedules.destroy');
});