update api and add more features

This commit is contained in:
root
2026-06-04 02:24:41 -04:00
parent fa6c9519a0
commit 4e33882ac7
131 changed files with 34596 additions and 340 deletions
+51 -25
View File
@@ -1,4 +1,3 @@
<?php
use Illuminate\Support\Facades\Route;
@@ -71,6 +70,7 @@ use App\Http\Controllers\Api\Finance\PaymentTransactionController;
use App\Http\Controllers\Api\Finance\PaypalTransactionsController;
use App\Http\Controllers\Api\Finance\PurchaseOrderController;
use App\Http\Controllers\Api\Finance\ReimbursementController;
use App\Http\Controllers\Api\Finance\ChargeController;
use App\Http\Controllers\Api\Finance\FeeCalculationController;
use App\Http\Controllers\Api\Finance\PaymentEventChargesController;
use App\Http\Controllers\Api\Finance\PaymentManualController;
@@ -118,6 +118,8 @@ use App\Http\Controllers\Api\BadgeScan\BadgeScanController;
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\Administrator\AdministratorPromotionController;
use App\Http\Controllers\Api\Parents\ParentPromotionController;
use App\Http\Controllers\Api\Public\PublicWinnersController;
use App\Http\Controllers\Api\ScannerController;
use App\Http\Controllers\Api\Staff\TimeOffNotificationController;
@@ -283,7 +285,7 @@ Route::prefix('v1')->group(function () {
Route::get('profile', [InfoIconController::class, 'profileIcon']);
});
Route::middleware('auth:api')->prefix('administrator')->group(function () {
Route::middleware(['auth:api', 'admin.access'])->prefix('administrator')->group(function () {
Route::get('attendance-templates', [AttendanceCommentTemplateController::class, 'bootstrapUrls'])
->name('api.v1.administrator.attendance-templates.bootstrap');
@@ -312,6 +314,29 @@ Route::prefix('v1')->group(function () {
Route::get('enroll-withdrawal/new-students', [AdministratorEnrollmentController::class, 'newStudents']);
Route::post('enroll-withdrawal/update-statuses', [AdministratorEnrollmentController::class, 'updateStatuses']);
Route::prefix('promotions')->group(function () {
Route::get('/', [AdministratorPromotionController::class, 'index']);
Route::get('summary', [AdministratorPromotionController::class, 'summary']);
Route::post('evaluate', [AdministratorPromotionController::class, 'evaluate']);
Route::post('reminders/dispatch', [AdministratorPromotionController::class, 'dispatchScheduledReminders']);
Route::post('deadlines/expire', [AdministratorPromotionController::class, 'expireDeadlines']);
Route::post('deadlines', [AdministratorPromotionController::class, 'setDeadline']);
Route::prefix('levels')->group(function () {
Route::get('/', [AdministratorPromotionController::class, 'levelProgressions']);
Route::post('/', [AdministratorPromotionController::class, 'upsertLevelProgression']);
Route::post('seed', [AdministratorPromotionController::class, 'seedLevelProgressions']);
});
Route::get('{promotionId}', [AdministratorPromotionController::class, 'show'])->whereNumber('promotionId');
Route::patch('{promotionId}/status', [AdministratorPromotionController::class, 'updateStatus'])->whereNumber('promotionId');
Route::post('{promotionId}/deadline', [AdministratorPromotionController::class, 'setDeadline'])->whereNumber('promotionId');
Route::post('{promotionId}/reminders', [AdministratorPromotionController::class, 'sendReminder'])->whereNumber('promotionId');
Route::get('{promotionId}/reminders', [AdministratorPromotionController::class, 'reminders'])->whereNumber('promotionId');
Route::get('{promotionId}/audit', [AdministratorPromotionController::class, 'audit'])->whereNumber('promotionId');
Route::patch('{promotionId}/enrollment-steps', [AdministratorPromotionController::class, 'adminCompleteEnrollment'])->whereNumber('promotionId');
});
Route::get('emergency-contacts', [AdministratorEmergencyContactController::class, 'index']);
Route::get('emergency-contacts/data', [AdministratorEmergencyContactController::class, 'index']);
Route::get('emergency-contacts/{contactId}', [AdministratorEmergencyContactController::class, 'show']);
@@ -396,7 +421,7 @@ Route::prefix('v1')->group(function () {
Route::post('generate', [CertificateController::class, 'generate']);
});
Route::prefix('role-permission')->group(function () {
Route::middleware('admin.access')->prefix('role-permission')->group(function () {
Route::get('roles', [RolePermissionController::class, 'roles']);
Route::post('roles', [RolePermissionController::class, 'storeRole']);
Route::get('roles/{roleId}', [RolePermissionController::class, 'showRole']);
@@ -625,7 +650,7 @@ Route::prefix('v1')->group(function () {
Route::post('{notificationId}/restore', [ApiNotificationController::class, 'restore']);
Route::post('{notificationId}/read', [ApiNotificationController::class, 'markRead']);
});
Route::prefix('role-permissions')->group(function () {
Route::middleware('admin.access')->prefix('role-permissions')->group(function () {
Route::get('roles', [RolePermissionController::class, 'roles']);
Route::post('roles', [RolePermissionController::class, 'storeRole']);
Route::get('roles/{roleId}', [RolePermissionController::class, 'showRole']);
@@ -645,25 +670,6 @@ Route::prefix('v1')->group(function () {
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']);
@@ -741,11 +747,19 @@ Route::prefix('v1')->group(function () {
Route::get('{studentId}/score-card', [StudentApiController::class, 'scoreCard']);
});
Route::prefix('parents')->group(function () {
Route::middleware('parent.access')->prefix('parents')->group(function () {
Route::get('attendance', [ParentApiController::class, 'attendance']);
Route::get('invoices', [ParentApiController::class, 'invoices']);
Route::get('enrollments', [ParentApiController::class, 'enrollments']);
Route::post('enrollments', [ParentApiController::class, 'updateEnrollments']);
Route::prefix('promotions')->group(function () {
Route::get('/', [ParentPromotionController::class, 'overview']);
Route::get('{promotionId}', [ParentPromotionController::class, 'show'])->whereNumber('promotionId');
Route::post('{promotionId}/start', [ParentPromotionController::class, 'start'])->whereNumber('promotionId');
Route::patch('{promotionId}/steps', [ParentPromotionController::class, 'updateSteps'])->whereNumber('promotionId');
Route::post('{promotionId}/submit', [ParentPromotionController::class, 'submit'])->whereNumber('promotionId');
});
Route::get('registration', [ParentApiController::class, 'registration']);
Route::post('registration', [ParentApiController::class, 'storeRegistration']);
Route::patch('students/{studentId}', [ParentApiController::class, 'updateStudent']);
@@ -770,7 +784,7 @@ Route::prefix('v1')->group(function () {
Route::delete('authorized-users/{id}', [AuthorizedUsersController::class, 'destroy'])->whereNumber('id');
});
Route::prefix('users')->group(function () {
Route::middleware('admin.access')->prefix('users')->group(function () {
Route::get('/', [UserController::class, 'index']);
Route::post('/', [UserController::class, 'store']);
Route::get('login-activity', [UserController::class, 'loginActivity']);
@@ -896,6 +910,18 @@ Route::prefix('v1')->group(function () {
Route::get('unpaid-parents', [FinancialController::class, 'unpaidParents']);
Route::post('fees/refund', [FeeCalculationController::class, 'refund']);
Route::post('fees/tuition-total', [FeeCalculationController::class, 'tuitionTotal']);
Route::post('fees/tuition-breakdown', [FeeCalculationController::class, 'tuitionBreakdown']);
Route::post('fees/family-balance', [FeeCalculationController::class, 'familyBalance']);
Route::prefix('fees/charges')->group(function () {
Route::get('/', [ChargeController::class, 'index']);
Route::post('extra', [ChargeController::class, 'storeExtra']);
Route::post('event', [ChargeController::class, 'storeEvent']);
Route::post('extra/{id}/cancel', [ChargeController::class, 'cancelExtra']);
Route::post('extra/{id}/apply', [ChargeController::class, 'applyExtra']);
Route::post('event/{id}/cancel', [ChargeController::class, 'cancelEvent']);
Route::post('event/{id}/mark-paid', [ChargeController::class, 'markEventPaid']);
});
Route::prefix('refunds')->group(function () {
Route::post('recalculate-overpayments', [RefundController::class, 'recalculateOverpayments']);