app->singleton(ApplicationUrlService::class); $this->app->singleton(AttendancePolicyService::class); $this->app->singleton(SemesterRangeService::class); $this->app->singleton(AttendanceRecordSyncService::class); $this->app->singleton(StudentAttendanceWriterService::class); $this->app->singleton(TeacherAttendanceSubmissionService::class); $this->app->singleton(AttendanceAutoPublishService::class); $this->app->bind(AttendanceMailerService::class, DefaultAttendanceMailerService::class); $this->app->singleton(StaffTimeOffLinkService::class); $this->app->singleton(InvoiceConfigService::class); $this->app->bind(InvoiceGradeService::class, function ($app) { $config = $app->make(InvoiceConfigService::class); return new InvoiceGradeService($config->getGradeFee()); }); $this->app->bind(InvoiceTuitionService::class, function ($app) { $config = $app->make(InvoiceConfigService::class); return new InvoiceTuitionService( $app->make(InvoiceGradeService::class), $config->getGradeFee(), $config->getFirstStudentFee(), $config->getSecondStudentFee(), $config->getYouthFee(), $config->getTimezone() ); }); } public function boot(): void { Gate::policy(NavItem::class, NavItemPolicy::class); Gate::policy(ClassSection::class, ClassSectionPolicy::class); Gate::policy(IpAttempt::class, IpAttemptPolicy::class); Gate::policy(LateSlipLog::class, LateSlipLogPolicy::class); Gate::policy(Message::class, MessagePolicy::class); Gate::policy(Preferences::class, PreferencesPolicy::class); Gate::policy(Staff::class, StaffPolicy::class); Gate::policy(SupportRequest::class, SupportRequestPolicy::class); Gate::policy(Setting::class, SettingPolicy::class); Gate::policy(ClassProgressReport::class, ClassProgressReportPolicy::class); $this->app->resolving(FormRequest::class, function (FormRequest $request, $app): void { $request->setContainer($app)->setRedirector($app->make(Redirector::class)); }); } }