Initial code for preparing bunq import #714

This commit is contained in:
James Cole
2017-08-11 05:21:00 +02:00
parent 657d5e0d74
commit 90c8420a4c
7 changed files with 184 additions and 2 deletions

View File

@@ -13,6 +13,7 @@ namespace FireflyIII\Http\Controllers\Import;
use FireflyIII\Http\Controllers\Controller; use FireflyIII\Http\Controllers\Controller;
use FireflyIII\Support\Import\Prerequisites\PrerequisitesInterface;
class BankController extends Controller class BankController extends Controller
{ {
@@ -22,6 +23,24 @@ class BankController extends Controller
*/ */
public function prerequisites(string $bank) 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() {
} }

View File

@@ -0,0 +1,71 @@
<?php
/**
* BunqPrerequisites.php
* Copyright (c) 2017 thegrumpydictator@gmail.com
* This software may be modified and distributed under the terms of the Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types=1);
namespace FireflyIII\Support\Import\Prerequisites;
use FireflyIII\User;
use Preferences;
/**
* Class BunqPrerequisites
*
* @package FireflyIII\Support\Import\Prerequisites
*/
class BunqPrerequisites implements PrerequisitesInterface
{
/** @var User */
private $user;
/**
* Returns view name that allows user to fill in prerequisites.
*
* @return string
*/
public function getView(): string
{
return 'import.bunq.prerequisites';
}
/**
* Returns any values required for the prerequisites-view.
*
* @return array
*/
public function getViewParameters(): array
{
return [];
}
/**
* Returns if this import method has any special prerequisites such as config
* variables or other things.
*
* @return bool
*/
public function hasPrerequisites(): bool
{
$apiKey = Preferences::getForUser($this->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;
}
}

View File

@@ -0,0 +1,47 @@
<?php
/**
* PrerequisitesInterface.php
* Copyright (c) 2017 thegrumpydictator@gmail.com
* This software may be modified and distributed under the terms of the Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types=1);
namespace FireflyIII\Support\Import\Prerequisites;
use FireflyIII\User;
interface PrerequisitesInterface
{
/**
* Set the user for this Prerequisites-routine. Class is expected to implement and save this.
*
* @param User $user
*/
public function setUser(User $user): void;
/**
* Returns view name that allows user to fill in prerequisites.
*
* @return string
*/
public function getView(): string;
/**
* Returns any values required for the prerequisites-view.
*
* @return array
*/
public function getViewParameters(): array;
/**
* Returns if this import method has any special prerequisites such as config
* variables or other things.
*
* @return bool
*/
public function hasPrerequisites(): bool;
}

View File

@@ -39,6 +39,9 @@ return [
'import_processors' => [ 'import_processors' => [
'csv' => 'FireflyIII\Import\FileProcessor\CsvProcessor', 'csv' => 'FireflyIII\Import\FileProcessor\CsvProcessor',
], ],
'import_pre' => [
'bunq' => 'FireflyIII\Support\Import\Prerequisites\BunqPrerequisites',
],
'default_export_format' => 'csv', 'default_export_format' => 'csv',
'default_import_format' => 'csv', 'default_import_format' => 'csv',
'bill_periods' => ['weekly', 'monthly', 'quarterly', 'half-year', 'yearly'], 'bill_periods' => ['weekly', 'monthly', 'quarterly', 'half-year', 'yearly'],

View File

@@ -0,0 +1,43 @@
{% extends "./layout/default" %}
{% block breadcrumbs %}
{{ Breadcrumbs.renderIfExists }}
{% endblock %}
{% block content %}
<div class="row">
<form class="form-horizontal" id="report-form" action="{{ route('import.bank.prerequisites.post',['bunq']) }}" method="post">
<input type="hidden" name="_token" value="{{ csrf_token() }}"/>
<div class="col-lg-12 col-md-12 col-sm-12">
<div class="box box-default">
<div class="box-header with-border">
<h3 class="box-title">{{ trans('bank.prerequisites_for_import_title') }}</h3>
</div>
<div class="box-body">
<div class="row">
<div class="col-lg-8">
<p>
{{ trans('bank.prerequisites_for_import_text') }}
</p>
</div>
</div>
<div class="row">
<div class="col-lg-8">
{{ ExpandedForm.text('api_key') }}
</div>
</div>
</div>
<div class="box-footer">
<button type="submit" class="btn pull-right btn-success">
{{ ('submit')|_ }}
</button>
</div>
</div>
</div>
</form>
</div>
{% endblock %}
{% block scripts %}
{% endblock %}
{% block styles %}
{% endblock %}

View File

@@ -28,12 +28,10 @@
Import a (CSV) file Import a (CSV) file
</a> </a>
{# bunq import #} {# bunq import #}
{#
<a href="{{ route('import.bank.prerequisites', ['bunq']) }}" class="btn btn-app"> <a href="{{ route('import.bank.prerequisites', ['bunq']) }}" class="btn btn-app">
<img src="images/logos/bunq.png" alt="bunq"/><br /> <img src="images/logos/bunq.png" alt="bunq"/><br />
Import from bunq Import from bunq
</a> </a>
#}
</p> </p>
</div> </div>
</div> </div>

View File

@@ -400,6 +400,7 @@ Route::group(
// banks: // banks:
Route::get('bank/{bank}/prerequisites', ['uses' => 'Import\BankController@prerequisites', 'as' => 'bank.prerequisites']); 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']);
} }
); );