Files

115 lines
10 KiB
PHP

<?php
use App\Http\Controllers\AcademicYearController;
use App\Http\Controllers\Api\RegionController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\DepartmentController;
use App\Http\Controllers\DocumentTypeController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\PublicStudentLookupController;
use App\Http\Controllers\PublicStudentSelfServiceController;
use App\Http\Controllers\SchoolClassController;
use App\Http\Controllers\StudentController;
use App\Http\Controllers\MaintenanceController;
use App\Http\Controllers\BrandingSettingController;
use App\Http\Controllers\StudentParentController;
use App\Http\Controllers\StudentDocumentController;
use App\Http\Controllers\StudentExitController;
use App\Http\Controllers\StudentTransferController;
use App\Http\Controllers\GraduatedStudentController;
use App\Http\Controllers\GraduationBulkUploadController;
use App\Http\Controllers\StudentPromotionController;
use App\Http\Controllers\StudentSelfServiceController;
use App\Http\Controllers\StudentAchievementController;
use App\Http\Controllers\SyncTokenController;
use App\Http\Controllers\UserManagementController;
use Illuminate\Support\Facades\Route;
Route::get('/', [PublicStudentLookupController::class, 'index'])->name('public.student-lookup');
Route::get('/lengkapi-data-siswa', [PublicStudentSelfServiceController::class, 'index'])->name('public.student-self-service.index');
Route::post('/lengkapi-data-siswa/verifikasi', [PublicStudentSelfServiceController::class, 'verify'])->name('public.student-self-service.verify');
Route::get('/lengkapi-data-siswa/form', [PublicStudentSelfServiceController::class, 'edit'])->name('public.student-self-service.edit');
Route::post('/lengkapi-data-siswa/form', [PublicStudentSelfServiceController::class, 'update'])->name('public.student-self-service.update');
Route::redirect('/admin-akses-rahasia', '/masuk-admin');
Route::redirect('/portal-admin-dk-login', '/masuk-admin');
Route::redirect('/masuk-admin-rahasia', '/masuk-admin')->name('hidden-login');
Route::get('public/student-documents/{document}/preview', [StudentDocumentController::class, 'publicPreview'])->name('public.students.documents.preview');
Route::get('public/student-documents/{document}/download', [StudentDocumentController::class, 'publicDownload'])->name('public.students.documents.download');
Route::get('public/students/{student}/graduation-documents/{document}/download', [PublicStudentLookupController::class, 'downloadGraduationDocument'])->name('public.students.graduation-documents.download');
Route::get('regions/provinces/{province}/regencies', [RegionController::class, 'regencies'])->name('regions.regencies');
Route::get('regions/regencies/{regency}/districts', [RegionController::class, 'districts'])->name('regions.districts');
Route::get('regions/districts/{district}/villages', [RegionController::class, 'villages'])->name('regions.villages');
Route::middleware(['auth', 'verified'])->group(function () {
Route::get('/dashboard', DashboardController::class)->name('dashboard');
Route::middleware('role:admin')->group(function () {
Route::resource('academic-years', AcademicYearController::class);
Route::get('departments/import/template', [DepartmentController::class, 'downloadImportTemplate'])->name('departments.import.template');
Route::post('departments/import/preview', [DepartmentController::class, 'previewImport'])->name('departments.import.preview');
Route::post('departments/import', [DepartmentController::class, 'import'])->name('departments.import');
Route::resource('departments', DepartmentController::class);
Route::get('classes/import/template', [SchoolClassController::class, 'downloadImportTemplate'])->name('classes.import.template');
Route::post('classes/import/preview', [SchoolClassController::class, 'previewImport'])->name('classes.import.preview');
Route::post('classes/import', [SchoolClassController::class, 'import'])->name('classes.import');
Route::post('classes/generate', [SchoolClassController::class, 'generate'])->name('classes.generate');
Route::delete('classes/bulk-delete', [SchoolClassController::class, 'bulkDestroy'])->name('classes.bulk-destroy');
Route::resource('classes', SchoolClassController::class);
Route::post('document-types/{documentType}/purge-archived-documents', [DocumentTypeController::class, 'purgeArchivedDocuments'])->name('document-types.purge-archived-documents');
Route::resource('document-types', DocumentTypeController::class);
Route::prefix('settings')->name('settings.')->group(function () {
Route::resource('users', UserManagementController::class)->except(['show']);
Route::get('branding', [BrandingSettingController::class, 'index'])->name('branding.index');
Route::put('branding', [BrandingSettingController::class, 'update'])->name('branding.update');
Route::get('sync-tokens', [SyncTokenController::class, 'index'])->name('sync-tokens.index');
Route::post('sync-tokens', [SyncTokenController::class, 'store'])->name('sync-tokens.store');
Route::patch('sync-tokens/{syncToken}/revoke', [SyncTokenController::class, 'revoke'])->name('sync-tokens.revoke');
Route::get('reset-data', [MaintenanceController::class, 'index'])->name('reset-data.index');
Route::post('reset-data', [MaintenanceController::class, 'reset'])->name('reset-data.execute');
});
});
Route::get('students/keluar', [StudentExitController::class, 'index'])->name('student-exits.index');
Route::get('students/keluar/{studentExit}', [StudentExitController::class, 'show'])->name('student-exits.show');
Route::patch('students/keluar/{studentExit}', [StudentExitController::class, 'update'])->name('student-exits.update');
Route::get('students/keluar/{studentExit}/preview-letter', [StudentExitController::class, 'previewLetter'])->name('student-exits.preview-letter');
Route::get('students/mutasi', [StudentTransferController::class, 'index'])->name('student-transfers.index');
Route::get('students/mutasi/{studentTransfer}', [StudentTransferController::class, 'show'])->name('student-transfers.show');
Route::patch('students/mutasi/{studentTransfer}', [StudentTransferController::class, 'update'])->name('student-transfers.update');
Route::get('students/mutasi/{studentTransfer}/preview-letter', [StudentTransferController::class, 'previewLetter'])->name('student-transfers.preview-letter');
Route::get('students/lulus', [GraduatedStudentController::class, 'index'])->name('graduated-students.index');
Route::get('students/lulus/bulk-upload', [GraduationBulkUploadController::class, 'index'])->name('graduated-students.bulk-upload.index');
Route::post('students/lulus/bulk-upload/preview', [GraduationBulkUploadController::class, 'preview'])->name('graduated-students.bulk-upload.preview');
Route::post('students/lulus/bulk-upload/preview-ajax', [GraduationBulkUploadController::class, 'previewAjax'])->name('graduated-students.bulk-upload.preview-ajax');
Route::post('students/lulus/bulk-upload', [GraduationBulkUploadController::class, 'store'])->name('graduated-students.bulk-upload.store');
Route::get('students/lulus/{graduatedStudent}', [GraduatedStudentController::class, 'show'])->name('graduated-students.show');
Route::patch('students/lulus/{graduatedStudent}', [GraduatedStudentController::class, 'update'])->name('graduated-students.update');
Route::get('students/lulus/{graduatedStudent}/preview-document/{document}', [GraduatedStudentController::class, 'previewDocument'])->name('graduated-students.preview-document');
Route::get('students/import', [StudentController::class, 'importForm'])->name('students.import.form');
Route::post('students/import/preview', [StudentController::class, 'previewImport'])->name('students.import.preview');
Route::post('students/import', [StudentController::class, 'import'])->name('students.import');
Route::get('students/import/template', [StudentController::class, 'downloadImportTemplate'])->name('students.import.template');
Route::get('students/import/example', [StudentController::class, 'downloadImportExample'])->name('students.import.example');
Route::delete('students/bulk-delete', [StudentController::class, 'bulkDestroy'])->name('students.bulk-destroy');
Route::resource('students', StudentController::class);
Route::get('student-promotions', [StudentPromotionController::class, 'index'])->name('student-promotions.index');
Route::post('student-promotions', [StudentPromotionController::class, 'store'])->name('student-promotions.store');
Route::resource('student-achievements', StudentAchievementController::class)->except(['show']);
Route::get('student-self-service', [StudentSelfServiceController::class, 'index'])->name('student-self-service.index');
Route::post('student-self-service/generate-missing-codes', [StudentSelfServiceController::class, 'generateMissingCodes'])->name('student-self-service.generate-missing-codes');
Route::post('student-self-service/regenerate-all-codes', [StudentSelfServiceController::class, 'regenerateAllCodes'])->name('student-self-service.regenerate-all-codes');
Route::post('student-self-service/{student}/regenerate-code', [StudentSelfServiceController::class, 'regenerateStudentCode'])->name('student-self-service.regenerate-student-code');
Route::get('student-self-service/export-class-codes', [StudentSelfServiceController::class, 'exportClassCodes'])->name('student-self-service.export-class-codes');
Route::resource('students.parents', StudentParentController::class)->except(['index', 'show']);
Route::resource('students.documents', StudentDocumentController::class)->except(['index', 'show']);
Route::post('students/{student}/documents/{document}/quick-verify', [StudentDocumentController::class, 'quickVerify'])->name('students.documents.quick-verify');
Route::get('student-documents/{document}/preview', [StudentDocumentController::class, 'preview'])->name('students.documents.preview');
Route::get('student-documents/{document}/download', [StudentDocumentController::class, 'download'])->name('students.documents.download');
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
});
require __DIR__.'/auth.php';