Bristol SU Support Package
ActivityInstanceServiceProvider.php
Go to the documentation of this file.
1 <?php
2 
4 
8 use BristolSU\Support\ActivityInstance\Contracts\DefaultActivityInstanceGenerator as DefaultActivityInstanceGeneratorContract;
19 
23 class ActivityInstanceServiceProvider extends ServiceProvider
24 {
25 
33  public function register()
34  {
35  $this->app->call([$this, 'registerActivityInstanceResolver']);
36  $this->app->bind(ActivityInstanceRepositoryContract::class, ActivityInstanceRepository::class);
37  $this->app->bind(DefaultActivityInstanceGeneratorContract::class, DefaultActivityInstanceGenerator::class);
38  }
39 
46  public function boot()
47  {
48  $this->app['router']->pushMiddlewareToGroup('participant', CheckLoggedIntoActivityInstance::class);
49  $this->app['router']->pushMiddlewareToGroup('participant', CheckActivityInstanceForActivity::class);
50  $this->app['router']->pushMiddlewareToGroup('participant', CheckActivityInstanceAccessible::class);
51  $this->app['router']->pushMiddlewareToGroup('participant', InjectActivityInstance::class);
52  $this->app['router']->pushMiddlewareToGroup('nonmodule', ClearActivityInstance::class);
53 
54  Auth::provider('activity-instance-provider', function(Container $app, array $config) {
55  return new ActivityInstanceProvider(app(ActivityInstanceRepositoryContract::class));
56  });
57  }
58 
66  public function registerActivityInstanceResolver(Request $request)
67  {
68  $this->app->bind(ActivityInstanceResolver::class, function($app) use ($request) {
69  return ($request->is('api/*') ?
70  $app->make(ApiActivityInstanceResolver::class) : $app->make(WebRequestActivityInstanceResolver::class));
71  });
72  }
73 
74 }