Bristol SU Support Package
ModuleInstanceServiceProvider.php
Go to the documentation of this file.
1 <?php
2 
4 
12 use BristolSU\Support\ModuleInstance\Contracts\ModuleInstanceRepository as ModuleInstanceRepositoryContract;
24 
28 class ModuleInstanceServiceProvider extends ServiceProvider
29 {
30 
38  public function register()
39  {
40  $this->app->bind(ModuleInstanceRepositoryContract::class, ModuleInstanceRepository::class);
41  $this->app->bind(ActivityEvaluatorContract::class, ActivityInstanceEvaluator::class);
42  $this->app->bind(ModuleInstanceEvaluatorContract::class, ModuleInstanceEvaluator::class);
43  $this->app->bind(EvaluationContract::class, Evaluation::class);
44  $this->app->bind(ModuleInstanceServiceRepositoryContract::class, ModuleInstanceServiceRepository::class);
45  $this->app->singleton(ModuleSettingsStoreContract::class, ModuleSettingsStore::class);
46  $this->app->singleton(CommandStoreContract::class, CommandStore::class);
47  }
48 
57  public function boot()
58  {
59  $this->app['router']->pushMiddlewareToGroup('module', InjectModuleInstance::class);
60 
61  Route::bind('module_instance_setting', function($id) {
62  return ModuleInstanceSetting::findOrFail($id);
63  });
64 
65  Route::bind('module_instance_service', function($id) {
66  return ModuleInstanceService::findOrFail($id);
67  });
68 
69  Route::bind('module_instance_slug', function($slug, $route) {
70  $activity = $route->parameter('activity_slug');
71  return ModuleInstance::where('slug', $slug)
72  ->whereHas('activity', function($query) use ($activity) {
73  $query->where('slug', $activity->slug);
74  })
75  ->firstOrFail();
76  });
77 
78  }
79 
80 }