fix teacher and parent routes
This commit is contained in:
+190
@@ -118,6 +118,7 @@ use App\Http\Controllers\Api\Documentation\ApiDocsAdminController;
|
||||
use App\Http\Controllers\Api\Documentation\DocsCatalogController;
|
||||
use App\Http\Controllers\Api\Parents\AuthorizedUserInviteController;
|
||||
use App\Http\Controllers\Api\Public\PublicWinnersController;
|
||||
use App\Http\Controllers\Api\ScannerController;
|
||||
use App\Http\Controllers\Api\Staff\TimeOffNotificationController;
|
||||
use App\Http\Controllers\Api\System\AccessDeniedController;
|
||||
// CodeIgniter also registers POST /api/login and POST /api/register (public, no /v1).
|
||||
@@ -210,6 +211,8 @@ Route::prefix('v1')->group(function () {
|
||||
*/
|
||||
Route::post('badge_scan/scan', [BadgeScanController::class, 'scan'])
|
||||
->middleware('throttle:120,1');
|
||||
Route::post('scanner/process', [ScannerController::class, 'process'])
|
||||
->middleware('throttle:120,1');
|
||||
|
||||
Route::prefix('frontend')->group(function () {
|
||||
Route::get('/', [FrontendController::class, 'index']);
|
||||
@@ -303,12 +306,108 @@ Route::prefix('v1')->group(function () {
|
||||
Route::get('enrollment-withdrawal', [AdministratorEnrollmentController::class, 'index']);
|
||||
Route::get('enrollment-withdrawal/new-students', [AdministratorEnrollmentController::class, 'newStudents']);
|
||||
Route::post('enrollment-withdrawal/update-statuses', [AdministratorEnrollmentController::class, 'updateStatuses']);
|
||||
Route::get('enroll-withdrawal', [AdministratorEnrollmentController::class, 'index']);
|
||||
Route::get('enroll-withdrawal/new-students', [AdministratorEnrollmentController::class, 'newStudents']);
|
||||
Route::post('enroll-withdrawal/update-statuses', [AdministratorEnrollmentController::class, 'updateStatuses']);
|
||||
|
||||
Route::get('emergency-contacts', [AdministratorEmergencyContactController::class, 'index']);
|
||||
Route::get('emergency-contacts/data', [AdministratorEmergencyContactController::class, 'index']);
|
||||
Route::get('emergency-contacts/{contactId}', [AdministratorEmergencyContactController::class, 'show']);
|
||||
Route::patch('emergency-contacts/{contactId}', [AdministratorEmergencyContactController::class, 'update']);
|
||||
Route::delete('emergency-contacts/{contactId}', [AdministratorEmergencyContactController::class, 'destroy']);
|
||||
|
||||
Route::prefix('staff')->group(function () {
|
||||
Route::get('/', [StaffController::class, 'index']);
|
||||
Route::get('{id}', [StaffController::class, 'show']);
|
||||
Route::post('/', [StaffController::class, 'store']);
|
||||
Route::patch('{id}', [StaffController::class, 'update']);
|
||||
Route::delete('{id}', [StaffController::class, 'destroy']);
|
||||
});
|
||||
|
||||
Route::prefix('flags')->group(function () {
|
||||
Route::get('pending', [IncidentApiController::class, 'current']);
|
||||
Route::get('form-meta', [IncidentApiController::class, 'formMeta']);
|
||||
Route::get('students/{gradeId}', [IncidentApiController::class, 'studentsByGrade']);
|
||||
Route::get('processed', [IncidentApiController::class, 'processed']);
|
||||
Route::get('analysis', [IncidentApiController::class, 'analysis']);
|
||||
Route::post('/', [IncidentApiController::class, 'store']);
|
||||
Route::post('{incidentId}/state', [IncidentApiController::class, 'updateState']);
|
||||
Route::post('{incidentId}/close', [IncidentApiController::class, 'close']);
|
||||
Route::post('{incidentId}/cancel', [IncidentApiController::class, 'cancel']);
|
||||
});
|
||||
|
||||
Route::prefix('grading')->group(function () {
|
||||
Route::get('homework-tracking', [HomeworkTrackingController::class, 'index']);
|
||||
});
|
||||
|
||||
Route::prefix('expenses')->group(function () {
|
||||
Route::get('/', [ExpenseController::class, 'index']);
|
||||
Route::get('options', [ExpenseController::class, 'options']);
|
||||
Route::get('{id}', [ExpenseController::class, 'show']);
|
||||
Route::post('/', [ExpenseController::class, 'store']);
|
||||
Route::put('{id}', [ExpenseController::class, 'update']);
|
||||
Route::post('{id}/status', [ExpenseController::class, 'updateStatus']);
|
||||
});
|
||||
|
||||
Route::prefix('reports')->group(function () {
|
||||
Route::get('financial-detailed', [FinancialController::class, 'report']);
|
||||
});
|
||||
|
||||
Route::prefix('invoices')->group(function () {
|
||||
Route::get('management', [InvoiceController::class, 'management']);
|
||||
});
|
||||
|
||||
Route::prefix('paypal-transactions')->group(function () {
|
||||
Route::get('/', [PaypalTransactionsController::class, 'index']);
|
||||
Route::get('csv', [PaypalTransactionsController::class, 'downloadCsv']);
|
||||
});
|
||||
|
||||
Route::prefix('reimbursements')->group(function () {
|
||||
Route::get('under-processing', [ReimbursementController::class, 'underProcessing']);
|
||||
Route::post('mark-donation', [ReimbursementController::class, 'markDonation']);
|
||||
Route::post('batches', [ReimbursementController::class, 'createBatch']);
|
||||
Route::post('batches/assign', [ReimbursementController::class, 'updateBatchAssignment']);
|
||||
Route::post('batches/lock', [ReimbursementController::class, 'lockBatch']);
|
||||
Route::post('batches/admin-files', [ReimbursementController::class, 'uploadBatchAdminFile']);
|
||||
Route::get('batches/admin-files/{name}/{mode?}', [ReimbursementController::class, 'serveAdminCheckFile']);
|
||||
Route::post('batches/email', [ReimbursementController::class, 'sendBatchEmail']);
|
||||
Route::get('export', [ReimbursementController::class, 'export']);
|
||||
Route::get('batches/export', [ReimbursementController::class, 'exportBatch']);
|
||||
Route::get('reimbursed-expenses', [ReimbursementController::class, 'reimbursedExpenses']);
|
||||
Route::get('/', [ReimbursementController::class, 'index']);
|
||||
Route::post('/', [ReimbursementController::class, 'store']);
|
||||
Route::post('process', [ReimbursementController::class, 'process']);
|
||||
Route::put('{id}', [ReimbursementController::class, 'update']);
|
||||
});
|
||||
|
||||
Route::prefix('printables')->group(function () {
|
||||
Route::prefix('badges')->group(function () {
|
||||
Route::get('form-options', [BadgeController::class, 'formData']);
|
||||
});
|
||||
Route::prefix('report-card')->group(function () {
|
||||
Route::get('meta', [ReportCardsController::class, 'meta']);
|
||||
});
|
||||
});
|
||||
|
||||
Route::prefix('role-permission')->group(function () {
|
||||
Route::get('roles', [RolePermissionController::class, 'roles']);
|
||||
Route::post('roles', [RolePermissionController::class, 'storeRole']);
|
||||
Route::get('roles/{roleId}', [RolePermissionController::class, 'showRole']);
|
||||
Route::patch('roles/{roleId}', [RolePermissionController::class, 'updateRole']);
|
||||
Route::delete('roles/{roleId}', [RolePermissionController::class, 'deleteRole']);
|
||||
|
||||
Route::get('users', [RolePermissionController::class, 'users']);
|
||||
Route::post('users/{userId}/roles', [RolePermissionController::class, 'assignRoles']);
|
||||
|
||||
Route::get('permissions', [RolePermissionController::class, 'permissions']);
|
||||
Route::post('permissions', [RolePermissionController::class, 'storePermission']);
|
||||
Route::get('permissions/{permissionId}', [RolePermissionController::class, 'showPermission']);
|
||||
Route::patch('permissions/{permissionId}', [RolePermissionController::class, 'updatePermission']);
|
||||
Route::delete('permissions/{permissionId}', [RolePermissionController::class, 'deletePermission']);
|
||||
|
||||
Route::get('roles/{roleId}/permissions', [RolePermissionController::class, 'rolePermissions']);
|
||||
Route::put('roles/{roleId}/permissions', [RolePermissionController::class, 'updateRolePermissions']);
|
||||
});
|
||||
});
|
||||
|
||||
Route::middleware('auth:api')->prefix('attendance')->group(function () {
|
||||
@@ -374,6 +473,71 @@ Route::prefix('v1')->group(function () {
|
||||
});
|
||||
|
||||
Route::middleware('auth:api')->group(function () {
|
||||
// Legacy alias: same handler as GET /api/v1/scores/homework
|
||||
Route::get('teacher/homework-list', [HomeworkScoreController::class, 'index']);
|
||||
// Legacy alias: teacher add-homework page and save action
|
||||
Route::get('teacher/add-homework', [HomeworkScoreController::class, 'index']);
|
||||
Route::post('teacher/add-homework', [HomeworkScoreController::class, 'update']);
|
||||
// Legacy alias: teacher add-quiz page and save action
|
||||
Route::get('teacher/add-quiz', [QuizScoreController::class, 'index']);
|
||||
Route::post('teacher/add-quiz', [QuizScoreController::class, 'update']);
|
||||
// Legacy alias: teacher add quiz column
|
||||
Route::get('teacher/add-quiz-column-form', [QuizScoreController::class, 'index']);
|
||||
Route::post('teacher/add-quiz-column-form', [QuizScoreController::class, 'addColumn']);
|
||||
// Legacy alias: teacher add-midterm-exam page and save action
|
||||
Route::get('teacher/add-midterm-exam', [MidtermScoreController::class, 'index']);
|
||||
Route::post('teacher/add-midterm-exam', [MidtermScoreController::class, 'update']);
|
||||
// Legacy alias: teacher add-final-exam page and save action
|
||||
Route::get('teacher/add-final-exam', [FinalScoreController::class, 'index']);
|
||||
Route::post('teacher/add-final-exam', [FinalScoreController::class, 'update']);
|
||||
// Legacy alias: teacher add-participation page and save action
|
||||
Route::get('teacher/add-participation', [ParticipationScoreController::class, 'index']);
|
||||
Route::post('teacher/add-participation', [ParticipationScoreController::class, 'update']);
|
||||
// Legacy alias: teacher add-project page and save action
|
||||
Route::get('teacher/add-project', [ProjectScoreController::class, 'index']);
|
||||
Route::post('teacher/add-project', [ProjectScoreController::class, 'update']);
|
||||
// Legacy alias: teacher assignment management screen
|
||||
Route::get('teacher/teacher-assignment', [TeacherClassAssignmentController::class, 'index']);
|
||||
// Legacy alias: teacher exam drafts
|
||||
Route::get('teacher/exam-drafts', [ExamDraftApiController::class, 'teacherIndex']);
|
||||
Route::post('teacher/exam-drafts', [ExamDraftApiController::class, 'teacherStore']);
|
||||
Route::get('teacher/drafts', [ExamDraftApiController::class, 'teacherIndex']);
|
||||
Route::post('teacher/drafts', [ExamDraftApiController::class, 'teacherStore']);
|
||||
// Legacy alias: teacher inventory book distribution form/save
|
||||
Route::get('teacher/inventory/books/distribute', [InventoryController::class, 'teacherDistribution']);
|
||||
Route::post('teacher/inventory/books/distribute', [InventoryController::class, 'teacherDistributionStore']);
|
||||
// Legacy alias: teacher print request bootstrap/context
|
||||
Route::get('teacher/print-requests/context', [PrintRequestsController::class, 'teacher']);
|
||||
// Legacy alias: same handler as GET /api/v1/teachers/classes (class dashboard / roster)
|
||||
Route::get('teacher/class-view', [TeacherController::class, 'classes']);
|
||||
Route::get('teacher/no-classes', [TeacherController::class, 'classes']);
|
||||
Route::get('teacher/select-semester', function () {
|
||||
return response()->json([
|
||||
'ok' => true,
|
||||
'school_year' => \App\Models\Configuration::getConfig('school_year'),
|
||||
'semester' => \App\Models\Configuration::getConfig('semester'),
|
||||
'semester_options' => ['Fall', 'Spring'],
|
||||
]);
|
||||
});
|
||||
Route::get('teacher/absence-vacation', [TeacherController::class, 'absenceForm']);
|
||||
Route::post('teacher/absence-vacation', [TeacherController::class, 'submitAbsence']);
|
||||
// Legacy CI paths: same handler as GET /api/v1/attendance/teacher/form
|
||||
Route::get('teacher/showupdate-attendance', [TeacherAttendanceApiController::class, 'form']);
|
||||
Route::get('teacher/showupdate_attendance', [TeacherAttendanceApiController::class, 'form']);
|
||||
// Legacy alias: same handler as GET /api/v1/scores/overview (teacher score dashboard)
|
||||
Route::get('teacher/scores', [ScoreDashboardController::class, 'overview']);
|
||||
// Legacy alias: school calendar events with audience=teacher
|
||||
Route::get('teacher/calendar', [SchoolCalendarController::class, 'teacherCalendarLegacy']);
|
||||
// Legacy teacher progress submit page: GET loads form metadata, POST saves reports
|
||||
Route::post('teacher/class-progress-submit', [ClassProgressController::class, 'store']);
|
||||
Route::get('teacher/class-progress-submit', [ClassProgressController::class, 'legacySubmitForm']);
|
||||
// Legacy teacher progress history page
|
||||
Route::get('teacher/class-progress-history', [ClassProgressController::class, 'index']);
|
||||
// Legacy teacher progress view page
|
||||
Route::get('teacher/class-progress-view', [ClassProgressController::class, 'index']);
|
||||
// Legacy alias: same handler as GET /api/v1/competition-scores
|
||||
Route::get('teacher/competition-scores', [CompetitionScoresController::class, 'index']);
|
||||
|
||||
Route::get('dashboard/route', [DashboardController::class, 'route']);
|
||||
Route::get('emergency-contacts', [AdministratorEmergencyContactController::class, 'index']);
|
||||
|
||||
@@ -466,6 +630,26 @@ Route::prefix('v1')->group(function () {
|
||||
Route::get('roles/{roleId}/permissions', [RolePermissionController::class, 'rolePermissions']);
|
||||
Route::put('roles/{roleId}/permissions', [RolePermissionController::class, 'updateRolePermissions']);
|
||||
});
|
||||
|
||||
Route::prefix('role-permission')->group(function () {
|
||||
Route::get('roles', [RolePermissionController::class, 'roles']);
|
||||
Route::post('roles', [RolePermissionController::class, 'storeRole']);
|
||||
Route::get('roles/{roleId}', [RolePermissionController::class, 'showRole']);
|
||||
Route::patch('roles/{roleId}', [RolePermissionController::class, 'updateRole']);
|
||||
Route::delete('roles/{roleId}', [RolePermissionController::class, 'deleteRole']);
|
||||
|
||||
Route::get('users', [RolePermissionController::class, 'users']);
|
||||
Route::post('users/{userId}/roles', [RolePermissionController::class, 'assignRoles']);
|
||||
|
||||
Route::get('permissions', [RolePermissionController::class, 'permissions']);
|
||||
Route::post('permissions', [RolePermissionController::class, 'storePermission']);
|
||||
Route::get('permissions/{permissionId}', [RolePermissionController::class, 'showPermission']);
|
||||
Route::patch('permissions/{permissionId}', [RolePermissionController::class, 'updatePermission']);
|
||||
Route::delete('permissions/{permissionId}', [RolePermissionController::class, 'deletePermission']);
|
||||
|
||||
Route::get('roles/{roleId}/permissions', [RolePermissionController::class, 'rolePermissions']);
|
||||
Route::put('roles/{roleId}/permissions', [RolePermissionController::class, 'updateRolePermissions']);
|
||||
});
|
||||
Route::prefix('role-switcher')->group(function () {
|
||||
Route::get('/', [RoleSwitcherController::class, 'index']);
|
||||
Route::post('switch', [RoleSwitcherController::class, 'switch']);
|
||||
@@ -512,6 +696,7 @@ Route::prefix('v1')->group(function () {
|
||||
Route::prefix('students')->group(function () {
|
||||
Route::get('/', [StudentApiController::class, 'index']);
|
||||
Route::post('/', [StudentApiController::class, 'store']);
|
||||
Route::get('score-card/selectable', [StudentApiController::class, 'scoreCardSelectable']);
|
||||
Route::get('assignments', [StudentApiController::class, 'assignments']);
|
||||
Route::post('assign-class', [StudentApiController::class, 'assignClass']);
|
||||
Route::post('remove-class', [StudentApiController::class, 'removeClass']);
|
||||
@@ -579,6 +764,10 @@ Route::prefix('v1')->group(function () {
|
||||
Route::delete('{userId}', [UserController::class, 'destroy']);
|
||||
});
|
||||
|
||||
Route::prefix('administrator')->group(function () {
|
||||
Route::get('login-activity', [UserController::class, 'loginActivity']);
|
||||
});
|
||||
|
||||
Route::prefix('broadcast-email')->group(function () {
|
||||
Route::get('options', [BroadcastEmailController::class, 'options']);
|
||||
Route::post('send', [BroadcastEmailController::class, 'send']);
|
||||
@@ -665,6 +854,7 @@ Route::prefix('v1')->group(function () {
|
||||
});
|
||||
|
||||
Route::prefix('discounts')->group(function () {
|
||||
Route::get('/', [DiscountController::class, 'options']);
|
||||
Route::get('options', [DiscountController::class, 'options']);
|
||||
Route::post('apply', [DiscountController::class, 'apply']);
|
||||
Route::get('vouchers', [DiscountController::class, 'listVouchers']);
|
||||
|
||||
Reference in New Issue
Block a user