reconstruction of the project
This commit is contained in:
+163
-609
@@ -3,629 +3,183 @@
|
||||
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use App\Http\Controllers\Api\Auth\AuthController;
|
||||
use App\Http\Controllers\DocsController;
|
||||
use App\Http\Controllers\Api\UserController;
|
||||
use App\Http\Controllers\Api\AdministratorController;
|
||||
use App\Http\Controllers\Api\StudentController;
|
||||
use App\Http\Controllers\Api\AttendanceController;
|
||||
use App\Http\Controllers\Api\InvoiceController;
|
||||
use App\Http\Controllers\Api\AssignmentController;
|
||||
use App\Http\Controllers\Api\AuthorizedUsersController;
|
||||
use App\Http\Controllers\Api\AttendanceTrackingController;
|
||||
use App\Http\Controllers\Api\BroadcastEmailController;
|
||||
use App\Http\Controllers\Api\CommunicationController;
|
||||
use App\Http\Controllers\Api\ConfigurationController;
|
||||
use App\Http\Controllers\Api\ContactController;
|
||||
use App\Http\Controllers\Api\ClassPreparationController;
|
||||
use App\Http\Controllers\Api\EmailController;
|
||||
use App\Http\Controllers\Api\EmailExtractorController;
|
||||
use App\Http\Controllers\Api\EmergencyContactController;
|
||||
use App\Http\Controllers\Api\EventController;
|
||||
use App\Http\Controllers\Api\ExtraChargesController;
|
||||
use App\Http\Controllers\Api\FamilyAdminController;
|
||||
use App\Http\Controllers\Api\FamilyController;
|
||||
use App\Http\Controllers\Api\FilesController;
|
||||
use App\Http\Controllers\Api\FinalController;
|
||||
use App\Http\Controllers\Api\FinancialController;
|
||||
use App\Http\Controllers\Api\FlagController;
|
||||
use App\Http\Controllers\Api\GradingController;
|
||||
use App\Http\Controllers\Api\HealthController;
|
||||
use App\Http\Controllers\Api\HomeworkController;
|
||||
use App\Http\Controllers\Api\HomeworkTrackingController;
|
||||
use App\Http\Controllers\Api\InfoIconController;
|
||||
use App\Http\Controllers\Api\InventoryController;
|
||||
use App\Http\Controllers\Api\IpBanController;
|
||||
use App\Http\Controllers\Api\LandingPageController;
|
||||
use App\Http\Controllers\Api\LateSlipLogsController;
|
||||
use App\Http\Controllers\Api\MessagesController;
|
||||
use App\Http\Controllers\Api\MidtermController;
|
||||
use App\Http\Controllers\Api\NavBuilderController;
|
||||
use App\Http\Controllers\Api\NotificationManagementController;
|
||||
use App\Http\Controllers\Api\PageController;
|
||||
use App\Http\Controllers\Api\ParticipationController;
|
||||
use App\Http\Controllers\Api\PolicyController;
|
||||
use App\Http\Controllers\Api\PrintablesReportsController;
|
||||
use App\Http\Controllers\Api\ProjectController;
|
||||
use App\Http\Controllers\Api\QuizController;
|
||||
use App\Http\Controllers\Api\PaymentController;
|
||||
use App\Http\Controllers\Api\PaymentNotificationController;
|
||||
use App\Http\Controllers\Api\PaymentTransactionController;
|
||||
use App\Http\Controllers\Api\PaypalTransactionsController;
|
||||
use App\Http\Controllers\Api\PurchaseOrderController;
|
||||
use App\Http\Controllers\Api\RegisterController;
|
||||
use App\Http\Controllers\Api\Administrator\AdministratorEnrollmentController;
|
||||
use App\Http\Controllers\Api\Administrator\AdministratorAbsenceController;
|
||||
use App\Http\Controllers\Api\Administrator\AdministratorDashboardController;
|
||||
use App\Http\Controllers\Api\Administrator\AdministratorNotificationController;
|
||||
use App\Http\Controllers\Api\Administrator\AdministratorTeacherSubmissionController;
|
||||
use App\Http\Controllers\Api\Badges\BadgeController;
|
||||
use App\Http\Controllers\Api\Students\StudentController;
|
||||
use App\Http\Controllers\Api\Attendance\AttendanceController;
|
||||
use App\Http\Controllers\Api\Finance\InvoiceController;
|
||||
use App\Http\Controllers\Api\Assignment\AssignmentApiController;
|
||||
use App\Http\Controllers\Api\Parents\AuthorizedUsersController;
|
||||
use App\Http\Controllers\Api\AttendanceTracking\AttendanceTrackingController;
|
||||
use App\Http\Controllers\Api\Email\BroadcastEmailController;
|
||||
use App\Http\Controllers\Api\Messaging\CommunicationController;
|
||||
use App\Http\Controllers\Api\Settings\ConfigurationController;
|
||||
use App\Http\Controllers\Api\Staff\ContactController;
|
||||
use App\Http\Controllers\Api\Classes\ClassPreparationController;
|
||||
use App\Http\Controllers\Api\Email\EmailController;
|
||||
use App\Http\Controllers\Api\Email\EmailExtractorController;
|
||||
use App\Http\Controllers\Api\Parents\EmergencyContactController;
|
||||
use App\Http\Controllers\Api\Settings\EventController;
|
||||
use App\Http\Controllers\Api\Finance\ExtraChargesController;
|
||||
use App\Http\Controllers\Api\Family\FamilyAdminController;
|
||||
use App\Http\Controllers\Api\Family\FamilyController;
|
||||
use App\Http\Controllers\Api\Reports\FilesController;
|
||||
use App\Http\Controllers\Api\Scores\FinalController;
|
||||
use App\Http\Controllers\Api\Finance\FinancialController;
|
||||
use App\Http\Controllers\Api\System\FlagController;
|
||||
use App\Http\Controllers\Api\Scores\GradingController;
|
||||
use App\Http\Controllers\Api\System\HealthController;
|
||||
use App\Http\Controllers\Api\Scores\HomeworkController;
|
||||
use App\Http\Controllers\Api\Scores\HomeworkTrackingController;
|
||||
use App\Http\Controllers\Api\Frontend\InfoIconController;
|
||||
use App\Http\Controllers\Api\Inventory\InventoryController;
|
||||
use App\Http\Controllers\Api\Auth\IpBanController;
|
||||
use App\Http\Controllers\Api\Frontend\LandingPageController;
|
||||
use App\Http\Controllers\Api\Attendance\LateSlipLogsController;
|
||||
use App\Http\Controllers\Api\Messaging\MessagesController;
|
||||
use App\Http\Controllers\Api\Scores\MidtermController;
|
||||
use App\Http\Controllers\Api\System\NavBuilderController;
|
||||
use App\Http\Controllers\Api\Notifications\NotificationManagementController;
|
||||
use App\Http\Controllers\Api\Frontend\PageController;
|
||||
use App\Http\Controllers\Api\Scores\ParticipationController;
|
||||
use App\Http\Controllers\Api\Settings\PolicyController;
|
||||
use App\Http\Controllers\Api\Reports\PrintablesReportsController;
|
||||
use App\Http\Controllers\Api\Scores\ProjectController;
|
||||
use App\Http\Controllers\Api\Scores\QuizController;
|
||||
use App\Http\Controllers\Api\Finance\PaymentController;
|
||||
use App\Http\Controllers\Api\Finance\PaymentNotificationController;
|
||||
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\Auth\RegisterController;
|
||||
use App\Http\Controllers\Api\RolePermissionController;
|
||||
use App\Http\Controllers\Api\RoleSwitcherController;
|
||||
use App\Http\Controllers\Api\SchoolCalendarController;
|
||||
use App\Http\Controllers\Api\ScoreCommentController;
|
||||
use App\Http\Controllers\Api\ScoreController;
|
||||
use App\Http\Controllers\Api\ScorePredictorController;
|
||||
use App\Http\Controllers\Api\SessionTimeoutController;
|
||||
use App\Http\Controllers\Api\SlipPrinterController;
|
||||
use App\Http\Controllers\Api\StaffController;
|
||||
use App\Http\Controllers\Api\SupplierController;
|
||||
use App\Http\Controllers\Api\TeacherController;
|
||||
use App\Http\Controllers\Api\UiController;
|
||||
use App\Http\Controllers\Api\WhatsappController;
|
||||
use App\Http\Controllers\Api\Settings\SchoolCalendarController;
|
||||
use App\Http\Controllers\Api\Scores\ScoreCommentController;
|
||||
use App\Http\Controllers\Api\Scores\ScoreController;
|
||||
use App\Http\Controllers\Api\Scores\ScorePredictorController;
|
||||
use App\Http\Controllers\Api\Auth\SessionTimeoutController;
|
||||
use App\Http\Controllers\Api\Reports\SlipPrinterController;
|
||||
use App\Http\Controllers\Api\Staff\StaffController;
|
||||
use App\Http\Controllers\Api\Inventory\SupplierController;
|
||||
use App\Http\Controllers\Api\Staff\TeacherController;
|
||||
use App\Http\Controllers\Api\StatsController;
|
||||
use App\Http\Controllers\Api\Frontend\UiController;
|
||||
use App\Http\Controllers\Api\Messaging\WhatsappController;
|
||||
|
||||
use App\Http\Controllers\Api\Attendance\AdminAttendanceApiController;
|
||||
use App\Http\Controllers\Api\Attendance\AttendanceCommentTemplateController;
|
||||
use App\Http\Controllers\Api\Attendance\TeacherAttendanceApiController;
|
||||
use App\Http\Controllers\Api\Attendance\StaffAttendanceApiController;
|
||||
|
||||
Route::prefix('v1')->group(function () {
|
||||
Route::post('auth/login', [AuthController::class, 'login']);
|
||||
Route::post('user/profile-auth', [UserController::class, 'profileAuth']);
|
||||
Route::post('users/password/forgot', [UserController::class, 'requestPasswordReset']);
|
||||
Route::get('users/password/reset/{token}', [UserController::class, 'validateResetToken']);
|
||||
Route::post('users/password/reset', [UserController::class, 'completePasswordReset']);
|
||||
Route::get('user/confirm/{token}', [UserController::class, 'confirm']);
|
||||
Route::post('user/set-password', [UserController::class, 'setPassword']);
|
||||
Route::post('authorized-users/confirm', [AuthorizedUsersController::class, 'confirm']);
|
||||
Route::get('authorized-users/{id}/set-password', [AuthorizedUsersController::class, 'setPassword']);
|
||||
Route::post('authorized-users/{id}/password', [AuthorizedUsersController::class, 'savePassword']);
|
||||
Route::post('contact', [ContactController::class, 'submit']);
|
||||
Route::middleware('auth:sanctum')->prefix('administrator')->group(function () {
|
||||
Route::get('absence', [AdministratorAbsenceController::class, 'index']);
|
||||
Route::post('absence', [AdministratorAbsenceController::class, 'store']);
|
||||
|
||||
// Public registration endpoints
|
||||
Route::prefix('register')->group(function () {
|
||||
Route::get('/', [RegisterController::class, 'index']);
|
||||
Route::post('/', [RegisterController::class, 'register']);
|
||||
Route::get('success', [RegisterController::class, 'registrationSuccess']);
|
||||
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::get('notifications/alerts', [AdministratorNotificationController::class, 'alerts']);
|
||||
Route::post('notifications/alerts', [AdministratorNotificationController::class, 'saveAlerts']);
|
||||
Route::get('notifications/print-recipients', [AdministratorNotificationController::class, 'printRecipients']);
|
||||
Route::post('notifications/print-recipients', [AdministratorNotificationController::class, 'savePrintRecipients']);
|
||||
|
||||
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']);
|
||||
});
|
||||
|
||||
// Public page endpoints
|
||||
Route::prefix('pages')->group(function () {
|
||||
Route::get('privacy', [PageController::class, 'privacyPolicy']);
|
||||
Route::get('terms', [PageController::class, 'termsOfService']);
|
||||
Route::get('help', [PageController::class, 'helpCenter']);
|
||||
Route::post('contact', [PageController::class, 'submitContact']);
|
||||
Route::middleware('auth:sanctum')->prefix('attendance')->group(function () {
|
||||
// Teacher
|
||||
Route::get('/teacher/grid', [TeacherAttendanceApiController::class, 'grid']);
|
||||
Route::get('/teacher/form', [TeacherAttendanceApiController::class, 'form']);
|
||||
Route::post('/teacher/submit', [TeacherAttendanceApiController::class, 'submit']);
|
||||
|
||||
// Admin daily/student attendance
|
||||
Route::get('/admin/daily', [AdminAttendanceApiController::class, 'dailyData']);
|
||||
Route::post('/admin/update', [AdminAttendanceApiController::class, 'updateManagement']);
|
||||
Route::post('/admin/add-entry', [AdminAttendanceApiController::class, 'addEntry']);
|
||||
|
||||
// Staff/admin monthly/admin attendance
|
||||
Route::get('/staff/month', [StaffAttendanceApiController::class, 'monthData']);
|
||||
Route::get('/staff/admins', [StaffAttendanceApiController::class, 'admins']);
|
||||
Route::post('/staff/admins/save', [StaffAttendanceApiController::class, 'saveAdmins']);
|
||||
Route::post('/staff/cell', [StaffAttendanceApiController::class, 'saveCell']);
|
||||
Route::get('/staff/month-csv', [StaffAttendanceApiController::class, 'monthCsv']);
|
||||
});
|
||||
|
||||
// Public policy endpoints
|
||||
Route::prefix('policy')->group(function () {
|
||||
Route::get('/', [PolicyController::class, 'index']);
|
||||
Route::get('picture', [PolicyController::class, 'schoolPicturePolicy']);
|
||||
Route::get('school', [PolicyController::class, 'schoolPolicy']);
|
||||
Route::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']);
|
||||
Route::post('/record', [AttendanceTrackingController::class, 'record']);
|
||||
Route::post('/send-auto-emails', [AttendanceTrackingController::class, 'sendAutoEmails']);
|
||||
Route::get('/compose', [AttendanceTrackingController::class, 'compose']);
|
||||
Route::post('/send-manual-email', [AttendanceTrackingController::class, 'sendManualEmail']);
|
||||
Route::get('/parents-info', [AttendanceTrackingController::class, 'parentsInfo']);
|
||||
Route::post('/save-notification-note', [AttendanceTrackingController::class, 'saveNotificationNote']);
|
||||
});
|
||||
|
||||
// Health check endpoint (public)
|
||||
Route::get('health', [HealthController::class, 'index']);
|
||||
Route::prefix('assignments')->group(function () {
|
||||
Route::get('/', [AssignmentApiController::class, 'index']);
|
||||
Route::post('/', [AssignmentApiController::class, 'store']);
|
||||
Route::get('/class-assignment-data', [AssignmentApiController::class, 'classAssignmentData']);
|
||||
});
|
||||
|
||||
// Session timeout configuration (public)
|
||||
Route::get('session/timeout-config', [SessionTimeoutController::class, 'getTimeoutConfig']);
|
||||
Route::middleware('auth:sanctum')->group(function () {
|
||||
Route::get('stats', [StatsController::class, 'index']);
|
||||
|
||||
// File serving endpoints (public, but with security checks)
|
||||
Route::get('files/receipt/{name}', [FilesController::class, 'receipt']);
|
||||
Route::get('files/reimb/{name}', [FilesController::class, 'reimb']);
|
||||
Route::get('files/reimbursement/{name}', [FilesController::class, 'reimbursement']); // Alias for backward compatibility
|
||||
|
||||
Route::get('/docs', '\App\Http\Controllers\DocsController@index');
|
||||
|
||||
Route::middleware('auth:api')->group(function () {
|
||||
Route::get('auth/me', [AuthController::class, 'me']);
|
||||
Route::post('auth/logout', [AuthController::class, 'logout']);
|
||||
|
||||
// Session timeout management
|
||||
Route::get('session/checkTimeout', [SessionTimeoutController::class, 'checkTimeout']);
|
||||
Route::post('session/pingActivity', [SessionTimeoutController::class, 'pingActivity']);
|
||||
Route::get('user/profile', [UserController::class, 'profile']);
|
||||
Route::patch('user/profile', [UserController::class, 'updateProfile']);
|
||||
Route::get('info-icon/profile', [InfoIconController::class, 'profileIcon']);
|
||||
|
||||
Route::get('landing', [LandingPageController::class, 'index']);
|
||||
Route::get('landing/data', [LandingPageController::class, 'getData']);
|
||||
|
||||
Route::get('users', [UserController::class, 'index']);
|
||||
Route::get('users/with-roles', [UserController::class, 'listWithRoles']);
|
||||
Route::post('users', [UserController::class, 'store']);
|
||||
Route::patch('users/{id}', [UserController::class, 'updateUser']);
|
||||
Route::delete('users/{id}', [UserController::class, 'destroy']);
|
||||
Route::get('users/login-activity', [UserController::class, 'loginActivity']);
|
||||
Route::post('users/select-role', [UserController::class, 'selectRole']);
|
||||
Route::delete('users/roles/{roleId}', [UserController::class, 'deleteRole']);
|
||||
|
||||
Route::get('students', [StudentController::class, 'index']);
|
||||
Route::get('students/{id}', [StudentController::class, 'show']);
|
||||
Route::post('students/assign-class', [StudentController::class, 'assignClassStudent']);
|
||||
Route::post('students/auto-distribute', [StudentController::class, 'autoDistributeSections']);
|
||||
Route::get('students/promotion-totals', [StudentController::class, 'promotionTotalsApi']);
|
||||
|
||||
Route::get('administrator/enrollment/new-students', [AdministratorController::class, 'newStudents']);
|
||||
Route::get('assignments/class-sections', [AssignmentController::class, 'classAssignments']);
|
||||
Route::get('assignments/class-sections/data', [AssignmentController::class, 'classAssignmentData']);
|
||||
Route::post('assignments/class-sections', [AssignmentController::class, 'saveClassAssignment']);
|
||||
|
||||
Route::get('attendance', [AttendanceController::class, 'index']);
|
||||
Route::post('attendance', [AttendanceController::class, 'store']);
|
||||
Route::get('attendance/teacher/grid', [AttendanceController::class, 'teacherSectionGrid']);
|
||||
Route::get('attendance/teacher/update-data', [AttendanceController::class, 'teacherUpdateData']);
|
||||
Route::get('broadcast-email', [BroadcastEmailController::class, 'metadata']);
|
||||
Route::post('broadcast-email/send', [BroadcastEmailController::class, 'send']);
|
||||
Route::post('broadcast-email/upload-image', [BroadcastEmailController::class, 'uploadImage']);
|
||||
Route::get('authorized-users', [AuthorizedUsersController::class, 'index']);
|
||||
Route::get('authorized-users/{id}', [AuthorizedUsersController::class, 'show']);
|
||||
Route::post('authorized-users', [AuthorizedUsersController::class, 'store']);
|
||||
Route::patch('authorized-users/{id}', [AuthorizedUsersController::class, 'update']);
|
||||
Route::delete('authorized-users/{id}', [AuthorizedUsersController::class, 'destroy']);
|
||||
Route::prefix('attendance-tracking')->group(function () {
|
||||
Route::get('pending', [AttendanceTrackingController::class, 'pendingViolations']);
|
||||
Route::get('notified', [AttendanceTrackingController::class, 'notifiedViolations']);
|
||||
Route::post('notify', [AttendanceTrackingController::class, 'recordNotification']);
|
||||
Route::post('send-auto-emails', [AttendanceTrackingController::class, 'sendAutoEmails']);
|
||||
Route::get('compose', [AttendanceTrackingController::class, 'composeEmail']);
|
||||
Route::post('send-email', [AttendanceTrackingController::class, 'sendEmailManual']);
|
||||
Route::get('parents-info', [AttendanceTrackingController::class, 'parentsInfo']);
|
||||
Route::post('notes', [AttendanceTrackingController::class, 'saveNotificationNote']);
|
||||
Route::prefix('badges')->group(function () {
|
||||
Route::get('form-data', [BadgeController::class, 'formData']);
|
||||
Route::post('pdf', [BadgeController::class, 'generatePdf']);
|
||||
Route::get('print-status', [BadgeController::class, 'printStatus']);
|
||||
Route::post('log-print', [BadgeController::class, 'logPrint']);
|
||||
});
|
||||
|
||||
Route::prefix('class-prep')->group(function () {
|
||||
Route::get('list', [ClassPreparationController::class, 'index']);
|
||||
Route::post('adjustments', [ClassPreparationController::class, 'saveAdjustment']);
|
||||
Route::post('mark-printed', [ClassPreparationController::class, 'markPrinted']);
|
||||
});
|
||||
|
||||
Route::prefix('email')->group(function () {
|
||||
Route::post('send', [EmailController::class, 'send']);
|
||||
});
|
||||
|
||||
Route::prefix('email-extractor')->group(function () {
|
||||
Route::get('emails', [EmailExtractorController::class, 'getEmails']);
|
||||
Route::post('compare', [EmailExtractorController::class, 'compare']);
|
||||
});
|
||||
|
||||
Route::prefix('emergency-contacts')->group(function () {
|
||||
Route::get('/', [EmergencyContactController::class, 'index']);
|
||||
Route::get('data', [EmergencyContactController::class, 'data']);
|
||||
Route::get('{id}', [EmergencyContactController::class, 'show']);
|
||||
Route::get('parent/{id}', [EmergencyContactController::class, 'getByParent']);
|
||||
Route::post('/', [EmergencyContactController::class, 'create']);
|
||||
Route::patch('{id}', [EmergencyContactController::class, 'update']);
|
||||
Route::delete('{id}', [EmergencyContactController::class, 'delete']);
|
||||
});
|
||||
|
||||
Route::prefix('events')->group(function () {
|
||||
Route::get('/', [EventController::class, 'index']);
|
||||
Route::get('{id}', [EventController::class, 'show']);
|
||||
Route::post('/', [EventController::class, 'create']);
|
||||
Route::patch('{id}', [EventController::class, 'update']);
|
||||
Route::delete('{id}', [EventController::class, 'delete']);
|
||||
Route::get('charges', [EventController::class, 'charges']);
|
||||
Route::post('charges/update', [EventController::class, 'updateCharges']);
|
||||
Route::get('students-with-charges', [EventController::class, 'getStudentsWithCharges']);
|
||||
});
|
||||
|
||||
Route::prefix('communications')->group(function () {
|
||||
Route::get('/', [CommunicationController::class, 'index']);
|
||||
Route::post('/', [CommunicationController::class, 'send']);
|
||||
Route::get('conversation', [CommunicationController::class, 'conversation']);
|
||||
Route::delete('{id}', [CommunicationController::class, 'delete']);
|
||||
Route::get('metadata', [CommunicationController::class, 'metadata']);
|
||||
Route::get('students/{student_id}/families', [CommunicationController::class, 'families']);
|
||||
Route::get('families/{family_id}/guardians', [CommunicationController::class, 'guardians']);
|
||||
Route::post('preview', [CommunicationController::class, 'preview']);
|
||||
Route::post('send-email', [CommunicationController::class, 'sendEmail']);
|
||||
});
|
||||
|
||||
Route::prefix('configuration')->group(function () {
|
||||
Route::get('/', [ConfigurationController::class, 'index']);
|
||||
Route::post('/', [ConfigurationController::class, 'create']);
|
||||
Route::get('key/{config_key}', [ConfigurationController::class, 'getByKey']);
|
||||
Route::get('list', [ConfigurationController::class, 'listData']);
|
||||
Route::get('{id}', [ConfigurationController::class, 'show']);
|
||||
Route::patch('{id}', [ConfigurationController::class, 'update']);
|
||||
Route::delete('{id}', [ConfigurationController::class, 'delete']);
|
||||
});
|
||||
|
||||
Route::prefix('invoices')->group(function () {
|
||||
Route::get('/', [InvoiceController::class, 'index']);
|
||||
Route::get('management-data', [InvoiceController::class, 'managementData']);
|
||||
Route::get('unpaid', [InvoiceController::class, 'unpaidInvoices']);
|
||||
Route::get('parent/{parentId}', [InvoiceController::class, 'getByParent']);
|
||||
Route::post('generate', [InvoiceController::class, 'generateInvoice']);
|
||||
Route::post('check-and-generate', [InvoiceController::class, 'checkAndGenerateInvoice']);
|
||||
Route::post('/', [InvoiceController::class, 'store']);
|
||||
Route::get('{id}', [InvoiceController::class, 'show']);
|
||||
Route::get('{id}/pdf', [InvoiceController::class, 'generatePdfInvoice']);
|
||||
Route::patch('{id}', [InvoiceController::class, 'update']);
|
||||
Route::patch('{id}/status', [InvoiceController::class, 'updateStatus']);
|
||||
Route::delete('{id}', [InvoiceController::class, 'delete']);
|
||||
});
|
||||
|
||||
Route::prefix('payments')->group(function () {
|
||||
Route::get('/', [PaymentController::class, 'index']);
|
||||
Route::post('/', [PaymentController::class, 'store']);
|
||||
Route::get('parent/{id}', [PaymentController::class, 'getByParent']);
|
||||
Route::get('enrolled-students/{parentId}', [PaymentController::class, 'getEnrolledStudents']);
|
||||
Route::get('manual-pay-search', [PaymentController::class, 'manualPaySearch']);
|
||||
Route::post('manual-pay-update', [PaymentController::class, 'manualPayUpdate']);
|
||||
Route::post('manual-pay-edit', [PaymentController::class, 'manualPayEdit']);
|
||||
Route::get('event-charges', [PaymentController::class, 'eventChargesShow']);
|
||||
Route::post('event-charges', [PaymentController::class, 'eventChargesUpdate']);
|
||||
Route::get('redirect-page', [PaymentController::class, 'redirectPage']);
|
||||
Route::get('check-file/{filename}', [PaymentController::class, 'serveCheckFile']);
|
||||
Route::get('check-file/{filename}/inline', function ($filename) {
|
||||
return app(PaymentController::class)->serveCheckFile($filename, 'inline');
|
||||
});
|
||||
Route::post('{id}/update-balance', [PaymentController::class, 'updateBalance']);
|
||||
Route::get('{id}', [PaymentController::class, 'show']);
|
||||
Route::patch('{id}', [PaymentController::class, 'update']);
|
||||
Route::delete('{id}', [PaymentController::class, 'destroy']);
|
||||
|
||||
// Payment notification routes
|
||||
Route::prefix('notifications')->group(function () {
|
||||
Route::get('/', [PaymentNotificationController::class, 'index']);
|
||||
Route::post('send', [PaymentNotificationController::class, 'send']);
|
||||
});
|
||||
});
|
||||
|
||||
Route::prefix('payment-transactions')->group(function () {
|
||||
Route::get('/', [PaymentTransactionController::class, 'index']);
|
||||
Route::post('/', [PaymentTransactionController::class, 'store']);
|
||||
Route::get('payment/{paymentId}', [PaymentTransactionController::class, 'getByPayment']);
|
||||
Route::get('{id}', [PaymentTransactionController::class, 'show']);
|
||||
Route::patch('{transactionId}/status', [PaymentTransactionController::class, 'updateStatus']);
|
||||
});
|
||||
|
||||
Route::prefix('paypal-transactions')->group(function () {
|
||||
Route::get('/', [PaypalTransactionsController::class, 'index']);
|
||||
Route::get('export-csv', [PaypalTransactionsController::class, 'exportCsv']);
|
||||
Route::get('transaction/{transactionId}', [PaypalTransactionsController::class, 'getByTransactionId']);
|
||||
Route::get('{id}', [PaypalTransactionsController::class, 'show']);
|
||||
});
|
||||
|
||||
Route::prefix('extra-charges')->group(function () {
|
||||
Route::get('/', [ExtraChargesController::class, 'index']);
|
||||
Route::get('{id}', [ExtraChargesController::class, 'show']);
|
||||
Route::post('/', [ExtraChargesController::class, 'store']);
|
||||
Route::patch('{id}', [ExtraChargesController::class, 'update']);
|
||||
Route::delete('{id}', [ExtraChargesController::class, 'delete']);
|
||||
Route::post('{id}/void', [ExtraChargesController::class, 'void']);
|
||||
Route::post('{id}/reverse', [ExtraChargesController::class, 'reverse']);
|
||||
Route::get('parent-options', [ExtraChargesController::class, 'parentOptions']);
|
||||
Route::get('invoices-for-parent', [ExtraChargesController::class, 'invoicesForParent']);
|
||||
});
|
||||
|
||||
Route::prefix('family-admin')->group(function () {
|
||||
Route::get('/', [FamilyAdminController::class, 'index']);
|
||||
Route::get('search', [FamilyAdminController::class, 'search']);
|
||||
Route::get('card', [FamilyAdminController::class, 'card']);
|
||||
});
|
||||
|
||||
Route::prefix('families')->group(function () {
|
||||
Route::get('/', [FamilyController::class, 'index']);
|
||||
Route::get('{id}', [FamilyController::class, 'show']);
|
||||
Route::get('by-student/{student_id}', [FamilyController::class, 'getByStudent']);
|
||||
Route::get('{id}/guardians', [FamilyController::class, 'getGuardians']);
|
||||
Route::get('students/{student_id}/families', [FamilyController::class, 'familiesByStudent']);
|
||||
Route::get('{family_id}/guardians-list', [FamilyController::class, 'guardiansByFamily']);
|
||||
Route::post('bootstrap', [FamilyController::class, 'bootstrap']);
|
||||
Route::post('attach-second-by-user', [FamilyController::class, 'attachSecondByUser']);
|
||||
Route::post('attach-second-by-email', [FamilyController::class, 'attachSecondByEmail']);
|
||||
Route::post('set-primary-home', [FamilyController::class, 'setPrimaryHome']);
|
||||
Route::post('set-guardian-flags', [FamilyController::class, 'setGuardianFlags']);
|
||||
Route::post('unlink-guardian', [FamilyController::class, 'unlinkGuardian']);
|
||||
Route::post('unlink-student', [FamilyController::class, 'unlinkStudent']);
|
||||
Route::post('import-second-parents', [FamilyController::class, 'importSecondParentsFromLegacy']);
|
||||
});
|
||||
|
||||
Route::prefix('files')->group(function () {
|
||||
Route::get('/', [FilesController::class, 'index']);
|
||||
});
|
||||
|
||||
Route::prefix('finals')->group(function () {
|
||||
Route::get('student/{id}', [FinalController::class, 'getByStudent']);
|
||||
Route::get('class-section/{class_section_id}', [FinalController::class, 'getByClassSection']);
|
||||
Route::post('/', [FinalController::class, 'create']);
|
||||
Route::patch('{id}', [FinalController::class, 'update']);
|
||||
});
|
||||
|
||||
Route::prefix('midterm')->group(function () {
|
||||
Route::get('/', [MidtermController::class, 'index']);
|
||||
Route::post('/', [MidtermController::class, 'update']);
|
||||
Route::get('management', [MidtermController::class, 'showManagement']);
|
||||
Route::post('management', [MidtermController::class, 'updateManagement']);
|
||||
});
|
||||
|
||||
Route::prefix('participation')->group(function () {
|
||||
Route::get('/', [ParticipationController::class, 'index']);
|
||||
Route::post('/', [ParticipationController::class, 'update']);
|
||||
Route::get('management', [ParticipationController::class, 'showManagement']);
|
||||
Route::post('management', [ParticipationController::class, 'updateManagement']);
|
||||
Route::get('student/{id}', [ParticipationController::class, 'getByStudent']);
|
||||
});
|
||||
|
||||
Route::prefix('projects')->group(function () {
|
||||
Route::get('add-project', [ProjectController::class, 'addProject']);
|
||||
Route::post('update-scores', [ProjectController::class, 'updateProjectScores']);
|
||||
Route::post('add-column', [ProjectController::class, 'addNextProjectColumn']);
|
||||
Route::get('management', [ProjectController::class, 'showProjectMngt']);
|
||||
Route::post('update', [ProjectController::class, 'updateProject']);
|
||||
Route::get('student/{id}', [ProjectController::class, 'getByStudent']);
|
||||
Route::get('/', [ProjectController::class, 'index']);
|
||||
Route::post('/', [ProjectController::class, 'store']);
|
||||
Route::get('{id}', [ProjectController::class, 'show']);
|
||||
Route::patch('{id}', [ProjectController::class, 'update']);
|
||||
});
|
||||
|
||||
Route::prefix('quizzes')->group(function () {
|
||||
Route::get('add-quiz', [QuizController::class, 'addQuiz']);
|
||||
Route::post('update-scores', [QuizController::class, 'updateQuizScores']);
|
||||
Route::post('add-column', [QuizController::class, 'addNextQuizColumn']);
|
||||
Route::get('management', [QuizController::class, 'showQuizMngt']);
|
||||
Route::post('update', [QuizController::class, 'updateQuiz']);
|
||||
Route::get('student/{id}', [QuizController::class, 'getByStudent']);
|
||||
Route::get('/', [QuizController::class, 'index']);
|
||||
Route::post('/', [QuizController::class, 'store']);
|
||||
Route::get('{id}', [QuizController::class, 'show']);
|
||||
Route::patch('{id}', [QuizController::class, 'update']);
|
||||
});
|
||||
|
||||
Route::prefix('printables')->group(function () {
|
||||
Route::get('report-card-meta', [PrintablesReportsController::class, 'reportCardMeta']);
|
||||
Route::get('badge-status', [PrintablesReportsController::class, 'badgePrintStatus']);
|
||||
Route::post('badge-status', [PrintablesReportsController::class, 'logBadgePrint']);
|
||||
Route::get('students-by-class/{classSectionId}', [PrintablesReportsController::class, 'getByClass']);
|
||||
Route::get('students-by-class/{classSectionId}/alt', [PrintablesReportsController::class, 'studentsByClass']);
|
||||
Route::get('preview-sticker-counts', [PrintablesReportsController::class, 'previewStickerCounts']);
|
||||
Route::post('badge', [PrintablesReportsController::class, 'badge']);
|
||||
Route::post('generate-stickers', [PrintablesReportsController::class, 'generateStickers']);
|
||||
Route::get('report-card/{studentId}', [PrintablesReportsController::class, 'generateSingleReport']);
|
||||
Route::get('report-card/class/{classSectionId}', [PrintablesReportsController::class, 'generateClassReport']);
|
||||
});
|
||||
|
||||
Route::prefix('slips')->group(function () {
|
||||
Route::post('print', [SlipPrinterController::class, 'print']);
|
||||
Route::get('preview', [SlipPrinterController::class, 'preview']);
|
||||
Route::post('preview', [SlipPrinterController::class, 'preview']);
|
||||
Route::post('reprint/{id}', [SlipPrinterController::class, 'reprint']);
|
||||
});
|
||||
|
||||
Route::prefix('staff')->group(function () {
|
||||
Route::get('/', [StaffController::class, 'index']);
|
||||
Route::post('/', [StaffController::class, 'store']);
|
||||
Route::get('{id}', [StaffController::class, 'show']);
|
||||
Route::patch('{id}', [StaffController::class, 'update']);
|
||||
Route::delete('{id}', [StaffController::class, 'destroy']);
|
||||
});
|
||||
|
||||
Route::prefix('teachers')->group(function () {
|
||||
Route::get('/', [TeacherController::class, 'index']);
|
||||
Route::get('class-view', [TeacherController::class, 'getClassView']);
|
||||
Route::get('class-assignments', [TeacherController::class, 'getTeacherClassAssignments']);
|
||||
Route::post('class-assignments/assign', [TeacherController::class, 'assignClassTeacher']);
|
||||
Route::delete('class-assignments', [TeacherController::class, 'deleteAssignment']);
|
||||
Route::get('absence-form', [TeacherController::class, 'getAbsenceForm']);
|
||||
Route::post('absence', [TeacherController::class, 'submitAbsence']);
|
||||
Route::get('{id}/classes', [TeacherController::class, 'getClasses']);
|
||||
Route::get('{id}', [TeacherController::class, 'show']);
|
||||
});
|
||||
|
||||
Route::prefix('financial')->group(function () {
|
||||
Route::get('report', [FinancialController::class, 'report']);
|
||||
Route::get('report-summary', [FinancialController::class, 'reportSummary']);
|
||||
Route::get('unpaid-parents', [FinancialController::class, 'unpaidParents']);
|
||||
Route::get('download-csv', [FinancialController::class, 'downloadCsv']);
|
||||
});
|
||||
|
||||
Route::prefix('flags')->group(function () {
|
||||
Route::get('/', [FlagController::class, 'index']);
|
||||
Route::get('students/{grade_id}', [FlagController::class, 'getStudentsByGrade']);
|
||||
Route::get('{id}', [FlagController::class, 'show']);
|
||||
Route::post('/', [FlagController::class, 'create']);
|
||||
Route::post('add', [FlagController::class, 'addFlag']);
|
||||
Route::patch('{id}/state', [FlagController::class, 'updateState']);
|
||||
Route::post('{id}/close', [FlagController::class, 'close']);
|
||||
Route::post('{id}/close-flag', [FlagController::class, 'closeFlag']);
|
||||
Route::post('{id}/cancel', [FlagController::class, 'cancel']);
|
||||
Route::post('{id}/cancel-flag', [FlagController::class, 'cancelFlag']);
|
||||
});
|
||||
|
||||
Route::prefix('grading')->group(function () {
|
||||
Route::get('{type}/{class_section_id?}/{student_id?}', [GradingController::class, 'show']);
|
||||
Route::post('/', [GradingController::class, 'update']);
|
||||
Route::get('/', [GradingController::class, 'grading']);
|
||||
Route::get('scores-comments', [GradingController::class, 'getScoreComment']);
|
||||
});
|
||||
|
||||
Route::prefix('homework')->group(function () {
|
||||
Route::get('/', [HomeworkController::class, 'index']);
|
||||
Route::get('student/{id}', [HomeworkController::class, 'getByStudent']);
|
||||
Route::get('class-section', [HomeworkController::class, 'getByClassSection']);
|
||||
Route::get('students-with-scores', [HomeworkController::class, 'getStudentsWithScores']);
|
||||
Route::get('tracking', [HomeworkTrackingController::class, 'index']);
|
||||
Route::post('/', [HomeworkController::class, 'create']);
|
||||
Route::post('update-scores', [HomeworkController::class, 'updateScores']);
|
||||
Route::post('add-column', [HomeworkController::class, 'addNextColumn']);
|
||||
Route::patch('{id}', [HomeworkController::class, 'update']);
|
||||
});
|
||||
|
||||
Route::prefix('inventory')->group(function () {
|
||||
// Items
|
||||
Route::get('/', [InventoryController::class, 'index']);
|
||||
Route::get('create', [InventoryController::class, 'create']);
|
||||
Route::get('{id}', [InventoryController::class, 'show']);
|
||||
Route::post('/', [InventoryController::class, 'store']);
|
||||
Route::patch('{id}', [InventoryController::class, 'update']);
|
||||
Route::delete('{id}', [InventoryController::class, 'delete']);
|
||||
|
||||
// Categories
|
||||
Route::post('categories', [InventoryController::class, 'saveCategory']);
|
||||
|
||||
// Classroom audit
|
||||
Route::get('classroom/{id}/audit', [InventoryController::class, 'auditClassroomForm']);
|
||||
Route::post('classroom/{id}/audit', [InventoryController::class, 'auditClassroomStore']);
|
||||
|
||||
// Summary
|
||||
Route::get('summary/{type?}', [InventoryController::class, 'summary']);
|
||||
Route::get('summary-all', [InventoryController::class, 'summaryAll']);
|
||||
|
||||
// Adjust
|
||||
Route::get('{id}/adjust', [InventoryController::class, 'adjustForm']);
|
||||
Route::post('{id}/adjust', [InventoryController::class, 'adjustStore']);
|
||||
|
||||
// Book distribution
|
||||
Route::get('books/distribute', [InventoryController::class, 'teacherDistributeForm']);
|
||||
Route::post('books/distribute', [InventoryController::class, 'teacherDistributeStore']);
|
||||
|
||||
// Movements
|
||||
Route::prefix('movements')->group(function () {
|
||||
Route::get('/', [InventoryController::class, 'movementsIndex']);
|
||||
Route::get('create', [InventoryController::class, 'movementsCreate']);
|
||||
Route::get('{id}', [InventoryController::class, 'movementsEdit']);
|
||||
Route::post('/', [InventoryController::class, 'movementsStore']);
|
||||
Route::patch('{id}', [InventoryController::class, 'movementsUpdate']);
|
||||
Route::delete('{id}', [InventoryController::class, 'movementsDelete']);
|
||||
Route::post('bulk-delete', [InventoryController::class, 'movementsBulkDelete']);
|
||||
});
|
||||
});
|
||||
|
||||
Route::prefix('suppliers')->group(function () {
|
||||
Route::get('/', [SupplierController::class, 'index']);
|
||||
Route::post('/', [SupplierController::class, 'store']);
|
||||
Route::get('{id}', [SupplierController::class, 'show']);
|
||||
Route::patch('{id}', [SupplierController::class, 'update']);
|
||||
Route::delete('{id}', [SupplierController::class, 'destroy']);
|
||||
});
|
||||
|
||||
Route::prefix('purchase-orders')->group(function () {
|
||||
Route::get('/', [PurchaseOrderController::class, 'index']);
|
||||
Route::post('/', [PurchaseOrderController::class, 'store']);
|
||||
Route::get('{id}', [PurchaseOrderController::class, 'show']);
|
||||
Route::patch('{id}', [PurchaseOrderController::class, 'update']);
|
||||
Route::post('{id}/receive', [PurchaseOrderController::class, 'receive']);
|
||||
Route::post('{id}/cancel', [PurchaseOrderController::class, 'cancel']);
|
||||
});
|
||||
|
||||
Route::prefix('ip-bans')->group(function () {
|
||||
Route::get('/', [IpBanController::class, 'index']);
|
||||
Route::get('{id}', [IpBanController::class, 'show']);
|
||||
Route::post('/', [IpBanController::class, 'ban']);
|
||||
Route::post('ban-now', [IpBanController::class, 'banNow']);
|
||||
Route::post('unban', [IpBanController::class, 'unban']);
|
||||
});
|
||||
|
||||
Route::prefix('late-slip-logs')->group(function () {
|
||||
Route::get('/', [LateSlipLogsController::class, 'index']);
|
||||
Route::get('{id}', [LateSlipLogsController::class, 'show']);
|
||||
});
|
||||
|
||||
Route::prefix('messages')->group(function () {
|
||||
Route::get('/', [MessagesController::class, 'index']);
|
||||
Route::get('inbox', [MessagesController::class, 'inbox']);
|
||||
Route::get('sent', [MessagesController::class, 'sent']);
|
||||
Route::get('drafts', [MessagesController::class, 'drafts']);
|
||||
Route::get('trash', [MessagesController::class, 'trash']);
|
||||
Route::post('/', [MessagesController::class, 'send']);
|
||||
Route::post('receive', [MessagesController::class, 'receive']);
|
||||
Route::get('recipients/{type}', [MessagesController::class, 'getRecipients']);
|
||||
});
|
||||
|
||||
Route::prefix('nav-builder')->group(function () {
|
||||
Route::get('data', [NavBuilderController::class, 'data']);
|
||||
Route::post('/', [NavBuilderController::class, 'save']);
|
||||
Route::delete('{id}', [NavBuilderController::class, 'delete']);
|
||||
Route::post('reorder', [NavBuilderController::class, 'reorder']);
|
||||
});
|
||||
|
||||
Route::prefix('notifications')->group(function () {
|
||||
Route::get('active', [NotificationManagementController::class, 'activeNotificationsData']);
|
||||
Route::get('deleted', [NotificationManagementController::class, 'deletedNotificationsData']);
|
||||
Route::post('send', [NotificationManagementController::class, 'send']);
|
||||
Route::post('{id}/restore', [NotificationManagementController::class, 'restore']);
|
||||
});
|
||||
|
||||
Route::prefix('rolepermission')->group(function () {
|
||||
// Roles
|
||||
Route::get('roles', [RolePermissionController::class, 'roles']);
|
||||
Route::post('roles', [RolePermissionController::class, 'storeRole']);
|
||||
Route::get('roles/{id}', [RolePermissionController::class, 'showRole']);
|
||||
Route::patch('roles/{id}', [RolePermissionController::class, 'updateRole']);
|
||||
Route::delete('roles/{id}', [RolePermissionController::class, 'deleteRole']);
|
||||
|
||||
// Permissions
|
||||
Route::get('permissions', [RolePermissionController::class, 'permissions']);
|
||||
Route::post('permissions', [RolePermissionController::class, 'storePermission']);
|
||||
Route::patch('permissions/{id}', [RolePermissionController::class, 'updatePermission']);
|
||||
Route::delete('permissions/{id}', [RolePermissionController::class, 'deletePermission']);
|
||||
|
||||
// Role Permissions
|
||||
Route::get('roles/{roleId}/permissions', [RolePermissionController::class, 'rolePermissions']);
|
||||
Route::post('roles/{roleId}/permissions', [RolePermissionController::class, 'saveRolePermissions']);
|
||||
|
||||
// User Role Assignment
|
||||
Route::get('users', [RolePermissionController::class, 'users']);
|
||||
Route::post('users/{userId}/roles', [RolePermissionController::class, 'assignRole']);
|
||||
Route::get('admins', [RolePermissionController::class, 'admins']);
|
||||
});
|
||||
|
||||
Route::prefix('role-switcher')->group(function () {
|
||||
Route::get('/', [RoleSwitcherController::class, 'index']);
|
||||
Route::post('switch', [RoleSwitcherController::class, 'switchRole']);
|
||||
Route::post('switch/{role}', [RoleSwitcherController::class, 'switchTo']);
|
||||
});
|
||||
|
||||
Route::prefix('school-calendar')->group(function () {
|
||||
Route::get('/', [SchoolCalendarController::class, 'index']);
|
||||
Route::post('/', [SchoolCalendarController::class, 'store']);
|
||||
Route::get('view/parent', [SchoolCalendarController::class, 'calendarParentView']);
|
||||
Route::get('view/teacher', [SchoolCalendarController::class, 'calendarTeacherView']);
|
||||
Route::get('view/admin', [SchoolCalendarController::class, 'calendarAdminView']);
|
||||
Route::get('{id}', [SchoolCalendarController::class, 'show']);
|
||||
Route::patch('{id}', [SchoolCalendarController::class, 'update']);
|
||||
Route::delete('{id}', [SchoolCalendarController::class, 'delete']);
|
||||
});
|
||||
|
||||
Route::prefix('score-comments')->group(function () {
|
||||
Route::post('/', [ScoreCommentController::class, 'save']);
|
||||
Route::post('update', [ScoreCommentController::class, 'updateComments']);
|
||||
Route::get('management', [ScoreCommentController::class, 'viewCommentsMngt']);
|
||||
Route::get('student/{studentId}', [ScoreCommentController::class, 'getByStudent']);
|
||||
Route::patch('{id}', [ScoreCommentController::class, 'update']);
|
||||
});
|
||||
|
||||
Route::prefix('scores')->group(function () {
|
||||
Route::get('/', [ScoreController::class, 'index']);
|
||||
Route::get('student/{studentId}', [ScoreController::class, 'getByStudent']);
|
||||
Route::get('parent-view', [ScoreController::class, 'viewStudentScore']);
|
||||
Route::post('update', [ScoreController::class, 'updateScores']);
|
||||
Route::post('update-final-exam', [ScoreController::class, 'updateFinalExamScores']);
|
||||
Route::post('update-midterm', [ScoreController::class, 'updateMidtermScores']);
|
||||
Route::post('recalculate', [ScoreController::class, 'recalculate']);
|
||||
});
|
||||
|
||||
Route::prefix('score-predictor')->group(function () {
|
||||
Route::get('combined-report', [ScorePredictorController::class, 'combinedReport']);
|
||||
});
|
||||
|
||||
Route::prefix('ui')->group(function () {
|
||||
Route::get('style', [UiController::class, 'style']);
|
||||
Route::post('style', [UiController::class, 'updateStyle']);
|
||||
});
|
||||
|
||||
Route::prefix('whatsapp')->group(function () {
|
||||
Route::get('/', [WhatsappController::class, 'index']);
|
||||
Route::get('links', [WhatsappController::class, 'links']);
|
||||
Route::post('links', [WhatsappController::class, 'saveLink']);
|
||||
Route::post('send-invites', [WhatsappController::class, 'sendInvites']);
|
||||
Route::get('parent-contacts', [WhatsappController::class, 'parentContacts']);
|
||||
Route::get('parent-contacts-by-class', [WhatsappController::class, 'parentContactsByClass']);
|
||||
Route::post('memberships', [WhatsappController::class, 'updateMembership']);
|
||||
});
|
||||
|
||||
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
Route::prefix('attendance-comment-templates')->group(function () {
|
||||
Route::get('/', [AttendanceCommentTemplateController::class, 'index']);
|
||||
Route::get('list-data', [AttendanceCommentTemplateController::class, 'listData']);
|
||||
Route::get('{id}', [AttendanceCommentTemplateController::class, 'show']);
|
||||
Route::post('/', [AttendanceCommentTemplateController::class, 'store']);
|
||||
Route::put('{id}', [AttendanceCommentTemplateController::class, 'update']);
|
||||
Route::delete('{id}', [AttendanceCommentTemplateController::class, 'destroy']);
|
||||
});
|
||||
|
||||
Route::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']);
|
||||
Route::post('record', [AttendanceTrackingController::class, 'record']);
|
||||
Route::post('send-auto-emails', [AttendanceTrackingController::class, 'sendAutoEmails']);
|
||||
Route::get('compose', [AttendanceTrackingController::class, 'compose']);
|
||||
Route::post('send-manual-email', [AttendanceTrackingController::class, 'sendManualEmail']);
|
||||
Route::get('parents-info', [AttendanceTrackingController::class, 'parentsInfo']);
|
||||
Route::post('save-notification-note', [AttendanceTrackingController::class, 'saveNotificationNote']);
|
||||
});
|
||||
|
||||
Route::middleware('auth:sanctum')->group(function () {
|
||||
Route::prefix('assignments')->group(function () {
|
||||
Route::get('/', [AssignmentApiController::class, 'index']);
|
||||
Route::post('/', [AssignmentApiController::class, 'store']);
|
||||
Route::get('class-assignment-data', [AssignmentApiController::class, 'classAssignmentData']);
|
||||
});
|
||||
|
||||
Route::prefix('badges')->group(function () {
|
||||
Route::get('form-data', [BadgeController::class, 'formData']);
|
||||
Route::post('pdf', [BadgeController::class, 'generatePdf']);
|
||||
Route::get('print-status', [BadgeController::class, 'printStatus']);
|
||||
Route::post('log-print', [BadgeController::class, 'logPrint']);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user