name('home'); Route::get('/permohonan/{application:public_uuid}/berjaya', [PublicApplicationController::class, 'success']) ->name('public.applications.success'); Route::get('/permohonan/{publicUuid}/status', [PublicApplicationController::class, 'status']) ->name('public.applications.status'); Route::get('/pohon/{pusatMengundi:public_uuid}', [PublicApplicationController::class, 'create']) ->name('public.applications.create'); Route::post('/pohon/{pusatMengundi:public_uuid}', [PublicApplicationController::class, 'store']) ->name('public.applications.store'); Route::middleware('auth')->group(function () { Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard'); Route::get('/admin/dashboard', [DashboardController::class, 'admin']) ->middleware('role:Admin') ->name('admin.dashboard'); Route::get('/kewangan/dashboard', [DashboardController::class, 'kewangan']) ->middleware('role:Admin Kewangan') ->name('kewangan.dashboard'); Route::get('/ppm/dashboard', [DashboardController::class, 'ppm']) ->middleware('role:PPM') ->name('ppm.dashboard'); Route::get('/ktm/dashboard', [DashboardController::class, 'ktm']) ->middleware('role:KTM') ->name('ktm.dashboard'); Route::get('/pemohon/dashboard', [DashboardController::class, 'pemohon']) ->middleware('role:Pemohon') ->name('pemohon.dashboard'); 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'); }); Route::middleware(['auth', 'role:Admin']) ->prefix('admin/setup') ->name('admin.setup.') ->group(function (): void { Route::get('/', [AdminSetupController::class, 'index'])->name('index'); Route::get('import', [PusatImportController::class, 'create'])->name('import.create'); Route::post('import', [PusatImportController::class, 'store'])->name('import.store'); Route::resource('pusat', PusatMengundiController::class) ->parameters(['pusat' => 'pusatMengundi']); Route::post('pusat/{pusatMengundi}/generate-qr', [PusatMengundiController::class, 'generateQr']) ->name('pusat.generate-qr'); Route::get('pusat/{pusatMengundi}/qr.svg', [PusatMengundiController::class, 'qrSvg']) ->name('pusat.qr-svg'); Route::post('pusat/{pusatMengundi}/assign-ppm', [PusatMengundiController::class, 'assignPpm']) ->name('pusat.assign-ppm'); Route::resource('pusat.saluran', SaluranMengundiController::class) ->parameters(['pusat' => 'pusatMengundi', 'saluran' => 'saluranMengundi']) ->except(['show']); Route::resource('positions', PositionController::class) ->except(['show']); Route::resource('pusat.kuota', PusatLevelQuotaController::class) ->parameters(['pusat' => 'pusatMengundi', 'kuota' => 'quota']) ->except(['show']); Route::resource('pusat.saluran.kuota', PositionQuotaController::class) ->parameters(['pusat' => 'pusatMengundi', 'saluran' => 'saluranMengundi', 'kuota' => 'quota']) ->except(['show']); Route::get('settings/{election}', [ElectionSettingsController::class, 'edit']) ->name('settings.edit'); Route::post('settings/{election}', [ElectionSettingsController::class, 'store']) ->name('settings.store'); Route::patch('settings/{election}', [ElectionSettingsController::class, 'update']) ->name('settings.update'); }); Route::middleware(['auth', 'role:Admin', 'admin.post_close_note']) ->prefix('admin/management') ->name('admin.management.') ->group(function (): void { Route::get('/', [AdminManagementController::class, 'index'])->name('index'); Route::get('/applications', [ManagedApplicationController::class, 'index'])->name('applications.index'); Route::get('/applications/create', [ManagedApplicationController::class, 'create'])->name('applications.create'); Route::post('/applications', [ManagedApplicationController::class, 'store'])->name('applications.store'); Route::get('/applications/{application:public_uuid}/edit', [ManagedApplicationController::class, 'edit'])->name('applications.edit'); Route::patch('/applications/{application:public_uuid}', [ManagedApplicationController::class, 'update'])->name('applications.update'); Route::post('/applications/{application:public_uuid}/assign', [ManagedApplicationController::class, 'assign'])->name('applications.assign'); Route::get('/assignments', [StaffAssignmentController::class, 'index'])->name('assignments.index'); Route::get('/assignments/{assignment}/edit', [StaffAssignmentController::class, 'edit'])->name('assignments.edit'); Route::patch('/assignments/{assignment}', [StaffAssignmentController::class, 'update'])->name('assignments.update'); Route::get('/representatives', [RepresentativeController::class, 'index'])->name('representatives.index'); Route::post('/representatives', [RepresentativeController::class, 'store'])->name('representatives.store'); Route::delete('/representatives/{type}/{id}', [RepresentativeController::class, 'destroy'])->name('representatives.destroy'); Route::get('/penempatan/{pusatMengundi}', [PennempatanController::class, 'show'])->name('penempatan.show'); Route::post('/penempatan/{pusatMengundi}/lepas/{assignment}', [PennempatanController::class, 'lepas'])->name('penempatan.lepas'); Route::get('/penempatan/{pusatMengundi}/pindah/{assignment}', [PennempatanController::class, 'pindahForm'])->name('penempatan.pindah.form'); Route::post('/penempatan/{pusatMengundi}/pindah/{assignment}', [PennempatanController::class, 'pindah'])->name('penempatan.pindah'); Route::get('/wheelchairs', [WheelchairController::class, 'index'])->name('wheelchairs.index'); Route::post('/wheelchairs', [WheelchairController::class, 'store'])->name('wheelchairs.store'); Route::get('/wheelchairs/{allocation}', [WheelchairController::class, 'show'])->name('wheelchairs.show'); Route::patch('/wheelchairs/{allocation}', [WheelchairController::class, 'update'])->name('wheelchairs.update'); Route::post('/wheelchairs/{allocation}/ambil', [WheelchairController::class, 'recordTaken'])->name('wheelchairs.ambil'); Route::post('/wheelchairs/{allocation}/pulang', [WheelchairController::class, 'recordReturn'])->name('wheelchairs.pulang'); }); Route::middleware(['auth', 'role:Admin']) ->prefix('admin/attendance') ->name('admin.attendance.') ->group(function (): void { Route::get('/', [AdminAttendanceController::class, 'index'])->name('index'); Route::get('/{pusatMengundi}', [AdminAttendanceController::class, 'show'])->name('show'); Route::get('/{pusatMengundi}/export', [AdminAttendanceController::class, 'export'])->name('export'); }); Route::middleware(['auth', 'role:Admin']) ->prefix('admin/documents') ->name('admin.documents.') ->group(function (): void { Route::get('/{document}', [DocumentDownloadController::class, 'admin'])->name('download'); }); Route::middleware(['auth', 'role:Admin Kewangan|Admin']) ->prefix('kewangan') ->name('kewangan.') ->group(function (): void { Route::get('/bank', [BankVerificationController::class, 'index'])->name('bank.index'); Route::get('/bank/export', [BankVerificationController::class, 'export'])->name('bank.export'); Route::get('/bank/{bankVerification}', [BankVerificationController::class, 'show'])->name('bank.show'); Route::patch('/bank/{bankVerification}', [BankVerificationController::class, 'update'])->name('bank.update'); Route::get('/documents/{document}', [DocumentDownloadController::class, 'finance'])->name('documents.download'); }); Route::middleware(['auth', 'role:PPM']) ->prefix('ppm') ->name('ppm.') ->group(function (): void { Route::get('/applications', [PpmApplicationReviewController::class, 'index']) ->name('applications.index'); Route::get('/applications/{application:public_uuid}', [PpmApplicationReviewController::class, 'show']) ->name('applications.show'); Route::post('/applications/{application:public_uuid}/approve', [PpmApplicationReviewController::class, 'approve']) ->name('applications.approve'); Route::post('/applications/{application:public_uuid}/reject', [PpmApplicationReviewController::class, 'reject']) ->name('applications.reject'); Route::get('/applications/{application:public_uuid}/documents/{document}', [PpmApplicationReviewController::class, 'downloadDocument']) ->name('applications.documents.download'); Route::get('/attendance', [PpmAttendanceController::class, 'index']) ->name('attendance.index'); Route::get('/attendance/{pusatMengundi}', [PpmAttendanceController::class, 'show']) ->name('attendance.show'); Route::post('/attendance/{pusatMengundi}', [PpmAttendanceController::class, 'store']) ->name('attendance.store'); }); Route::middleware(['auth', 'role:KTM']) ->prefix('ktm') ->name('ktm.') ->group(function (): void { Route::get('/applications', [KtmTeamController::class, 'index']) ->name('applications.index'); Route::get('/applications/create', [KtmTeamController::class, 'create']) ->name('applications.create'); Route::post('/applications', [KtmTeamController::class, 'store']) ->name('applications.store'); Route::get('/applications/{application:public_uuid}', [KtmTeamController::class, 'show']) ->name('applications.show'); Route::post('/applications/{application:public_uuid}/approve', [KtmTeamController::class, 'approve']) ->name('applications.approve'); Route::delete('/applications/{application:public_uuid}', [KtmTeamController::class, 'destroy']) ->name('applications.destroy'); }); require __DIR__.'/auth.php';