diff --git a/app/Http/Controllers/BankIntegrationController.php b/app/Http/Controllers/BankIntegrationController.php index c38f31245fa6..d267107ca3c3 100644 --- a/app/Http/Controllers/BankIntegrationController.php +++ b/app/Http/Controllers/BankIntegrationController.php @@ -566,9 +566,17 @@ class BankIntegrationController extends BaseController $bank_integration->currency = $account['account_currency']; $bank_integration->save(); + } } + $account = auth()->user()->account; + + $account->bank_integrations->each(function ($bank_integration) use ($account){ + + ProcessBankTransactions::dispatch($account->bank_integration_account_id, $bank_integration); + + }); return response()->json(BankIntegration::query()->company(), 200); } diff --git a/app/Http/Controllers/TwilioController.php b/app/Http/Controllers/TwilioController.php index 94ed0e013856..1ca7d31c6d60 100644 --- a/app/Http/Controllers/TwilioController.php +++ b/app/Http/Controllers/TwilioController.php @@ -94,6 +94,10 @@ class TwilioController extends BaseController if($verification_check->status == 'approved'){ + if($request->query('validate_only') == 'true') + return response()->json(['message' => 'SMS verified'], 200); + + $account->account_sms_verified = true; $account->save(); diff --git a/app/Http/Requests/BankIntegration/StoreBankIntegrationRequest.php b/app/Http/Requests/BankIntegration/StoreBankIntegrationRequest.php index 67e209731b63..b1889b6a5fd0 100644 --- a/app/Http/Requests/BankIntegration/StoreBankIntegrationRequest.php +++ b/app/Http/Requests/BankIntegration/StoreBankIntegrationRequest.php @@ -33,7 +33,8 @@ class StoreBankIntegrationRequest extends Request { $rules = [ - 'bank_account_name' => 'required|min:3' + 'bank_account_name' => 'required|min:3', + 'auto_sync' => 'sometimes|bool' ]; return $rules; diff --git a/app/Http/Requests/BankIntegration/UpdateBankIntegrationRequest.php b/app/Http/Requests/BankIntegration/UpdateBankIntegrationRequest.php index 5bb712be1164..cbb337ce4d21 100644 --- a/app/Http/Requests/BankIntegration/UpdateBankIntegrationRequest.php +++ b/app/Http/Requests/BankIntegration/UpdateBankIntegrationRequest.php @@ -31,7 +31,9 @@ class UpdateBankIntegrationRequest extends Request public function rules() { /* Ensure we have a client name, and that all emails are unique*/ - $rules = []; + $rules = [ + 'auto_sync' => 'sometimes|bool' + ]; return $rules; } diff --git a/app/Jobs/Ninja/BankTransactionSync.php b/app/Jobs/Ninja/BankTransactionSync.php index 227f8ec8d9dc..e06839b8634f 100644 --- a/app/Jobs/Ninja/BankTransactionSync.php +++ b/app/Jobs/Ninja/BankTransactionSync.php @@ -60,7 +60,7 @@ class BankTransactionSync implements ShouldQueue public function syncTransactions() { - $a = Account::with('bank_integrations')->whereNotNull('bank_integration_account_id')->cursor()->each(function ($account){ + $a = Account::with('bank_integrations')->where('auto_sync', true)->whereNotNull('bank_integration_account_id')->cursor()->each(function ($account){ // $queue = Ninja::isHosted() ? 'bank' : 'default'; diff --git a/app/Models/BankIntegration.php b/app/Models/BankIntegration.php index dce8b2b36708..2f1c439dacbd 100644 --- a/app/Models/BankIntegration.php +++ b/app/Models/BankIntegration.php @@ -27,6 +27,7 @@ class BankIntegration extends BaseModel 'currency', 'nickname', 'from_date', + 'auto_sync', ]; protected $dates = [ diff --git a/app/Transformers/BankIntegrationTransformer.php b/app/Transformers/BankIntegrationTransformer.php index cae21bbf4377..861577613867 100644 --- a/app/Transformers/BankIntegrationTransformer.php +++ b/app/Transformers/BankIntegrationTransformer.php @@ -61,6 +61,7 @@ class BankIntegrationTransformer extends EntityTransformer 'from_date' => (string)$bank_integration->from_date ?: '', 'is_deleted' => (bool) $bank_integration->is_deleted, 'disabled_upstream' => (bool) $bank_integration->disabled_upstream, + 'auto_sync' => (bool)$bank_integration->auto_sync, 'created_at' => (int) $bank_integration->created_at, 'updated_at' => (int) $bank_integration->updated_at, 'archived_at' => (int) $bank_integration->deleted_at, diff --git a/database/migrations/2022_11_06_215526_drop_html_backups_column_from_backups_table.php b/database/migrations/2022_11_06_215526_drop_html_backups_column_from_backups_table.php index cd6725b2efb5..d1644199b309 100644 --- a/database/migrations/2022_11_06_215526_drop_html_backups_column_from_backups_table.php +++ b/database/migrations/2022_11_06_215526_drop_html_backups_column_from_backups_table.php @@ -25,6 +25,10 @@ return new class extends Migration Schema::table('backups', function (Blueprint $table) { $table->string('disk')->nullable(); }); + + Schema::table('bank_integrations', function (Blueprint $table) { + $table->boolean('auto_sync')->default(false); + }); } /** diff --git a/routes/api.php b/routes/api.php index 44dc83425a27..130fb13f67c3 100644 --- a/routes/api.php +++ b/routes/api.php @@ -109,7 +109,7 @@ Route::group(['middleware' => ['throttle:10,1','api_secret_check','email_db']], Route::group(['middleware' => ['throttle:300,1', 'api_db', 'token_auth', 'locale'], 'prefix' => 'api/v1', 'as' => 'api.'], function () { Route::put('accounts/{account}', [AccountController::class, 'update'])->name('account.update'); Route::resource('bank_integrations', BankIntegrationController::class); // name = (clients. index / create / show / update / destroy / edit - Route::post('bank_integrations/refresh_accounts', [BankIntegrationController::class, 'refreshAccounts'])->name('bank_integrations.refresh_accounts'); + Route::post('bank_integrations/refresh_accounts', [BankIntegrationController::class, 'refreshAccounts'])->name('bank_integrations.refresh_accounts')->middleware('throttle:1,1'); Route::post('bank_integrations/remove_account/{acc_id}', [BankIntegrationController::class, 'removeAccount'])->name('bank_integrations.remove_account'); Route::post('bank_integrations/get_transactions/{acc_id}', [BankIntegrationController::class, 'getTransactions'])->name('bank_integrations.transactions')->middleware('throttle:1,1');