diff --git a/app/Providers/QuickbooksServiceProvider.php b/app/Providers/QuickbooksServiceProvider.php new file mode 100644 index 000000000000..bf517aae3a6a --- /dev/null +++ b/app/Providers/QuickbooksServiceProvider.php @@ -0,0 +1,72 @@ +app->singleton(QuickbooksInterface::class, function ($app) { + // TODO: Possibly load tokens from Cache or DB? + $sdk = DataService::Configure(config('services.quickbooks.settings')); + if(env('APP_DEBUG')) { + $sdk->setLogLocation(storage_path("logs/quickbooks.log")); + $sdk->enableLog(); + } + + $sdk->setMinorVersion("73"); + $sdk->throwExceptionOnError(true); + + return new QuickbooksSDKWrapper($sdk); + }); + + // Register SDKWrapper with DataService dependency + $this->app->singleton(QuickbooksService::class, function ($app) { + return new QuickbooksService($app->make(QuickbooksInterface::class)); + }); + + $this->app->singleton(QuickbooksAuthService::class, function ($app) { + return new QuickbooksAuthService($app->make(QuickbooksInterface::class)); + }); + + $this->app->singleton(QuickbooksTransformer::class,QuickbooksTransformer::class); + } + /** + * Bootstrap services. + * + * @return void + */ + public function boot() + { + $this->registerConfig(); + } + + protected function registerConfig() { + config()->set( 'services.quickbooks' , + ['settings' => [ + 'auth_mode' => 'oauth2', + 'ClientID' => env('QUICKBOOKS_CLIENT_ID', false), + 'ClientSecret' => env('QUICKBOOKS_CLIENT_SECRET', false), + 'RedirectURI' => env('QUICKBOOKS_REDIRECT_URL', env('APP_URL')), + 'scope' => "com.intuit.quickbooks.accounting", + 'baseUrl' => ucfirst(env('APP_ENV')) + ], + 'debug' => env('APP_DEBUG') || env('APP_ENV') + ] + ); + } +} diff --git a/config/app.php b/config/app.php index 59b709d0a9b6..6a812d1322e0 100644 --- a/config/app.php +++ b/config/app.php @@ -200,7 +200,8 @@ return [ App\Providers\MultiDBProvider::class, App\Providers\ClientPortalServiceProvider::class, App\Providers\NinjaTranslationServiceProvider::class, - App\Providers\StaticServiceProvider::class + App\Providers\StaticServiceProvider::class, + App\Providers\QuickbooksServiceProvider::class ], /* @@ -217,7 +218,7 @@ return [ 'aliases' => Facade::defaultAliases()->merge([ 'Collector' => Turbo124\Beacon\CollectorFacade::class, 'CustomMessage' => App\Utils\ClientPortal\CustomMessage\CustomMessageFacade::class, - 'Redis' => Illuminate\Support\Facades\Redis::class, + 'Redis' => Illuminate\Support\Facades\Redis::class ])->toArray(), ];