add school year model
This commit is contained in:
+36
-18
@@ -126,6 +126,7 @@ use App\Http\Controllers\Api\Documentation\DocsCatalogController;
|
||||
use App\Http\Controllers\Api\Parents\AuthorizedUserInviteController;
|
||||
use App\Http\Controllers\Api\Administrator\AdministratorPromotionController;
|
||||
use App\Http\Controllers\Api\Parents\ParentPromotionController;
|
||||
use App\Http\Controllers\Api\SchoolYears\SchoolYearController;
|
||||
use App\Http\Controllers\Api\Public\PublicWinnersController;
|
||||
use App\Http\Controllers\Api\ScannerController;
|
||||
use App\Http\Controllers\Api\Staff\TimeOffNotificationController;
|
||||
@@ -154,6 +155,10 @@ Route::middleware('auth.docs')->group(function () {
|
||||
|
||||
Route::get('docs/public', [ApiDocsAdminController::class, 'public'])->name('api-docs.public');
|
||||
|
||||
// Legacy email extractor endpoints still used by the SPA parity page.
|
||||
Route::middleware('auth:api')->get('emails', [EmailExtractorController::class, 'emails']);
|
||||
Route::middleware('auth:api')->post('compare', [EmailExtractorController::class, 'compare']);
|
||||
|
||||
Route::get('access_denied', [AccessDeniedController::class, 'accessDenied'])->name('access_denied');
|
||||
|
||||
Route::get('certificates/verify/{token}', [CertificateController::class, 'verify'])
|
||||
@@ -302,13 +307,13 @@ Route::prefix('v1')->group(function () {
|
||||
->name('api.v1.administrator.attendance-templates.bootstrap');
|
||||
|
||||
Route::get('absence', [AdministratorAbsenceController::class, 'index']);
|
||||
Route::post('absence', [AdministratorAbsenceController::class, 'store']);
|
||||
Route::post('absence', [AdministratorAbsenceController::class, 'store'])->middleware('school_year.editable');
|
||||
|
||||
Route::get('dashboard/metrics', [AdministratorDashboardController::class, 'metrics']);
|
||||
Route::get('dashboard/user-search', [AdministratorDashboardController::class, 'userSearch']);
|
||||
|
||||
Route::get('teacher-submissions', [AdministratorTeacherSubmissionController::class, 'index']);
|
||||
Route::post('teacher-submissions/notify', [AdministratorTeacherSubmissionController::class, 'notify']);
|
||||
Route::post('teacher-submissions/notify', [AdministratorTeacherSubmissionController::class, 'notify'])->middleware('school_year.editable');
|
||||
|
||||
Route::prefix('trophy')->group(function () {
|
||||
Route::get('/', [AdministratorTrophyController::class, 'index']);
|
||||
@@ -317,22 +322,22 @@ Route::prefix('v1')->group(function () {
|
||||
});
|
||||
|
||||
Route::get('teacher-class/assignments', [TeacherClassAssignmentController::class, 'index']);
|
||||
Route::post('teacher-class/assign', [TeacherClassAssignmentController::class, 'store']);
|
||||
Route::post('teacher-class/delete', [TeacherClassAssignmentController::class, 'destroy']);
|
||||
Route::post('teacher-class/assign', [TeacherClassAssignmentController::class, 'store'])->middleware('school_year.editable');
|
||||
Route::post('teacher-class/delete', [TeacherClassAssignmentController::class, 'destroy'])->middleware('school_year.editable');
|
||||
|
||||
Route::get('notifications/alerts', [AdministratorNotificationController::class, 'alerts']);
|
||||
Route::post('notifications/alerts', [AdministratorNotificationController::class, 'saveAlerts']);
|
||||
Route::post('notifications/alerts', [AdministratorNotificationController::class, 'saveAlerts'])->middleware('school_year.editable');
|
||||
Route::get('notifications/print-recipients', [AdministratorNotificationController::class, 'printRecipients']);
|
||||
Route::post('notifications/print-recipients', [AdministratorNotificationController::class, 'savePrintRecipients']);
|
||||
Route::post('notifications/print-recipients', [AdministratorNotificationController::class, 'savePrintRecipients'])->middleware('school_year.editable');
|
||||
|
||||
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::post('enrollment-withdrawal/update-statuses', [AdministratorEnrollmentController::class, 'updateStatuses'])->middleware('school_year.editable');
|
||||
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::post('enroll-withdrawal/update-statuses', [AdministratorEnrollmentController::class, 'updateStatuses'])->middleware('school_year.editable');
|
||||
|
||||
Route::prefix('promotions')->group(function () {
|
||||
Route::prefix('promotions')->middleware('school_year.editable')->group(function () {
|
||||
Route::get('/', [AdministratorPromotionController::class, 'index']);
|
||||
Route::get('summary', [AdministratorPromotionController::class, 'summary']);
|
||||
Route::post('evaluate', [AdministratorPromotionController::class, 'evaluate']);
|
||||
@@ -392,9 +397,9 @@ Route::prefix('v1')->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::post('/', [ExpenseController::class, 'store'])->middleware('school_year.editable');
|
||||
Route::put('{id}', [ExpenseController::class, 'update'])->middleware('school_year.editable');
|
||||
Route::post('{id}/status', [ExpenseController::class, 'updateStatus'])->middleware('school_year.editable');
|
||||
});
|
||||
|
||||
Route::prefix('reports')->group(function () {
|
||||
@@ -471,7 +476,20 @@ Route::prefix('v1')->group(function () {
|
||||
});
|
||||
});
|
||||
|
||||
Route::middleware('auth:api')->prefix('attendance')->group(function () {
|
||||
Route::middleware(['auth:api', 'admin.access'])->prefix('school-years')->group(function () {
|
||||
Route::get('/', [SchoolYearController::class, 'index']);
|
||||
Route::post('/', [SchoolYearController::class, 'store']);
|
||||
Route::patch('{schoolYear}', [SchoolYearController::class, 'update'])->whereNumber('schoolYear');
|
||||
Route::get('{schoolYear}/summary', [SchoolYearController::class, 'summary'])->whereNumber('schoolYear');
|
||||
Route::post('{schoolYear}/validate-close', [SchoolYearController::class, 'validateClose'])->whereNumber('schoolYear');
|
||||
Route::post('{schoolYear}/preview-close', [SchoolYearController::class, 'previewClose'])->whereNumber('schoolYear');
|
||||
Route::post('{schoolYear}/close', [SchoolYearController::class, 'close'])->whereNumber('schoolYear');
|
||||
Route::post('{schoolYear}/reopen', [SchoolYearController::class, 'reopen'])->whereNumber('schoolYear');
|
||||
Route::get('{schoolYear}/parent-balances', [SchoolYearController::class, 'parentBalances'])->whereNumber('schoolYear');
|
||||
Route::get('{schoolYear}/promotion-preview', [SchoolYearController::class, 'promotionPreview'])->whereNumber('schoolYear');
|
||||
});
|
||||
|
||||
Route::middleware(['auth:api', 'school_year.editable'])->prefix('attendance')->group(function () {
|
||||
// Teacher
|
||||
Route::get('/teacher/grid', [TeacherAttendanceApiController::class, 'grid']);
|
||||
Route::get('/teacher/form', [TeacherAttendanceApiController::class, 'form']);
|
||||
@@ -513,7 +531,7 @@ Route::prefix('v1')->group(function () {
|
||||
});
|
||||
});
|
||||
|
||||
Route::middleware('auth:api')->prefix('attendance-tracking')->group(function () {
|
||||
Route::middleware(['auth:api', 'school_year.editable'])->prefix('attendance-tracking')->group(function () {
|
||||
Route::get('/pending-violations', [AttendanceTrackingController::class, 'pendingViolations']);
|
||||
Route::get('/notified-violations', [AttendanceTrackingController::class, 'notifiedViolations']);
|
||||
Route::get('/student-case/{studentId}', [AttendanceTrackingController::class, 'studentCase']);
|
||||
@@ -525,7 +543,7 @@ Route::prefix('v1')->group(function () {
|
||||
Route::post('/save-notification-note', [AttendanceTrackingController::class, 'saveNotificationNote']);
|
||||
});
|
||||
|
||||
Route::middleware('auth:api')->prefix('attendance-comment-templates')->group(function () {
|
||||
Route::middleware(['auth:api', 'school_year.editable'])->prefix('attendance-comment-templates')->group(function () {
|
||||
Route::get('/', [AttendanceCommentTemplateController::class, 'index'])->name('api.v1.attendance-comment-templates.index');
|
||||
Route::get('list-data', [AttendanceCommentTemplateController::class, 'listData'])
|
||||
->name('api.v1.attendance-comment-templates.list-data');
|
||||
@@ -538,19 +556,19 @@ Route::prefix('v1')->group(function () {
|
||||
/*
|
||||
| Legacy attendance template list/save/delete endpoints (auth:api).
|
||||
*/
|
||||
Route::middleware('auth:api')->prefix('attendance-templates')->group(function () {
|
||||
Route::middleware(['auth:api', 'school_year.editable'])->prefix('attendance-templates')->group(function () {
|
||||
Route::get('/', [AttendanceCommentTemplateController::class, 'listData'])->name('api.v1.attendance-templates.legacy');
|
||||
Route::post('save', [AttendanceCommentTemplateController::class, 'legacySave']);
|
||||
Route::post('delete', [AttendanceCommentTemplateController::class, 'legacyDelete']);
|
||||
});
|
||||
|
||||
Route::middleware('auth:api')->prefix('assignments')->group(function () {
|
||||
Route::middleware(['auth:api', 'school_year.editable'])->prefix('assignments')->group(function () {
|
||||
Route::get('/', [AssignmentApiController::class, 'index']);
|
||||
Route::post('/', [AssignmentApiController::class, 'store']);
|
||||
Route::get('/class-assignment-data', [AssignmentApiController::class, 'classAssignmentData']);
|
||||
});
|
||||
|
||||
Route::middleware('auth:api')->group(function () {
|
||||
Route::middleware(['auth:api', 'school_year.editable'])->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
|
||||
|
||||
Reference in New Issue
Block a user