From 630c48193d180dc0768ebdd5a0913719b73e2a7a Mon Sep 17 00:00:00 2001 From: karneaud Date: Mon, 22 Jul 2024 20:02:13 -0400 Subject: [PATCH] add quicbooks controller/routes --- .../ImportQuickbooksController.php | 92 +++++++++++++++++++ routes/api.php | 5 +- routes/web.php | 2 + 3 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 app/Http/Controllers/ImportQuickbooksController.php diff --git a/app/Http/Controllers/ImportQuickbooksController.php b/app/Http/Controllers/ImportQuickbooksController.php new file mode 100644 index 000000000000..cf17cc7ff8ab --- /dev/null +++ b/app/Http/Controllers/ImportQuickbooksController.php @@ -0,0 +1,92 @@ +user(); + + return $user->isAdmin() ; + } + + public function preimport(Request $request) + { + // Check for authorization otherwise + + // Create a reference + $hash = Str::random(32); + $data = [ + 'hash' => $hash, + 'type' => $request->input('import_type') + ]; + $contents = $this->getData(); + Cache::put("$hash-{$data['type']}", base64_encode(json_encode($contents)), 600); + + return response()->json(['message' => 'Data cached for import'] + $data, 200); + } + + public function authorizeQuickbooks() { + + } + + protected function getData() { + + } + + /** + * @OA\Post( + * path="/api/v1/import_json", + * operationId="getImportJson", + * tags={"import"}, + * summary="Import data from the system", + * description="Import data from the system", + * @OA\Parameter(ref="#/components/parameters/X-Requested-With"), + * @OA\Response( + * response=200, + * description="success", + * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"), + * @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"), + * @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"), + * ), + * @OA\Response( + * response=422, + * description="Validation error", + * @OA\JsonContent(ref="#/components/schemas/ValidationError"), + * ), + * @OA\Response( + * response="default", + * description="Unexpected Error", + * @OA\JsonContent(ref="#/components/schemas/Error"), + * ), + * ) + */ + public function import(Request $request) + { + /** @var \App\Models\User $user */ + $user = auth()->user(); + if (Ninja::isHosted()) { + QuickbooksIngest::dispatch($request->all(), $user->company() ); + } else { + QuickbooksIngest::dispatch($request->all(), $user->company() ); + } + + return response()->json(['message' => 'Processing'], 200); + } +} diff --git a/routes/api.php b/routes/api.php index 0b0ffa772b15..f496e14c428d 100644 --- a/routes/api.php +++ b/routes/api.php @@ -57,6 +57,7 @@ use App\Http\Controllers\SystemLogController; use App\Http\Controllers\TwoFactorController; use App\Http\Controllers\Auth\LoginController; use App\Http\Controllers\ImportJsonController; +use App\Http\Controllers\ImportQuickbooksController; use App\Http\Controllers\SelfUpdateController; use App\Http\Controllers\TaskStatusController; use App\Http\Controllers\Bank\YodleeController; @@ -243,7 +244,9 @@ Route::group(['middleware' => ['throttle:api', 'api_db', 'token_auth', 'locale'] Route::post('import', [ImportController::class, 'import'])->name('import.import'); Route::post('import_json', [ImportJsonController::class, 'import'])->name('import.import_json'); Route::post('preimport', [ImportController::class, 'preimport'])->name('import.preimport'); - + ; + Route::post('import/quickbooks', [ImportQuickbooksController::class, 'import'])->name('import.quickbooks'); + Route::post('import/quickbooks/preimport', [ImportQuickbooksController::class, 'preimport'])->name('import.quickbooks.preimport'); Route::resource('invoices', InvoiceController::class); // name = (invoices. index / create / show / update / destroy / edit Route::get('invoices/{invoice}/delivery_note', [InvoiceController::class, 'deliveryNote'])->name('invoices.delivery_note'); Route::get('invoices/{invoice}/{action}', [InvoiceController::class, 'action'])->name('invoices.action'); diff --git a/routes/web.php b/routes/web.php index 1d56f5d88390..6487eaa50975 100644 --- a/routes/web.php +++ b/routes/web.php @@ -6,6 +6,7 @@ use App\Http\Controllers\Auth\ResetPasswordController; use App\Http\Controllers\Bank\NordigenController; use App\Http\Controllers\Bank\YodleeController; use App\Http\Controllers\BaseController; +use App\Http\Controllers\ImportQuickbooksController; use App\Http\Controllers\ClientPortal\ApplePayDomainController; use App\Http\Controllers\Gateways\Checkout3dsController; use App\Http\Controllers\Gateways\GoCardlessController; @@ -37,6 +38,7 @@ Route::middleware('url_db')->group(function () { Route::post('/user/confirm/{confirmation_code}', [UserController::class, 'confirmWithPassword']); }); +Route::post('import/quickbooks/authorize', [ImportQuickbooksController::class, 'authorizeQuickbooks'])->name('import.auth.quickbooks'); Route::get('stripe/signup/{token}', [StripeConnectController::class, 'initialize'])->name('stripe_connect.initialization'); Route::get('stripe/completed', [StripeConnectController::class, 'completed'])->name('stripe_connect.return');