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, + ]); } }