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;
}
if (strlen($this->value) > 0) {
// find or create new account:
$set = $repository->getAccounts(['Default account', 'Asset account']);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -45,5 +45,21 @@ class CategoryServiceProvider extends ServiceProvider
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\Support\Search\SearchInterface', 'FireflyIII\Support\Search\Search');
$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\TransactionType;
use FireflyIII\Repositories\Shared\ComponentRepository;
use FireflyIII\User;
use Illuminate\Support\Collection;
/**
@ -18,6 +19,19 @@ use Illuminate\Support\Collection;
*/
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
*
@ -87,6 +101,23 @@ class SingleCategoryRepository extends ComponentRepository implements SingleCate
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
*
@ -146,7 +177,6 @@ class SingleCategoryRepository extends ComponentRepository implements SingleCate
->get(TransactionJournal::QUERYFIELDS);
}
/**
* @param Category $category
*
@ -206,7 +236,7 @@ class SingleCategoryRepository extends ComponentRepository implements SingleCate
*/
public function store(array $data)
{
$newCategory = new Category(
$newCategory = Category::firstOrCreateEncrypted(
[
'user_id' => $data['user'],
'name' => $data['name'],
@ -231,6 +261,4 @@ class SingleCategoryRepository extends ComponentRepository implements SingleCate
return $category;
}
}

View File

@ -14,6 +14,7 @@ use Illuminate\Support\Collection;
*/
interface SingleCategoryRepositoryInterface
{
/**
* @param Category $category
*
@ -54,6 +55,14 @@ interface SingleCategoryRepositoryInterface
*/
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