. */ declare(strict_types=1); namespace FireflyIII\Providers; use FireflyIII\Helpers\Collector\GroupCollector; use FireflyIII\Helpers\Collector\GroupCollectorInterface; use FireflyIII\Repositories\Journal\JournalAPIRepository; use FireflyIII\Repositories\Journal\JournalAPIRepositoryInterface; use FireflyIII\Repositories\Journal\JournalCLIRepository; use FireflyIII\Repositories\Journal\JournalCLIRepositoryInterface; use FireflyIII\Repositories\Journal\JournalRepository; use FireflyIII\Repositories\Journal\JournalRepositoryInterface; use FireflyIII\Repositories\TransactionGroup\TransactionGroupRepository; use FireflyIII\Repositories\TransactionGroup\TransactionGroupRepositoryInterface; use Illuminate\Foundation\Application; use Illuminate\Support\ServiceProvider; /** * @codeCoverageIgnore * Class JournalServiceProvider. */ class JournalServiceProvider extends ServiceProvider { /** * Bootstrap the application services. */ public function boot(): void { } /** * Register the application services. */ public function register(): void { $this->registerRepository(); $this->registerGroupRepository(); $this->registerGroupCollector(); } /** * */ private function registerGroupCollector(): void { $this->app->bind( GroupCollectorInterface::class, static function (Application $app) { /** @var GroupCollectorInterface $collector */ $collector = app(GroupCollector::class); if ($app->auth->check()) { $collector->setUser(auth()->user()); } return $collector; } ); } /** * Register group repos. */ private function registerGroupRepository(): void { $this->app->bind( TransactionGroupRepositoryInterface::class, static function (Application $app) { /** @var TransactionGroupRepositoryInterface $repository */ $repository = app(TransactionGroupRepository::class); if ($app->auth->check()) { $repository->setUser(auth()->user()); } return $repository; } ); } /** * Register repository. */ private function registerRepository(): void { $this->app->bind( JournalRepositoryInterface::class, static function (Application $app) { /** @var JournalRepositoryInterface $repository */ $repository = app(JournalRepository::class); if ($app->auth->check()) { $repository->setUser(auth()->user()); } return $repository; } ); // also bind new API repository $this->app->bind( JournalAPIRepositoryInterface::class, static function (Application $app) { /** @var JournalAPIRepositoryInterface $repository */ $repository = app(JournalAPIRepository::class); if ($app->auth->check()) { $repository->setUser(auth()->user()); } return $repository; } ); // also bind new CLI repository $this->app->bind( JournalCLIRepositoryInterface::class, static function (Application $app) { /** @var JournalCLIRepositoryInterface $repository */ $repository = app(JournalCLIRepository::class); if ($app->auth->check()) { $repository->setUser(auth()->user()); } return $repository; } ); } }