app->singleton(DrawService::class, function () { return new DrawService(); }); $this->app->singleton(AuditionService::class, function () { return new AuditionService(); }); $this->app->singleton(SeatingService::class, function ($app) { return new SeatingService($app->make(TabulationService::class)); }); $this->app->singleton(EntryService::class, function ($app) { return new EntryService($app->make(AuditionService::class)); }); $this->app->singleton(ScoreService::class, function ($app) { return new ScoreService($app->make(AuditionService::class), $app->make(EntryService::class)); }); $this->app->singleton(TabulationService::class, function ($app) { return new TabulationService( $app->make(AuditionService::class), $app->make(ScoreService::class), $app->make(EntryService::class)); }); $this->app->singleton(DoublerService::class, function ($app) { return new DoublerService($app->make(AuditionService::class), $app->make(TabulationService::class), $app->make(SeatingService::class)); }); } /** * Bootstrap any application services. */ public function boot(): void { Entry::observe(EntryObserver::class); Audition::observe(AuditionObserver::class); Room::observe(RoomObserver::class); RoomUser::observe(RoomUserObserver::class); School::observe(SchoolObserver::class); ScoreSheet::observe(ScoreSheetObserver::class); ScoringGuide::observe(ScoringGuideObserver::class); Student::observe(StudentObserver::class); SubscoreDefinition::observe(SubscoreDefinitionObserver::class); User::observe(UserObserver::class); SeatingLimit::observe(SeatingLimitObserver::class); Event::listen( AuditionChange::class, RefreshAuditionCache::class ); Event::listen( EntryChange::class, RefreshEntryCache::class ); Event::listen( ScoringGuideChange::class, RefreshScoringGuideCache::class ); Event::listen( ScoreSheetChange::class, RefreshScoreSheetCache::class ); Event::listen( SeatingLimitChange::class, RefreshSeatingLimitCache::class ); } }