================================================== RP LEARNING PORTAL - SYSTEM ENGINE MAP (CLEAN) ================================================== ================ CORE DOMAIN ENGINES ================ [GOALS] app/Models/StudentGoal.php app/Models/GoalProgress.php [GAMIFICATION / OPS] app/Services/Credentials/AchievementEngineService.php app/Events/Communication/ReputationAwarded.php app/Events/Communication/StreakUpdated.php app/Events/Credentials/AchievementUnlocked.php app/Http/Controllers/Finance/ExpenseController.php app/Models/AchievementMilestone.php app/Models/BI/FactGamification.php app/Models/StudentStreak.php app/Models/Communication/Streak.php app/Models/Communication/ReputationTransaction.php app/Models/Expense.php app/Models/RewardLevel.php app/Models/Credentials/Achievement.php app/Models/Credentials/AchievementCategory.php app/Models/Credentials/UserAchievement.php app/Listeners/Credentials/AchievementEventSubscriber.php [COMMUNITIES / COMMUNITY HUB] app/Services/Communication/CommunityService.php app/Events/Communication/CommunityEventConverted.php app/Http/Controllers/Communication/CommunityEventController.php app/Http/Controllers/Communication/CommunityTopicController.php app/Http/Controllers/Communication/CommunityController.php app/Models/BI/FactCommunityActivity.php app/Models/Communication/CommunityTopic.php app/Models/Communication/CommunityReply.php app/Models/Communication/Community.php app/Models/Communication/CommunityEvent.php app/Models/Communication/CommunityChannel.php app/Console/Commands/ETL/LoadCommunityIntelligence.php [ZOOM / VIRTUAL CLASSROOM] app/Services/ZoomVideoSDKService.php app/Services/VCP/Providers/ZoomVcpProvider.php app/Events/Classroom/PollCreated.php app/Events/ZoomSessionEnded.php app/Http/Controllers/Classroom/ZoomWebhookController.php app/Http/Controllers/Classroom/ClassroomController.php app/Http/Controllers/Classroom/ReplayCenterController.php app/Http/Controllers/Api/Classroom/RecordingUploadController.php app/Http/Controllers/Api/Classroom/WhiteboardController.php app/Http/Controllers/Api/Classroom/LivePollingController.php app/Http/Controllers/Api/Classroom/BreakoutRoomController.php app/Http/Controllers/Api/Classroom/EngagementController.php app/Http/Middleware/VerifyZoomWebhookSignature.php app/Models/ZoomWebhook.php.txt app/Models/ZoomRecording.php.txt app/Listeners/Communication/ProvisionVirtualClassroom.php app/Traits/GeneratesZoomSignatures.php [GRADEBOOK / REPORTING] app/Services/ReportCardService.php app/Services/GradebookService.php app/Http/Controllers/ReportCard/ReportCardController.php app/Http/Controllers/Gradebook/GradebookController.php app/Policies/SubjectGradePolicy.php app/Models/ReportCard.php app/Models/SubjectGrade.php app/Models/GradebookSnapshot.php [ASSIGNMENTS / ASSESSMENTS] app/Services/QuizQuestionService.php app/Http/Controllers/Exam/QuizQuestionController.php app/Http/Controllers/Exam/ExamController.php app/Http/Controllers/Finance/StudentFeeAssignmentController.php app/Http/Controllers/Student/AssignmentController.php app/Http/Controllers/Teacher/ExamController.php app/Http/Controllers/Teacher/AssignmentController.php app/Http/Controllers/Admin/QuizQuestionController.php app/Http/Controllers/Admin/ExamController.php app/Http/Controllers/Admin/AssignmentQuestionController.php app/Http/Controllers/Admin/AssignmentController.php app/Models/AssignmentSubmission.php app/Models/ExamResult.php app/Models/TeacherStudentAssignmentHistory.php app/Models/TeacherStudentAssignment.php app/Models/StudentFeeAssignment.php app/Models/QuizQuestionOption.php app/Models/Assignment.php app/Models/Exam.php app/Models/QuizQuestion.php app/Models/TeacherSubjectAssignment.php app/Models/PaymentPlanAssignment.php app/Observers/ExamResultObserver.php [STUDENT / TEACHER / PARENT MODULES] app/Services/Finance/TeacherEarningsService.php app/Services/TeacherInvitationService.php app/Http/Controllers/Auth/ParentRegistrationController.php app/Http/Controllers/Auth/TeacherInvitationController.php app/Http/Controllers/Auth/StudentLoginController.php app/Http/Controllers/Finance/StudentFeeAssignmentController.php app/Http/Controllers/Finance/ParentInvoiceController.php app/Http/Controllers/Parent/ChildSwitcherController.php app/Http/Controllers/Parent/ActionItemController.php app/Http/Controllers/Student/StudentDashboardController.php app/Http/Controllers/Student/ActionItemController.php app/Http/Controllers/Student/AssignmentController.php app/Http/Controllers/Student/SessionController.php app/Http/Controllers/Student/TimetableController.php app/Http/Controllers/Student/ResourceController.php app/Http/Controllers/Teacher/EarningsController.php app/Http/Controllers/Teacher/ExamController.php app/Http/Controllers/Teacher/ActionItemController.php app/Http/Controllers/Teacher/AssignmentController.php app/Http/Controllers/Teacher/SessionController.php app/Http/Controllers/Teacher/TimetableController.php app/Http/Controllers/Teacher/ResourceController.php app/Http/Controllers/Admin/ParentManagementController.php app/Http/Controllers/Admin/TeacherManagementController.php app/Http/Controllers/Admin/StudentManagementController.php app/Http/Controllers/Admin/TeacherCompensationController.php app/Http/Controllers/Credentials/TeacherRecommendationController.php app/Models/StudentSubjectEnrollment.php app/Models/TeacherStudentAssignmentHistory.php app/Models/TeacherStudentAssignment.php app/Models/StudentStreak.php app/Models/StudentDashboardSnapshot.php app/Models/StudentFeeAssignment.php app/Models/StudentGoal.php app/Models/ParentActionItemLog.php app/Models/StudentQuestionAnswer.php app/Models/ParentActionItem.php app/Models/TeacherCompensationSetting.php app/Models/TeacherInvitation.php app/Models/StudentClassEnrollment.php app/Models/StudentOpsScore.php app/Models/TeacherSubjectAssignment.php app/Models/TeacherAvailability.php app/Models/StudentPoint.php app/Models/Credentials/TeacherRecommendation.php app/Listeners/Payroll/ClearTeacherForecastCache.php ================ SERVICES (ENGINE LOGIC) ================ app/Services/ReportCardService.php app/Services/BI/CredentialFactExtractorService.php app/Services/Finance/PayrollPaymentWorkflowService.php app/Services/Finance/ReceiptService.php app/Services/Finance/InvoiceService.php app/Services/Finance/PayrollEngineService.php app/Services/Finance/PayrollGenerationService.php app/Services/Finance/PaystackService.php app/Services/Finance/PayslipVerificationService.php app/Services/Finance/PaymentService.php app/Services/Finance/PaymentPlanService.php app/Services/Finance/TeacherEarningsService.php app/Services/SessionNotificationService.php app/Services/ZoomVideoSDKService.php app/Services/AutoAttendanceService.php app/Services/TeacherInvitationService.php app/Services/Communication/OPSEngineService.php app/Services/Communication/CommunityService.php app/Services/Communication/EngagementService.php app/Services/Communication/AnnouncementService.php app/Services/Communication/MessageService.php app/Services/QuizQuestionService.php app/Services/CredentialGeneratorService.php app/Services/GradebookService.php app/Services/VCP/Routing/RecordingRoutingService.php app/Services/VCP/VcpProviderInterface.php app/Services/VCP/Providers/ZoomVcpProvider.php app/Services/OpsCalculator.php app/Services/Intelligence/RuleEvaluatorService.php app/Services/Intelligence/Providers/DeterministicProvider.php app/Services/Credentials/CertificateEngineService.php app/Services/Credentials/AchievementEngineService.php app/Services/CEE/EngagementEngineService.php app/Services/TxtConnectService.php ================ MODELS (DATA LAYER) ================ app/Models/OpsWeightRevision.php app/Models/SchoolSetting.php app/Models/AssignmentSubmission.php app/Models/UserProfile.php app/Models/OpsWeight.php app/Models/Notification.php app/Models/InterventionAction.php app/Models/ExamResult.php app/Models/StudentSubjectEnrollment.php app/Models/TeacherStudentAssignmentHistory.php app/Models/TeacherStudentAssignment.php app/Models/AchievementMilestone.php app/Models/BI/FactGamification.php app/Models/BI/FactPayrollBatch.php app/Models/BI/ReportDefinition.php app/Models/BI/FactCommunityActivity.php app/Models/BI/ReportExecution.php app/Models/BI/DimDate.php app/Models/BI/DimUser.php app/Models/BI/FactUnifiedRisk.php app/Models/BI/FactInvoice.php app/Models/BI/FactComplianceCase.php app/Models/BI/FactSecurityThreat.php app/Models/BI/FactAttendance.php app/Models/NotificationPreference.php app/Models/StudentStreak.php app/Models/StudentDashboardSnapshot.php app/Models/InterventionPlan.php app/Models/AcademicYearTerm.php app/Models/StudentFeeAssignment.php app/Models/ZoomWebhook.php.txt app/Models/StudentGoal.php app/Models/QuizQuestionOption.php app/Models/Assignment.php app/Models/AcademicYear.php app/Models/PaymentPlan.php app/Models/Resource.php app/Models/ClassTimetable.php app/Models/ResourceCategory.php app/Models/PaymentReceipt.php app/Models/Subject.php app/Models/InvoiceItem.php app/Models/ZoomRecording.php.txt app/Models/ReportCard.php app/Models/Communication/Notification.php app/Models/Communication/Reaction.php app/Models/Communication/AnnouncementTarget.php app/Models/Communication/CommunityTopic.php app/Models/Communication/CommunityReply.php app/Models/Communication/MessageThreadParticipant.php app/Models/Communication/Community.php app/Models/Communication/MessageThread.php app/Models/Communication/CommunityEvent.php app/Models/Communication/Announcement.php app/Models/Communication/Streak.php app/Models/Communication/ReputationTransaction.php app/Models/Communication/ActivityFeed.php app/Models/Communication/Mention.php app/Models/Communication/CommunityChannel.php app/Models/Communication/Message.php app/Models/ParentActionItemLog.php app/Models/Announcement.php app/Models/FeeCategory.php app/Models/BudgetLine.php app/Models/FeeStructure.php app/Models/StudentQuestionAnswer.php app/Models/SchoolClass.php app/Models/ParentActionItem.php app/Models/TeacherCompensationSetting.php app/Models/SubjectGrade.php app/Models/Exam.php app/Models/ClassSession.php app/Models/GradebookSnapshot.php app/Models/QuizQuestion.php app/Models/User.php app/Models/TeacherInvitation.php app/Models/StudentClassEnrollment.php app/Models/StudentOpsScore.php app/Models/ClassSessionJoin.php app/Models/TeacherSubjectAssignment.php app/Models/TeacherAvailability.php app/Models/StudentPoint.php app/Models/Attendance.php app/Models/Expense.php app/Models/PaymentPlanInstalment.php app/Models/Intelligence/InterventionTemplate.php app/Models/Intelligence/IntelligenceTemplate.php app/Models/Intelligence/IntelligenceRule.php app/Models/Intelligence/IntelligenceHistory.php app/Models/Intelligence/IntelligenceFeed.php app/Models/Governance/UserRiskProfile.php app/Models/Governance/ComplianceCase.php app/Models/Governance/ModerationFlag.php app/Models/Governance/AuditLog.php app/Models/Governance/CompliancePolicyVersion.php app/Models/Governance/UserConsent.php app/Models/Governance/SecurityIncident.php app/Models/Governance/GovernanceApprovalRequest.php app/Models/Governance/AcademicIncident.php app/Models/Governance/CompliancePolicy.php app/Models/Governance/GovernanceSnapshot.php app/Models/RewardLevel.php app/Models/Credentials/Achievement.php app/Models/Credentials/AchievementCategory.php app/Models/Credentials/CertificateTemplateVersion.php app/Models/Credentials/Certificate.php app/Models/Credentials/TeacherRecommendation.php app/Models/Credentials/UserAchievement.php app/Models/Credentials/CredentialPathwayRequirement.php app/Models/Credentials/CredentialPathway.php app/Models/Credentials/UserCredentialPathway.php app/Models/Credentials/Traits/HasCredentials.php app/Models/Credentials/CertificateRevocation.php app/Models/Payment.php app/Models/Invoice.php app/Models/Payroll/PayrollTransaction.php app/Models/Payroll/PayrollCalculation.php app/Models/Payroll/PayrollEngineVersion.php app/Models/Payroll/PayrollAdjustment.php app/Models/Payroll/PayrollPeriod.php app/Models/PaymentPlanAssignment.php app/Models/GoalProgress.php app/Models/PolicyAcceptance.php app/Models/CredentialDeliveryLog.php ================ CONTROLLERS (ENTRY POINTS) ================ app/Http/Controllers/Exam/QuizQuestionController.php app/Http/Controllers/Exam/ExamController.php app/Http/Controllers/Controller.php app/Http/Controllers/Auth/PasswordResetLinkController.php app/Http/Controllers/Auth/ParentRegistrationController.php app/Http/Controllers/Auth/RegisteredUserController.php app/Http/Controllers/Auth/PasswordController.php app/Http/Controllers/Auth/EmailVerificationNotificationController.php app/Http/Controllers/Auth/EmailVerificationPromptController.php app/Http/Controllers/Auth/AuthenticatedSessionController.php app/Http/Controllers/Auth/NewPasswordController.php app/Http/Controllers/Auth/VerifyEmailController.php app/Http/Controllers/Auth/TeacherInvitationController.php app/Http/Controllers/Auth/ConfirmablePasswordController.php app/Http/Controllers/Auth/StudentLoginController.php app/Http/Controllers/Finance/FeeCategoryController.php app/Http/Controllers/Finance/StudentFeeAssignmentController.php app/Http/Controllers/Finance/ExpenseController.php app/Http/Controllers/Finance/PaystackWebhookController.php app/Http/Controllers/Finance/BudgetController.php app/Http/Controllers/Finance/PaymentController.php app/Http/Controllers/Finance/InvoiceController.php app/Http/Controllers/Finance/FeeStructureController.php app/Http/Controllers/Finance/PaymentPlanController.php app/Http/Controllers/Finance/ParentInvoiceController.php app/Http/Controllers/Classroom/ZoomWebhookController.php app/Http/Controllers/Classroom/ClassroomController.php app/Http/Controllers/Classroom/ReplayCenterController.php app/Http/Controllers/ReportCard/ReportCardController.php app/Http/Controllers/Parent/ChildSwitcherController.php app/Http/Controllers/Parent/ActionItemController.php app/Http/Controllers/Gradebook/GradebookController.php app/Http/Controllers/Communication/CommunityEventController.php app/Http/Controllers/Communication/CommunityTopicController.php app/Http/Controllers/Communication/AnnouncementController.php app/Http/Controllers/Communication/InboxController.php app/Http/Controllers/Communication/MessageController.php app/Http/Controllers/Communication/CommunityController.php app/Http/Controllers/Communication/EngagementController.php app/Http/Controllers/Public/PayslipVerificationController.php app/Http/Controllers/ProfileController.php app/Http/Controllers/HealthCheckController.php app/Http/Controllers/Api/Classroom/RecordingUploadController.php app/Http/Controllers/Api/Classroom/WhiteboardController.php app/Http/Controllers/Api/Classroom/LivePollingController.php app/Http/Controllers/Api/Classroom/BreakoutRoomController.php app/Http/Controllers/Api/Classroom/EngagementController.php app/Http/Controllers/Api/Intelligence/IntelligenceFeedController.php app/Http/Controllers/Student/StudentDashboardController.php app/Http/Controllers/Student/ActionItemController.php app/Http/Controllers/Student/AssignmentController.php app/Http/Controllers/Student/SessionController.php app/Http/Controllers/Student/TimetableController.php app/Http/Controllers/Student/ResourceController.php app/Http/Controllers/Teacher/EarningsController.php app/Http/Controllers/Teacher/ExamController.php app/Http/Controllers/Teacher/ActionItemController.php app/Http/Controllers/Teacher/AssignmentController.php app/Http/Controllers/Teacher/SessionController.php app/Http/Controllers/Teacher/TimetableController.php app/Http/Controllers/Teacher/ResourceController.php app/Http/Controllers/Admin/AnnouncementController.php app/Http/Controllers/Admin/SubjectController.php app/Http/Controllers/Admin/QuizQuestionController.php app/Http/Controllers/Admin/DashboardController.php app/Http/Controllers/Admin/PayrollController.php app/Http/Controllers/Admin/ParentManagementController.php app/Http/Controllers/Admin/AcademicYearController.php app/Http/Controllers/Admin/ExamController.php app/Http/Controllers/Admin/AssignmentQuestionController.php app/Http/Controllers/Admin/TeacherManagementController.php app/Http/Controllers/Admin/EnrollmentController.php app/Http/Controllers/Admin/StudentManagementController.php app/Http/Controllers/Admin/AssignmentController.php app/Http/Controllers/Admin/GovernanceController.php app/Http/Controllers/Admin/CommunicationsController.php app/Http/Controllers/Admin/SessionController.php app/Http/Controllers/Admin/SchoolClassController.php app/Http/Controllers/Admin/TeacherCompensationController.php app/Http/Controllers/Admin/TimetableController.php app/Http/Controllers/Admin/AcademicTermController.php app/Http/Controllers/Admin/ResourceController.php app/Http/Controllers/Admin/CredentialsController.php app/Http/Controllers/Admin/IntelligenceController.php app/Http/Controllers/Admin/AnalyticsController.php app/Http/Controllers/Credentials/VerificationController.php app/Http/Controllers/Credentials/TeacherRecommendationController.php app/Http/Controllers/Credentials/DigitalPortfolioController.php app/Http/Controllers/Notification/NotificationController.php ================ ROUTES SNAPSHOT ================ POST admin/analytics/builder/generate ............ admin.analytics.builder.generate › Admin\AnalyticsController@buildReport POST admin/analytics/builder/save ..................... admin.analytics.builder.save › Admin\AnalyticsController@saveReport GET|HEAD admin/analytics/export ............................... admin.analytics.export › Admin\AnalyticsController@exportReport GET|HEAD admin/analytics/reports .................................. admin.analytics.reports › Admin\AnalyticsController@reports GET|HEAD admin/assignments ......................................... admin.assignments.index › Admin\AssignmentController@index POST admin/assignments ......................................... admin.assignments.store › Admin\AssignmentController@store GET|HEAD admin/assignments/create ................................ admin.assignments.create › Admin\AssignmentController@create DELETE admin/assignments/questions/{question} admin.assignments.questions.destroy › Admin\AssignmentQuestionController@destr… GET|HEAD admin/assignments/{assignment} .............................. admin.assignments.show › Admin\AssignmentController@show PUT|PATCH admin/assignments/{assignment} .......................... admin.assignments.update › Admin\AssignmentController@update DELETE admin/assignments/{assignment} ........................ admin.assignments.destroy › Admin\AssignmentController@destroy GET|HEAD admin/assignments/{assignment}/edit ......................... admin.assignments.edit › Admin\AssignmentController@edit POST admin/assignments/{assignment}/questions admin.assignments.questions.store › Admin\AssignmentQuestionController@store POST admin/channels/{channel}/topics ........... admin.channels.topics.store › Communication\CommunityTopicController@store GET|HEAD admin/channels/{channel}/topics/create .. admin.channels.topics.create › Communication\CommunityTopicController@create GET|HEAD admin/communities .................................. admin.communities.index › Communication\CommunityController@index POST admin/communities .................................. admin.communities.store › Communication\CommunityController@store GET|HEAD admin/communities/create ......................... admin.communities.create › Communication\CommunityController@create GET|HEAD admin/communities/{community} ........................ admin.communities.show › Communication\CommunityController@show PUT|PATCH admin/communities/{community} .................... admin.communities.update › Communication\CommunityController@update DELETE admin/communities/{community} .................. admin.communities.destroy › Communication\CommunityController@destroy GET|HEAD admin/communities/{community}/edit ................... admin.communities.edit › Communication\CommunityController@edit GET|HEAD admin/exams ........................................................... admin.exams.index › Admin\ExamController@index POST admin/exams ........................................................... admin.exams.store › Admin\ExamController@store GET|HEAD admin/exams/create .................................................. admin.exams.create › Admin\ExamController@create GET|HEAD admin/exams/{exam} ...................................................... admin.exams.show › Admin\ExamController@show PUT|PATCH admin/exams/{exam} .................................................. admin.exams.update › Admin\ExamController@update DELETE admin/exams/{exam} ................................................ admin.exams.destroy › Admin\ExamController@destroy GET|HEAD admin/exams/{exam}/edit ................................................. admin.exams.edit › Admin\ExamController@edit GET|HEAD admin/finance/fee-assignments ..... admin.finance.fee-assignments.index › Finance\StudentFeeAssignmentController@index POST admin/finance/fee-assignments ..... admin.finance.fee-assignments.store › Finance\StudentFeeAssignmentController@store POST admin/finance/fee-assignments/assign admin.finance.fee-assignments.assign › Finance\StudentFeeAssignmentController@as… POST admin/finance/fee-assignments/{assignment}/status admin.finance.fee-assignments.status › Finance\StudentFeeAssignment… GET|HEAD admin/finance/payment-plans/{paymentPlan}/assignments admin.finance.payment-plans.assignments › Finance\PaymentPlanCo… GET|HEAD admin/gradebook ..................................... admin.gradebook.index › Gradebook\GradebookController@adminIndex POST admin/gradebook/recalculate ............. admin.gradebook.recalculate › Gradebook\GradebookController@adminRecalculate GET|HEAD admin/report-cards ............................. admin.report-cards.index › ReportCard\ReportCardController@adminIndex POST admin/report-cards/approve-class admin.report-cards.approve-class › ReportCard\ReportCardController@adminApproveClass POST admin/report-cards/generate .............. admin.report-cards.generate › ReportCard\ReportCardController@adminGenerate POST admin/report-cards/publish-class admin.report-cards.publish-class › ReportCard\ReportCardController@adminPublishClass GET|HEAD admin/report-cards/{reportCard} .................. admin.report-cards.show › ReportCard\ReportCardController@adminShow POST admin/report-cards/{reportCard}/remarks admin.report-cards.remarks › ReportCard\ReportCardController@adminSaveRemarks GET|HEAD admin/topics/{topic} ................................. admin.topics.show › Communication\CommunityTopicController@show POST admin/topics/{topic}/replies ............... admin.topics.replies.store › Communication\CommunityTopicController@reply POST api/webhooks/zoom ......................................... api.webhooks.zoom › Classroom\ZoomWebhookController@handle POST communication/community/channels/{channel}/topics communication.topics.store › Communication\CommunityTopicController… GET|HEAD communication/community/communities ........ communication.communities.index › Communication\CommunityController@index POST communication/community/communities ........ communication.communities.store › Communication\CommunityController@store GET|HEAD communication/community/communities/create communication.communities.create › Communication\CommunityController@create GET|HEAD communication/community/communities/{community} communication.communities.show › Communication\CommunityController@sh… PUT|PATCH communication/community/communities/{community} communication.communities.update › Communication\CommunityController@… DELETE communication/community/communities/{community} communication.communities.destroy › Communication\CommunityController… GET|HEAD communication/community/communities/{community}/edit communication.communities.edit › Communication\CommunityControll… POST communication/community/events/{event}/convert communication.events.convert › Communication\CommunityEventController@… POST communication/community/reactions/toggle communication.reactions.toggle › Communication\EngagementController@toggleRe… POST communication/community/topics/{topic}/replies communication.topics.reply › Communication\CommunityTopicController@re… GET|HEAD parent/child/goals ................................................................................ parent.goals.index GET|HEAD parent/gradebook ........................................................................... parent.gradebook.overview GET|HEAD parent/gradebook/{student} ........................ parent.gradebook.index › Gradebook\GradebookController@parentIndex GET|HEAD parent/report-cards .......................... parent.report-cards.index › ReportCard\ReportCardController@parentIndex GET|HEAD student/assessments ............................. student.assessments.index › Student\AssignmentController@assessments GET|HEAD student/assessments/{assessment}/results .......... student.assessments.results › Student\AssignmentController@results GET|HEAD student/exams .................................................................................... student.exams.index GET|HEAD student/goals .................................................................................... student.goals.index GET|HEAD student/gradebook ............................... student.gradebook.index › Gradebook\GradebookController@studentIndex GET|HEAD student/report-cards ....................... student.report-cards.index › ReportCard\ReportCardController@studentIndex GET|HEAD teacher/assignments ................................... teacher.assignments.index › Teacher\AssignmentController@index POST teacher/assignments ................................... teacher.assignments.store › Teacher\AssignmentController@store DELETE teacher/assignments/questions/{question} teacher.assignments.questions.destroy › Teacher\AssignmentController@destroy… GET|HEAD teacher/assignments/{assignment} ........................ teacher.assignments.show › Teacher\AssignmentController@show PUT teacher/assignments/{assignment} .................... teacher.assignments.update › Teacher\AssignmentController@update DELETE teacher/assignments/{assignment} .................. teacher.assignments.destroy › Teacher\AssignmentController@destroy GET|HEAD teacher/assignments/{assignment}/edit ................... teacher.assignments.edit › Teacher\AssignmentController@edit POST teacher/assignments/{assignment}/questions teacher.assignments.questions.store › Teacher\AssignmentController@storeQu… GET|HEAD teacher/assignments/{assignment}/submissions/{submission}/grade teacher.assignments.grade › Teacher\AssignmentControl… POST teacher/assignments/{assignment}/submissions/{submission}/grade teacher.assignments.store-grade › Teacher\AssignmentC… GET|HEAD teacher/exams ..................................................... teacher.exams.index › Teacher\ExamController@index POST teacher/exams ..................................................... teacher.exams.store › Teacher\ExamController@store GET|HEAD teacher/exams/create ............................................ teacher.exams.create › Teacher\ExamController@create GET|HEAD teacher/exams/{exam} ................................................ teacher.exams.show › Teacher\ExamController@show PUT teacher/exams/{exam} ............................................ teacher.exams.update › Teacher\ExamController@update DELETE teacher/exams/{exam} .......................................... teacher.exams.destroy › Teacher\ExamController@destroy GET|HEAD teacher/exams/{exam}/edit ........................................... teacher.exams.edit › Teacher\ExamController@edit POST teacher/exams/{exam}/manual-grade/{answer} . teacher.exams.questions.manual-grade › Teacher\ExamController@manualGrade POST teacher/exams/{exam}/questions .................. teacher.exams.questions.store › Teacher\ExamController@storeQuestion DELETE teacher/exams/{exam}/questions/{question} ... teacher.exams.questions.destroy › Teacher\ExamController@destroyQuestion GET|HEAD teacher/goals .................................................................................... teacher.goals.index GET|HEAD teacher/gradebook ............................... teacher.gradebook.index › Gradebook\GradebookController@teacherIndex PATCH teacher/gradebook/comment/{id} ..... teacher.gradebook.comment.save › Gradebook\GradebookController@teacherSaveComment POST teacher/gradebook/publish ................... teacher.gradebook.publish › Gradebook\GradebookController@teacherPublish GET|HEAD teacher/report-cards ....................... teacher.report-cards.index › ReportCard\ReportCardController@teacherIndex POST teacher/report-cards/generate ........ teacher.report-cards.generate › ReportCard\ReportCardController@teacherGenerate POST teacher/report-cards/publish-class teacher.report-cards.publish-class › ReportCard\ReportCardController@teacherPublis… GET|HEAD teacher/report-cards/{reportCard} ............ teacher.report-cards.show › ReportCard\ReportCardController@teacherShow DELETE teacher/report-cards/{reportCard} ...... teacher.report-cards.destroy › ReportCard\ReportCardController@teacherDestroy POST teacher/report-cards/{reportCard}/remarks teacher.report-cards.remarks › ReportCard\ReportCardController@teacherSaveR… ================ BLADE STRUCTURE ================ resources/views/parent/goals.blade.php resources/views/parent/report-cards/index.blade.php resources/views/parent/gradebook/index.blade.php resources/views/parent/reports.blade.php resources/views/pdf/report-card.blade.php resources/views/student/goals.blade.php resources/views/student/report-cards/index.blade.php resources/views/student/exams/results.blade.php resources/views/student/exams/index.blade.php resources/views/student/exams/take.blade.php resources/views/student/gradebook/index.blade.php resources/views/student/reports.blade.php resources/views/components/rp/goal-card.blade.php resources/views/components/rp-goal-card.blade.php resources/views/admin/report-cards/show.blade.php resources/views/admin/report-cards/index.blade.php resources/views/admin/exams/show.blade.php resources/views/admin/exams/index.blade.php resources/views/admin/analytics/reports.blade.php resources/views/admin/assignments/edit.blade.php resources/views/admin/assignments/show.blade.php resources/views/admin/assignments/index.blade.php resources/views/admin/finance/fee-assignments.blade.php resources/views/admin/finance/payment-plans/assignments.blade.php resources/views/admin/gradebook/index.blade.php resources/views/admin/zoom-settings.blade.php resources/views/communications/community-hub.blade.php resources/views/teacher/goals.blade.php resources/views/teacher/report-cards/index.blade.php resources/views/teacher/exams/questions/index.blade.php resources/views/teacher/exams/edit.blade.php resources/views/teacher/exams/show.blade.php resources/views/teacher/exams/create.blade.php resources/views/teacher/exams/index.blade.php resources/views/teacher/assignments/grade.blade.php resources/views/teacher/assignments/edit.blade.php resources/views/teacher/assignments/show.blade.php resources/views/teacher/assignments/index.blade.php resources/views/teacher/gradebook/index.blade.php resources/views/teacher/reports.blade.php ================ EVENT / LOGIC CONNECTION SIGNALS ================ app/Services/ReportCardService.php:3:namespace App\Services; app/Services/ReportCardService.php:21:class ReportCardService app/Services/BI/CredentialFactExtractorService.php:3:namespace App\Services\BI; app/Services/BI/CredentialFactExtractorService.php:7:class CredentialFactExtractorService app/Services/Finance/PayrollPaymentWorkflowService.php:3:namespace App\Services\Finance; app/Services/Finance/PayrollPaymentWorkflowService.php:7:use App\Events\Finance\PayrollPaid; app/Services/Finance/PayrollPaymentWorkflowService.php:8:use App\Events\Finance\PayrollFailed; app/Services/Finance/PayrollPaymentWorkflowService.php:9:use App\Events\Finance\PayrollReversed; app/Services/Finance/PayrollPaymentWorkflowService.php:15:class PayrollPaymentWorkflowService app/Services/Finance/PayrollPaymentWorkflowService.php:33: event(new PayrollPaid($payroll)); app/Services/Finance/PayrollPaymentWorkflowService.php:44: event(new PayrollFailed($payroll, $failureReason)); app/Services/Finance/PayrollPaymentWorkflowService.php:75: event(new PayrollReversed($payroll)); app/Services/Finance/InvoiceService.php:3:namespace App\Services\Finance; app/Services/Finance/InvoiceService.php:13:class InvoiceService app/Services/Finance/InvoiceService.php:69: * event(new InvoicePublished($invoice)); app/Services/Finance/InvoiceService.php:73: * InvoicePublished::dispatch($invoice); app/Services/Finance/PayrollEngineService.php:3:namespace App\Services\Finance; app/Services/Finance/PayrollEngineService.php:6:use App\Events\Payroll\PayrollApproved; app/Services/Finance/PayrollEngineService.php:7:use App\Events\Payroll\PayrollLocked; app/Services/Finance/PayrollEngineService.php:12:class PayrollEngineService app/Services/Finance/PayrollEngineService.php:14: protected PayslipVerificationService $verificationService; app/Services/Finance/PayrollEngineService.php:17: PayslipVerificationService $verificationService app/Services/Finance/PayrollEngineService.php:19: $this->verificationService = $verificationService; app/Services/Finance/PayrollEngineService.php:23: * Prevent regeneration of immutable payroll periods. app/Services/Finance/PayrollEngineService.php:61: $this->verificationService app/Services/Finance/PayrollEngineService.php:75: event( app/Services/Finance/PayrollEngineService.php:105: event( app/Services/Finance/PayrollGenerationService.php:3:namespace App\Services\Finance; app/Services/Finance/PayrollGenerationService.php:11:use App\Events\Finance\PayrollCalculated; app/Services/Finance/PayrollGenerationService.php:18:class PayrollGenerationService app/Services/Finance/PaystackService.php:3:namespace App\Services\Finance; app/Services/Finance/PaystackService.php:12:class PaystackService app/Services/Finance/PaystackService.php:88: $event = $payload['event'] ?? null; app/Services/Finance/PaystackService.php:91: if ($event === 'charge.success') { app/Services/Finance/PaystackService.php:140: // Note: Dispatch PaymentSuccessful Event to send Email app/Services/Finance/PayslipVerificationService.php:3:namespace App\Services\Finance; app/Services/Finance/PayslipVerificationService.php:10:class PayslipVerificationService app/Services/Finance/PaymentService.php:3:namespace App\Services\Finance; app/Services/Finance/PaymentService.php:8:use App\Events\PaymentSuccessful; app/Services/Finance/PaymentService.php:11:class PaymentService app/Services/Finance/PaymentService.php:51: event(new PaymentSuccessful( app/Services/Finance/PaymentPlanService.php:3:namespace App\Services\Finance; app/Services/Finance/PaymentPlanService.php:14: * PLAN 1 FEATURE 4 — Payment Plan Service app/Services/Finance/PaymentPlanService.php:24:class PaymentPlanService app/Services/Finance/TeacherEarningsService.php:3:namespace App\Services\Finance; app/Services/Finance/TeacherEarningsService.php:9:class TeacherEarningsService app/Services/SessionNotificationService.php:3:namespace App\Services; app/Services/SessionNotificationService.php:13:class SessionNotificationService app/Services/SessionNotificationService.php:25: $this->smsApiKey = config('services.txtconnect.api_key', ''); app/Services/SessionNotificationService.php:26: $this->smsSender = config('services.txtconnect.sender', 'RPLearning'); app/Services/SessionNotificationService.php:27: $this->smsEnabled = config('services.txtconnect.enabled', false); app/Services/ZoomVideoSDKService.php:3:namespace App\Services; app/Services/ZoomVideoSDKService.php:11:class ZoomVideoSDKService app/Services/ZoomVideoSDKService.php:96: * Stores event idempotently then dispatches processing. app/Services/ZoomVideoSDKService.php:98: public function handleWebhook(array $payload, string $eventId): ZoomWebhook app/Services/ZoomVideoSDKService.php:101: $existing = ZoomWebhook::where('zoom_event_id', $eventId)->first(); app/Services/ZoomVideoSDKService.php:103: Log::info("Zoom webhook already received: {$eventId}"); app/Services/ZoomVideoSDKService.php:109: 'zoom_event_id' => $eventId, app/Services/ZoomVideoSDKService.php:110: 'event_type' => $payload['event'] ?? 'unknown', app/Services/ZoomVideoSDKService.php:124: match ($webhook->event_type) { app/Services/ZoomVideoSDKService.php:144: // AutoAttendanceService handles the attendance marking via job app/Services/AutoAttendanceService.php:3:namespace App\Services; app/Services/AutoAttendanceService.php:11:class AutoAttendanceService app/Services/AutoAttendanceService.php:104: 'remarks' => 'Auto-marked via portal join event', app/Services/TeacherInvitationService.php:3:namespace App\Services; app/Services/TeacherInvitationService.php:8:class TeacherInvitationService app/Services/Communication/OPSEngineService.php:3:namespace App\Services\Communication; app/Services/Communication/OPSEngineService.php:11:class OPSEngineService app/Services/Communication/OPSEngineService.php:37: // Fire event so UI/Reverb can trigger a "Points Earned" animation app/Services/Communication/OPSEngineService.php:38: event(new \App\Events\Communication\ReputationAwarded($transaction)); app/Services/Communication/OPSEngineService.php:79: event(new \App\Events\Communication\StreakUpdated($streak)); app/Services/Communication/CommunityService.php:3:namespace App\Services\Communication; app/Services/Communication/CommunityService.php:7:use App\Models\Communication\CommunityEvent; app/Services/Communication/CommunityService.php:12:class CommunityService app/Services/Communication/CommunityService.php:45: // Dispatch Domain Event (We will build this in Phase 4) app/Services/Communication/CommunityService.php:46: event(new \App\Events\Communication\TopicCreated($topic)); app/Services/Communication/CommunityService.php:78: // High-Performance Counter Increment (Prevents expensive COUNT queries) app/Services/Communication/CommunityService.php:81: event(new \App\Events\Communication\ReplyPosted($reply)); app/Services/Communication/CommunityService.php:89: | ZOOM INTEGRATION HOOK (COMMUNITY EVENT -> CLASS SESSION) app/Services/Communication/CommunityService.php:92: public function convertEventToSession(int $communityEventId, int $teacherId, string $provider = 'zoom'): ClassSession app/Services/Communication/CommunityService.php:94: return DB::transaction(function () use ($communityEventId, $teacherId, $provider) { app/Services/Communication/CommunityService.php:95: $event = CommunityEvent::findOrFail($communityEventId); app/Services/Communication/CommunityService.php:97: if ($event->isConvertedToSession()) { app/Services/Communication/CommunityService.php:98: throw new \Exception("This event has already been converted to a Virtual Classroom session."); app/Services/Communication/CommunityService.php:102: // Splitting the CommunityEvent's scheduled_date into session_date and start_time app/Services/Communication/CommunityService.php:103: $sessionDate = $event->scheduled_date ? $event->scheduled_date->toDateString() : now()->toDateString(); app/Services/Communication/CommunityService.php:104: $startTime = $event->scheduled_date ? $event->scheduled_date->toTimeString() : now()->toTimeString(); app/Services/Communication/CommunityService.php:110: 'subject_id' => $event->subject_id ?? 999, app/Services/Communication/CommunityService.php:111: 'academic_year_id' => $event->academic_year_id ?? 999, app/Services/Communication/CommunityService.php:112: 'topic' => $event->title, app/Services/Communication/CommunityService.php:113: 'teacher_notes' => $event->description, app/Services/Communication/CommunityService.php:116: 'end_time' => $event->scheduled_date ? $event->scheduled_date->addHours(1)->toTimeString() : now()->addHours(1)->toTimeString(), app/Services/Communication/CommunityService.php:121: // Update the Community Event to lock the bridge app/Services/Communication/CommunityService.php:122: $event->update([ app/Services/Communication/CommunityService.php:127: // This event will trigger the VCP Provider API (Zoom/Google) to fetch the actual URLs app/Services/Communication/CommunityService.php:128: event(new \App\Events\Communication\CommunityEventConverted($event, $session)); app/Services/Communication/EngagementService.php:3:namespace App\Services\Communication; app/Services/Communication/EngagementService.php:10:class EngagementService app/Services/Communication/EngagementService.php:49: event(new \App\Events\Communication\ReactionAdded($reaction)); app/Services/Communication/AnnouncementService.php:3:namespace App\Services\Communication; app/Services/Communication/AnnouncementService.php:9:class AnnouncementService app/Services/Communication/MessageService.php:3:namespace App\Services\Communication; app/Services/Communication/MessageService.php:11:class MessageService app/Services/QuizQuestionService.php:3:namespace App\Services; app/Services/QuizQuestionService.php:12:class QuizQuestionService app/Services/CredentialGeneratorService.php:3:namespace App\Services; app/Services/CredentialGeneratorService.php:8:class CredentialGeneratorService app/Services/CredentialGeneratorService.php:85: * Log a credential delivery event. app/Services/GradebookService.php:3:namespace App\Services; app/Services/GradebookService.php:19:class GradebookService app/Services/VCP/Routing/RecordingRoutingService.php:3:namespace App\Services\VCP\Routing; app/Services/VCP/Routing/RecordingRoutingService.php:6:use App\Models\Communication\CommunityEvent; app/Services/VCP/Routing/RecordingRoutingService.php:7:use App\Services\Communication\CommunityService; app/Services/VCP/Routing/RecordingRoutingService.php:11:class RecordingRoutingService app/Services/VCP/Routing/RecordingRoutingService.php:13: protected CommunityService $communityService; app/Services/VCP/Routing/RecordingRoutingService.php:15: public function __construct(CommunityService $communityService) app/Services/VCP/Routing/RecordingRoutingService.php:17: $this->communityService = $communityService; app/Services/VCP/Routing/RecordingRoutingService.php:55: // BI Readiness: Log the processing event for Phase 15 Analytics app/Services/VCP/Routing/RecordingRoutingService.php:65: $event = CommunityEvent::where('class_session_id', $session->id)->first(); app/Services/VCP/Routing/RecordingRoutingService.php:67: if ($event) { app/Services/VCP/Routing/RecordingRoutingService.php:68: $this->communityService->createTopic( app/Services/VCP/Routing/RecordingRoutingService.php:69: $event->community_channel_id ?? 1, app/Services/VCP/Routing/RecordingRoutingService.php:76: // Fallback: If it's tagged 'community' but no event exists, attach directly. app/Services/VCP/VcpProviderInterface.php:3:namespace App\Services\VCP; app/Services/VCP/Providers/ZoomVcpProvider.php:3:namespace App\Services\VCP\Providers; app/Services/VCP/Providers/ZoomVcpProvider.php:6:use App\Services\VCP\VcpProviderInterface; app/Services/VCP/Providers/ZoomVcpProvider.php:18: // These will eventually be loaded dynamically per tenant (School) app/Services/VCP/Providers/ZoomVcpProvider.php:19: $this->accountId = config('services.zoom.account_id'); app/Services/VCP/Providers/ZoomVcpProvider.php:20: $this->clientId = config('services.zoom.client_id'); app/Services/VCP/Providers/ZoomVcpProvider.php:21: $this->clientSecret = config('services.zoom.client_secret'); app/Services/OpsCalculator.php:3:namespace App\Services; app/Services/Intelligence/RuleEvaluatorService.php:3:namespace App\Services\Intelligence; app/Services/Intelligence/RuleEvaluatorService.php:11:class RuleEvaluatorService app/Services/Intelligence/Providers/DeterministicProvider.php:3:namespace App\Services\Intelligence\Providers; app/Services/Intelligence/Providers/DeterministicProvider.php:11:use App\Services\Intelligence\RuleEvaluatorService; app/Services/Intelligence/Providers/DeterministicProvider.php:15: protected RuleEvaluatorService $evaluator; app/Services/Intelligence/Providers/DeterministicProvider.php:17: public function __construct(RuleEvaluatorService $evaluator) app/Services/Credentials/CertificateEngineService.php:3:namespace App\Services\Credentials; app/Services/Credentials/CertificateEngineService.php:12:class CertificateEngineService app/Services/Credentials/CertificateEngineService.php:39: \App\Jobs\Credentials\GenerateCertificateJob::dispatch($certificate); app/Services/Credentials/AchievementEngineService.php:3:namespace App\Services\Credentials; app/Services/Credentials/AchievementEngineService.php:12:use App\Events\Credentials\AchievementUnlocked; app/Services/Credentials/AchievementEngineService.php:14:class AchievementEngineService app/Services/Credentials/AchievementEngineService.php:47: $ops = app(\App\Services\Communication\OPSEngineService::class); app/Services/Credentials/AchievementEngineService.php:54: event(new AchievementUnlocked($userAchievement)); app/Services/Credentials/AchievementEngineService.php:100: // Trigger Master Pathway Unlocked Event if hitting 100% app/Services/Credentials/AchievementEngineService.php:102: // event(new PathwayCompleted(...)); app/Services/CEE/EngagementEngineService.php:3:namespace App\Services\CEE; app/Services/CEE/EngagementEngineService.php:10:class EngagementEngineService app/Services/CEE/EngagementEngineService.php:17: public function dispatchNotification( app/Services/CEE/EngagementEngineService.php:48: string $eventType, app/Services/CEE/EngagementEngineService.php:56: $eventType, app/Services/CEE/EngagementEngineService.php:66: 'event_type' => $eventType, app/Events/Finance/PayrollFailed.php:2:namespace App\Events\Finance; app/Events/Finance/PayrollFailed.php:4:use Illuminate\Foundation\Events\Dispatchable; app/Events/Finance/PayrollFailed.php:7: use Dispatchable, SerializesModels; app/Events/Finance/PayrollPaid.php:2:namespace App\Events\Finance; app/Events/Finance/PayrollPaid.php:4:use Illuminate\Foundation\Events\Dispatchable; app/Events/Finance/PayrollPaid.php:7: use Dispatchable, SerializesModels; app/Events/Finance/PayrollReversed.php:2:namespace App\Events\Finance; app/Events/Finance/PayrollReversed.php:4:use Illuminate\Foundation\Events\Dispatchable; app/Events/Finance/PayrollReversed.php:7: use Dispatchable, SerializesModels; app/Events/Finance/PayrollCalculated.php:2:namespace App\Events\Finance; app/Events/Finance/PayrollCalculated.php:4:use Illuminate\Foundation\Events\Dispatchable; app/Events/Finance/PayrollCalculated.php:7: use Dispatchable, SerializesModels; app/Events/Classroom/PollCreated.php:3:namespace App\Events\Classroom; app/Events/Classroom/PollCreated.php:9:use Illuminate\Foundation\Events\Dispatchable; app/Events/Classroom/PollCreated.php:14: use Dispatchable, InteractsWithSockets, SerializesModels; app/Events/ZoomSessionEnded.php:3:namespace App\Events; app/Events/ZoomSessionEnded.php:6:use Illuminate\Foundation\Events\Dispatchable; app/Events/ZoomSessionEnded.php:11: use Dispatchable, SerializesModels; app/Events/PaymentSuccessful.php:3:namespace App\Events; app/Events/PaymentSuccessful.php:7:use Illuminate\Foundation\Events\Dispatchable; app/Events/PaymentSuccessful.php:12: use Dispatchable, SerializesModels; app/Events/InvoiceCreated.php:3:namespace App\Events; app/Events/InvoiceCreated.php:10:use Illuminate\Foundation\Events\Dispatchable; app/Events/InvoiceCreated.php:15: use Dispatchable, InteractsWithSockets, SerializesModels; app/Events/InvoiceCreated.php:18: * Create a new event instance. app/Events/InvoiceCreated.php:26: * Get the channels the event should broadcast on. app/Events/InvoiceDue.php:3:namespace App\Events; app/Events/InvoiceDue.php:10:use Illuminate\Foundation\Events\Dispatchable; app/Events/InvoiceDue.php:15: use Dispatchable, InteractsWithSockets, SerializesModels; app/Events/InvoiceDue.php:18: * Create a new event instance. app/Events/InvoiceDue.php:26: * Get the channels the event should broadcast on. app/Events/InvoiceOverdue.php:3:namespace App\Events; app/Events/InvoiceOverdue.php:10:use Illuminate\Foundation\Events\Dispatchable; app/Events/InvoiceOverdue.php:15: use Dispatchable, InteractsWithSockets, SerializesModels; app/Events/InvoiceOverdue.php:18: * Create a new event instance. app/Events/InvoiceOverdue.php:26: * Get the channels the event should broadcast on. app/Events/Communication/ReplyPosted.php:3:namespace App\Events\Communication; app/Events/Communication/ReplyPosted.php:9:use Illuminate\Foundation\Events\Dispatchable; app/Events/Communication/ReplyPosted.php:14: use Dispatchable, InteractsWithSockets, SerializesModels; app/Events/Communication/ReputationAwarded.php:3:namespace App\Events\Communication; app/Events/Communication/ReputationAwarded.php:6:use Illuminate\Foundation\Events\Dispatchable; app/Events/Communication/ReputationAwarded.php:11: use Dispatchable, SerializesModels; app/Events/Communication/CommunityEventConverted.php:3:namespace App\Events\Communication; app/Events/Communication/CommunityEventConverted.php:5:use App\Models\Communication\CommunityEvent; app/Events/Communication/CommunityEventConverted.php:8:use Illuminate\Foundation\Events\Dispatchable; app/Events/Communication/CommunityEventConverted.php:11:class CommunityEventConverted app/Events/Communication/CommunityEventConverted.php:13: use Dispatchable, InteractsWithSockets, SerializesModels; ================================================== END SYSTEM MAP ==================================================