New converters for #180 (Category and some other stuff)

This commit is contained in:
James Cole
2016-04-01 13:23:12 +02:00
parent 429ef80fb9
commit 5e78cc02bd
10 changed files with 78 additions and 18 deletions

View File

@@ -29,7 +29,7 @@ class AssetAccountIban extends BasicConverter implements ConverterInterface
return $account; return $account;
} }
if (strlen($this->value) > 0) { if (strlen($this->value) > 0) {
// find or create new account: // find or create new account:
$set = $repository->getAccounts(['Default account', 'Asset account']); $set = $repository->getAccounts(['Default account', 'Asset account']);

View File

@@ -2,7 +2,6 @@
declare(strict_types = 1); declare(strict_types = 1);
namespace FireflyIII\Helpers\Csv\Converter; namespace FireflyIII\Helpers\Csv\Converter;
use Auth;
use FireflyIII\Models\Bill; use FireflyIII\Models\Bill;
use FireflyIII\Repositories\Bill\BillRepositoryInterface; use FireflyIII\Repositories\Bill\BillRepositoryInterface;

View File

@@ -2,7 +2,6 @@
declare(strict_types = 1); declare(strict_types = 1);
namespace FireflyIII\Helpers\Csv\Converter; namespace FireflyIII\Helpers\Csv\Converter;
use Auth;
use FireflyIII\Models\Budget; use FireflyIII\Models\Budget;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;

View File

@@ -2,8 +2,8 @@
declare(strict_types = 1); declare(strict_types = 1);
namespace FireflyIII\Helpers\Csv\Converter; namespace FireflyIII\Helpers\Csv\Converter;
use Auth;
use FireflyIII\Models\Category; use FireflyIII\Models\Category;
use FireflyIII\Repositories\Category\SingleCategoryRepositoryInterface;
/** /**
* Class CategoryId * Class CategoryId
@@ -18,11 +18,14 @@ class CategoryId extends BasicConverter implements ConverterInterface
*/ */
public function convert() public function convert()
{ {
/** @var SingleCategoryRepositoryInterface $repository */
$repository = app('FireflyIII\Repositories\Category\SingleCategoryRepositoryInterface');
// is mapped? Then it's easy! // is mapped? Then it's easy!
if (isset($this->mapped[$this->index][$this->value])) { if (isset($this->mapped[$this->index][$this->value])) {
$category = Auth::user()->categories()->find($this->mapped[$this->index][$this->value]); $category = $repository->find($this->mapped[$this->index][$this->value]);
} else { } else {
$category = Auth::user()->categories()->find($this->value); $category = $repository->find($this->value);
} }
return $category; return $category;

View File

@@ -4,6 +4,7 @@ namespace FireflyIII\Helpers\Csv\Converter;
use Auth; use Auth;
use FireflyIII\Models\Category; use FireflyIII\Models\Category;
use FireflyIII\Repositories\Category\SingleCategoryRepositoryInterface;
/** /**
* Class CategoryName * Class CategoryName
@@ -18,16 +19,20 @@ class CategoryName extends BasicConverter implements ConverterInterface
*/ */
public function convert() public function convert()
{ {
/** @var SingleCategoryRepositoryInterface $repository */
$repository = app('FireflyIII\Repositories\Category\SingleCategoryRepositoryInterface');
// is mapped? Then it's easy! // is mapped? Then it's easy!
if (isset($this->mapped[$this->index][$this->value])) { if (isset($this->mapped[$this->index][$this->value])) {
$category = Auth::user()->categories()->find($this->mapped[$this->index][$this->value]); $category = $repository->find($this->mapped[$this->index][$this->value]);
} else { } else {
$category = Category::firstOrCreateEncrypted( // See issue #180
[ $data = [
'name' => $this->value, 'name' => $this->value,
'user_id' => Auth::user()->id, 'user' => Auth::user()->id,
] ];
);
$category = $repository->store($data);
} }
return $category; return $category;

View File

@@ -257,6 +257,7 @@ class ReportHelper implements ReportHelperInterface
if ($set->count() === 0) { if ($set->count() === 0) {
return $collection; return $collection;
} }
/** @var Tag $entry */
foreach ($set as $entry) { foreach ($set as $entry) {
// less than zero? multiply to be above zero. // less than zero? multiply to be above zero.
$amount = $entry->amount; $amount = $entry->amount;

View File

@@ -45,5 +45,21 @@ class CategoryServiceProvider extends ServiceProvider
return app('FireflyIII\Repositories\Category\CategoryRepository', $arguments); return app('FireflyIII\Repositories\Category\CategoryRepository', $arguments);
} }
); );
$this->app->bind(
'FireflyIII\Repositories\Category\SingleCategoryRepositoryInterface',
function (Application $app, array $arguments) {
if (!isset($arguments[0]) && Auth::check()) {
return app('FireflyIII\Repositories\Category\SingleCategoryRepository', [Auth::user()]);
} else {
if (!isset($arguments[0]) && !Auth::check()) {
throw new FireflyException('There is no user present.');
}
}
return app('FireflyIII\Repositories\Category\SingleCategoryRepository', $arguments);
}
);
} }
} }

