| 
									
										
										
										
											2016-03-03 08:55:43 +01:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2016-05-20 12:41:23 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * JournalServiceProvider.php | 
					
						
							| 
									
										
										
										
											2020-02-16 13:55:52 +01:00
										 |  |  |  * Copyright (c) 2019 james@firefly-iii.org | 
					
						
							| 
									
										
										
										
											2016-05-20 12:41:23 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * This file is part of Firefly III (https://github.com/firefly-iii). | 
					
						
							| 
									
										
										
										
											2016-10-05 06:52:15 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU Affero General Public License as | 
					
						
							|  |  |  |  * published by the Free Software Foundation, either version 3 of the | 
					
						
							|  |  |  |  * License, or (at your option) any later version. | 
					
						
							| 
									
										
										
										
											2017-10-21 08:40:00 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							| 
									
										
										
										
											2017-10-21 08:40:00 +02:00
										 |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * GNU Affero General Public License for more details. | 
					
						
							| 
									
										
										
										
											2017-10-21 08:40:00 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |  * along with this program.  If not, see <https://www.gnu.org/licenses/>. | 
					
						
							| 
									
										
										
										
											2016-05-20 12:41:23 +02:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2017-04-09 07:44:22 +02:00
										 |  |  | declare(strict_types=1); | 
					
						
							| 
									
										
										
										
											2016-05-20 08:57:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-03 08:55:43 +01:00
										 |  |  | namespace FireflyIII\Providers; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-24 09:23:36 +01:00
										 |  |  | use FireflyIII\Helpers\Collector\GroupCollector; | 
					
						
							|  |  |  | use FireflyIII\Helpers\Collector\GroupCollectorInterface; | 
					
						
							| 
									
										
										
										
											2019-08-10 13:42:33 +02:00
										 |  |  | use FireflyIII\Repositories\Journal\JournalAPIRepository; | 
					
						
							|  |  |  | use FireflyIII\Repositories\Journal\JournalAPIRepositoryInterface; | 
					
						
							| 
									
										
										
										
											2019-08-10 14:41:08 +02:00
										 |  |  | use FireflyIII\Repositories\Journal\JournalCLIRepository; | 
					
						
							|  |  |  | use FireflyIII\Repositories\Journal\JournalCLIRepositoryInterface; | 
					
						
							| 
									
										
										
										
											2017-01-30 16:58:10 +01:00
										 |  |  | use FireflyIII\Repositories\Journal\JournalRepository; | 
					
						
							|  |  |  | use FireflyIII\Repositories\Journal\JournalRepositoryInterface; | 
					
						
							| 
									
										
										
										
											2019-03-25 15:14:09 +01:00
										 |  |  | use FireflyIII\Repositories\TransactionGroup\TransactionGroupRepository; | 
					
						
							|  |  |  | use FireflyIII\Repositories\TransactionGroup\TransactionGroupRepositoryInterface; | 
					
						
							| 
									
										
										
										
											2016-03-03 08:55:43 +01:00
										 |  |  | use Illuminate\Foundation\Application; | 
					
						
							|  |  |  | use Illuminate\Support\ServiceProvider; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							| 
									
										
										
										
											2017-12-25 08:48:49 +01:00
										 |  |  |  * @codeCoverageIgnore | 
					
						
							| 
									
										
										
										
											2017-11-15 12:25:49 +01:00
										 |  |  |  * Class JournalServiceProvider. | 
					
						
							| 
									
										
										
										
											2016-03-03 08:55:43 +01:00
										 |  |  |  */ | 
					
						
							|  |  |  | class JournalServiceProvider extends ServiceProvider | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Bootstrap the application services. | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2018-07-22 18:50:27 +02:00
										 |  |  |     public function boot(): void | 
					
						
							| 
									
										
										
										
											2016-03-03 08:55:43 +01:00
										 |  |  |     { | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Register the application services. | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2018-07-22 18:50:27 +02:00
										 |  |  |     public function register(): void | 
					
						
							| 
									
										
										
										
											2016-10-15 12:39:34 +02:00
										 |  |  |     { | 
					
						
							|  |  |  |         $this->registerRepository(); | 
					
						
							| 
									
										
										
										
											2019-03-25 15:14:09 +01:00
										 |  |  |         $this->registerGroupRepository(); | 
					
						
							| 
									
										
										
										
											2019-03-24 09:23:36 +01:00
										 |  |  |         $this->registerGroupCollector(); | 
					
						
							| 
									
										
										
										
											2016-11-20 08:57:48 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-24 09:23:36 +01:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |      * Register repository. | 
					
						
							| 
									
										
										
										
											2019-03-24 09:23:36 +01:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |     private function registerRepository(): void | 
					
						
							| 
									
										
										
										
											2019-03-24 09:23:36 +01:00
										 |  |  |     { | 
					
						
							|  |  |  |         $this->app->bind( | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |             JournalRepositoryInterface::class, | 
					
						
							| 
									
										
										
										
											2019-08-10 14:41:08 +02:00
										 |  |  |             static function (Application $app) { | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |                 /** @var JournalRepositoryInterface $repository */ | 
					
						
							|  |  |  |                 $repository = app(JournalRepository::class); | 
					
						
							| 
									
										
										
										
											2021-04-07 07:53:05 +02:00
										 |  |  |                 if ($app->auth->check()) { // @phpstan-ignore-line
 | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |                     $repository->setUser(auth()->user()); | 
					
						
							| 
									
										
										
										
											2019-03-24 09:23:36 +01:00
										 |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |                 return $repository; | 
					
						
							| 
									
										
										
										
											2019-03-24 09:23:36 +01:00
										 |  |  |             } | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |         // also bind new API repository
 | 
					
						
							| 
									
										
										
										
											2019-04-06 08:10:50 +02:00
										 |  |  |         $this->app->bind( | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |             JournalAPIRepositoryInterface::class, | 
					
						
							| 
									
										
										
										
											2019-08-10 14:41:08 +02:00
										 |  |  |             static function (Application $app) { | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |                 /** @var JournalAPIRepositoryInterface $repository */ | 
					
						
							|  |  |  |                 $repository = app(JournalAPIRepository::class); | 
					
						
							| 
									
										
										
										
											2021-04-07 07:53:05 +02:00
										 |  |  |                 if ($app->auth->check()) { // @phpstan-ignore-line
 | 
					
						
							| 
									
										
										
										
											2019-04-06 08:10:50 +02:00
										 |  |  |                     $repository->setUser(auth()->user()); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 return $repository; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         ); | 
					
						
							| 
									
										
										
										
											2019-03-25 15:14:09 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |         // also bind new CLI repository
 | 
					
						
							| 
									
										
										
										
											2016-03-03 08:55:43 +01:00
										 |  |  |         $this->app->bind( | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |             JournalCLIRepositoryInterface::class, | 
					
						
							| 
									
										
										
										
											2019-08-10 14:41:08 +02:00
										 |  |  |             static function (Application $app) { | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |                 /** @var JournalCLIRepositoryInterface $repository */ | 
					
						
							|  |  |  |                 $repository = app(JournalCLIRepository::class); | 
					
						
							| 
									
										
										
										
											2021-04-07 07:53:05 +02:00
										 |  |  |                 if ($app->auth->check()) { // @phpstan-ignore-line
 | 
					
						
							| 
									
										
										
										
											2017-01-30 16:58:10 +01:00
										 |  |  |                     $repository->setUser(auth()->user()); | 
					
						
							| 
									
										
										
										
											2016-03-03 08:55:43 +01:00
										 |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-30 16:58:10 +01:00
										 |  |  |                 return $repository; | 
					
						
							| 
									
										
										
										
											2016-03-03 08:55:43 +01:00
										 |  |  |             } | 
					
						
							|  |  |  |         ); | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2019-08-10 13:42:33 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Register group repos. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     private function registerGroupRepository(): void | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2019-08-10 13:42:33 +02:00
										 |  |  |         $this->app->bind( | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |             TransactionGroupRepositoryInterface::class, | 
					
						
							| 
									
										
										
										
											2019-08-10 14:41:08 +02:00
										 |  |  |             static function (Application $app) { | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |                 /** @var TransactionGroupRepositoryInterface $repository */ | 
					
						
							|  |  |  |                 $repository = app(TransactionGroupRepository::class); | 
					
						
							| 
									
										
										
										
											2021-04-07 07:53:05 +02:00
										 |  |  |                 if ($app->auth->check()) { // @phpstan-ignore-line
 | 
					
						
							| 
									
										
										
										
											2019-08-10 13:42:33 +02:00
										 |  |  |                     $repository->setUser(auth()->user()); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 return $repository; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         ); | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2019-08-10 14:41:08 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     private function registerGroupCollector(): void | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2019-08-10 14:41:08 +02:00
										 |  |  |         $this->app->bind( | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |             GroupCollectorInterface::class, | 
					
						
							| 
									
										
										
										
											2019-08-10 14:41:08 +02:00
										 |  |  |             static function (Application $app) { | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |                 /** @var GroupCollectorInterface $collector */ | 
					
						
							|  |  |  |                 $collector = app(GroupCollector::class); | 
					
						
							| 
									
										
										
										
											2021-04-07 07:53:05 +02:00
										 |  |  |                 if ($app->auth->check()) { // @phpstan-ignore-line
 | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |                     $collector->setUser(auth()->user()); | 
					
						
							| 
									
										
										
										
											2019-08-10 14:41:08 +02:00
										 |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-21 09:15:40 +01:00
										 |  |  |                 return $collector; | 
					
						
							| 
									
										
										
										
											2019-08-10 14:41:08 +02:00
										 |  |  |             } | 
					
						
							|  |  |  |         ); | 
					
						
							| 
									
										
										
										
											2016-03-03 08:55:43 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | } |