diff --git a/app/Http/Controllers/References/BankAccountsController.php b/app/Http/Controllers/References/BankAccountsController.php
index 296d920..9462bf9 100644
--- a/app/Http/Controllers/References/BankAccountsController.php
+++ b/app/Http/Controllers/References/BankAccountsController.php
@@ -3,6 +3,7 @@
namespace App\Http\Controllers\References;
use Illuminate\Http\Request;
+use App\Entities\Options\Option;
use App\Http\Controllers\Controller;
use App\Entities\Invoices\BankAccount;
@@ -96,4 +97,23 @@ class BankAccountsController extends Controller
return back();
}
+
+ /**
+ * Import bank account from site_options table.
+ *
+ * @return \Illuminate\Http\RedirectResponse
+ */
+ public function import()
+ {
+ $bankAccounts = Option::where('key', 'bank_accounts')->first();
+ if ($bankAccounts && $bankAccounts->value) {
+ foreach (json_decode($bankAccounts->value, true) as $bankAccountData) {
+ $bankAccount = new BankAccount($bankAccountData);
+ $bankAccount->save();
+ }
+ $bankAccounts->delete();
+ }
+
+ return back();
+ }
}
diff --git a/resources/views/bank-accounts/index.blade.php b/resources/views/bank-accounts/index.blade.php
index 6b3c9a1..3c883ae 100644
--- a/resources/views/bank-accounts/index.blade.php
+++ b/resources/views/bank-accounts/index.blade.php
@@ -3,7 +3,7 @@
@section('title', trans('bank_account.list'))
@section('content-dashboard')
-
+{!! FormField::formButton(['route' => 'bank-accounts.import'], __('bank_account.import'), ['id' => 'import-bank-accounts']) !!}
@foreach ($bankAccounts as $bankAccount)
diff --git a/routes/web/references.php b/routes/web/references.php
index 6b6ef55..f448e73 100644
--- a/routes/web/references.php
+++ b/routes/web/references.php
@@ -19,4 +19,5 @@ Route::group(['namespace' => 'References', 'middleware' => ['web', 'role:admin']
* Bank Accounts Routes
*/
Route::apiResource('bank-accounts', 'BankAccountsController');
+ Route::post('bank-accounts/import', 'BankAccountsController@import')->name('bank-accounts.import');
});
diff --git a/tests/Feature/References/ManageBankAccountsTest.php b/tests/Feature/References/ManageBankAccountsTest.php
index 8cdb02e..501362c 100644
--- a/tests/Feature/References/ManageBankAccountsTest.php
+++ b/tests/Feature/References/ManageBankAccountsTest.php
@@ -3,6 +3,7 @@
namespace Tests\Feature\References;
use Tests\TestCase;
+use Facades\App\Services\Option;
use App\Entities\Invoices\BankAccount;
use Illuminate\Foundation\Testing\DatabaseMigrations;
@@ -108,6 +109,34 @@ class ManageBankAccountsTest extends TestCase
/** @test */
public function user_can_import_existing_bank_account_list()
{
- $this->visit('/');
+ $this->adminUserSigningIn();
+
+ $bankAccounts = [];
+ $bankAccounts[1] = [
+ 'name' => 'BankAccount 1 name',
+ 'number' => '1234567890',
+ 'account_name' => 'John Doe',
+ 'description' => 'BankAccount 1 description',
+ ];
+
+ Option::set('bank_accounts', json_encode($bankAccounts));
+
+ $this->visit(route('bank-accounts.index'));
+ $this->seeElement('button', ['id' => 'import-bank-accounts']);
+
+ $this->press('import-bank-accounts');
+ $this->seePageIs(route('bank-accounts.index'));
+
+ $this->dontSeeInDatabase('site_options', [
+ 'value' => json_encode($bankAccounts),
+ ]);
+
+ $this->seeInDatabase('bank_accounts', [
+ 'name' => 'BankAccount 1 name',
+ 'number' => '1234567890',
+ 'account_name' => 'John Doe',
+ 'description' => 'BankAccount 1 description',
+ 'is_active' => 1,
+ ]);
}
}