View File

@@ -82,7 +82,7 @@ class FireflyServiceProvider extends ServiceProvider
} }
); );
$this->app->bind('FireflyIII\Repositories\Category\SingleCategoryRepositoryInterface', 'FireflyIII\Repositories\Category\SingleCategoryRepository');
$this->app->bind('FireflyIII\Repositories\Currency\CurrencyRepositoryInterface', 'FireflyIII\Repositories\Currency\CurrencyRepository'); $this->app->bind('FireflyIII\Repositories\Currency\CurrencyRepositoryInterface', 'FireflyIII\Repositories\Currency\CurrencyRepository');
$this->app->bind('FireflyIII\Support\Search\SearchInterface', 'FireflyIII\Support\Search\Search'); $this->app->bind('FireflyIII\Support\Search\SearchInterface', 'FireflyIII\Support\Search\Search');
$this->app->bind('FireflyIII\Repositories\User\UserRepositoryInterface', 'FireflyIII\Repositories\User\UserRepository'); $this->app->bind('FireflyIII\Repositories\User\UserRepositoryInterface', 'FireflyIII\Repositories\User\UserRepository');

View File

@@ -9,6 +9,7 @@ use FireflyIII\Models\Category;
use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionJournal;
use FireflyIII\Models\TransactionType; use FireflyIII\Models\TransactionType;
use FireflyIII\Repositories\Shared\ComponentRepository; use FireflyIII\Repositories\Shared\ComponentRepository;
use FireflyIII\User;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
/** /**
@@ -18,6 +19,19 @@ use Illuminate\Support\Collection;
*/ */
class SingleCategoryRepository extends ComponentRepository implements SingleCategoryRepositoryInterface class SingleCategoryRepository extends ComponentRepository implements SingleCategoryRepositoryInterface
{ {
/** @var User */
private $user;
/**
* BillRepository constructor.
*
* @param User $user
*/
public function __construct(User $user)
{
$this->user = $user;
}
/** /**
* @param Category $category * @param Category $category
* *
@@ -87,6 +101,23 @@ class SingleCategoryRepository extends ComponentRepository implements SingleCate
return $return; return $return;
} }
/**
* Find a category
*
* @param int $categoryId
*
* @return Category
*/
public function find(int $categoryId) : Category
{
$category = $this->user->categories()->find($categoryId);
if (is_null($category)) {
$category = new Category;
}
return $category;
}
/** /**
* @param Category $category * @param Category $category
* *
@@ -146,7 +177,6 @@ class SingleCategoryRepository extends ComponentRepository implements SingleCate
->get(TransactionJournal::QUERYFIELDS); ->get(TransactionJournal::QUERYFIELDS);
} }
/** /**
* @param Category $category * @param Category $category
* *
@@ -206,7 +236,7 @@ class SingleCategoryRepository extends ComponentRepository implements SingleCate
*/ */
public function store(array $data) public function store(array $data)
{ {
$newCategory = new Category( $newCategory = Category::firstOrCreateEncrypted(
[ [
'user_id' => $data['user'], 'user_id' => $data['user'],
'name' => $data['name'], 'name' => $data['name'],
@@ -231,6 +261,4 @@ class SingleCategoryRepository extends ComponentRepository implements SingleCate
return $category; return $category;
} }
} }

View File

@@ -14,6 +14,7 @@ use Illuminate\Support\Collection;
*/ */
interface SingleCategoryRepositoryInterface interface SingleCategoryRepositoryInterface
{ {
/** /**
* @param Category $category * @param Category $category
* *
@@ -54,6 +55,14 @@ interface SingleCategoryRepositoryInterface
*/ */
public function earnedPerDay(Category $category, Carbon $start, Carbon $end); public function earnedPerDay(Category $category, Carbon $start, Carbon $end);
/**
* Find a category
*
* @param int $categoryId
*
* @return Category
*/
public function find(int $categoryId) : Category;
/** /**
* @param Category $category * @param Category $category