diff --git a/app/Http/Controllers/Import/BankController.php b/app/Http/Controllers/Import/BankController.php index b8602ceb65..9aa94c654f 100644 --- a/app/Http/Controllers/Import/BankController.php +++ b/app/Http/Controllers/Import/BankController.php @@ -13,6 +13,7 @@ namespace FireflyIII\Http\Controllers\Import; use FireflyIII\Http\Controllers\Controller; +use FireflyIII\Support\Import\Prerequisites\PrerequisitesInterface; class BankController extends Controller { @@ -22,6 +23,24 @@ class BankController extends Controller */ public function prerequisites(string $bank) { + $class = config(sprintf('firefly.import_pre.%s', $bank)); + /** @var PrerequisitesInterface $object */ + $object = app($class); + $object->setUser(auth()->user()); + + if ($object->hasPrerequisites()) { + $view = $object->getView(); + $parameters = $object->getViewParameters(); + return view($view, $parameters); + } + + if (!$object->hasPrerequisites()) { + echo 'redirect to import form.'; + } + + } + + public function postPrerequisites() { } diff --git a/app/Support/Import/Prerequisites/BunqPrerequisites.php b/app/Support/Import/Prerequisites/BunqPrerequisites.php new file mode 100644 index 0000000000..c1339e1451 --- /dev/null +++ b/app/Support/Import/Prerequisites/BunqPrerequisites.php @@ -0,0 +1,71 @@ +user, 'bunq_api_key', false); + + return ($apiKey->data === false); + } + + /** + * Set the user for this Prerequisites-routine. Class is expected to implement and save this. + * + * @param User $user + */ + public function setUser(User $user): void + { + $this->user = $user; + + return; + } +} \ No newline at end of file diff --git a/app/Support/Import/Prerequisites/PrerequisitesInterface.php b/app/Support/Import/Prerequisites/PrerequisitesInterface.php new file mode 100644 index 0000000000..9a79ef3003 --- /dev/null +++ b/app/Support/Import/Prerequisites/PrerequisitesInterface.php @@ -0,0 +1,47 @@ + [ 'csv' => 'FireflyIII\Import\FileProcessor\CsvProcessor', ], + 'import_pre' => [ + 'bunq' => 'FireflyIII\Support\Import\Prerequisites\BunqPrerequisites', + ], 'default_export_format' => 'csv', 'default_import_format' => 'csv', 'bill_periods' => ['weekly', 'monthly', 'quarterly', 'half-year', 'yearly'], diff --git a/resources/views/import/bunq/prerequisites.twig b/resources/views/import/bunq/prerequisites.twig new file mode 100644 index 0000000000..88872997a9 --- /dev/null +++ b/resources/views/import/bunq/prerequisites.twig @@ -0,0 +1,43 @@ +{% extends "./layout/default" %} + +{% block breadcrumbs %} + {{ Breadcrumbs.renderIfExists }} +{% endblock %} +{% block content %} +
+
+ +
+
+
+

{{ trans('bank.prerequisites_for_import_title') }}

+
+
+
+
+

+ {{ trans('bank.prerequisites_for_import_text') }} +

+
+
+ +
+
+ {{ ExpandedForm.text('api_key') }} +
+
+
+ +
+
+
+
+{% endblock %} +{% block scripts %} +{% endblock %} +{% block styles %} +{% endblock %} diff --git a/resources/views/import/index.twig b/resources/views/import/index.twig index 1c10f69481..538062cd3b 100644 --- a/resources/views/import/index.twig +++ b/resources/views/import/index.twig @@ -28,12 +28,10 @@ Import a (CSV) file {# bunq import #} - {# bunq
Import from bunq
- #}

diff --git a/routes/web.php b/routes/web.php index c0820daae6..5557e08cf1 100755 --- a/routes/web.php +++ b/routes/web.php @@ -400,6 +400,7 @@ Route::group( // banks: Route::get('bank/{bank}/prerequisites', ['uses' => 'Import\BankController@prerequisites', 'as' => 'bank.prerequisites']); + Route::post('bank/{bank}/prerequisites', ['uses' => 'Import\BankController@postPrerequisites', 'as' => 'bank.prerequisites.post']); } );