Big refactor to remove the deprecated transaction collector.

This commit is contained in:
James Cole
2019-05-30 12:31:19 +02:00
parent 10a6ff9bf8
commit 8b7e87ae57
117 changed files with 1314 additions and 1208 deletions

View File

@@ -23,7 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\Http\Controllers\Json;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Helpers\Collector\TransactionCollectorInterface;
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Http\Controllers\Controller;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType;
@@ -98,12 +98,10 @@ class AutoCompleteController extends Controller
/**
* List of all journals.
*
* @param Request $request
* @param TransactionCollectorInterface $collector
*
* @param Request $request
* @return JsonResponse
*/
public function allTransactionJournals(Request $request, TransactionCollectorInterface $collector): JsonResponse
public function allTransactionJournals(Request $request): JsonResponse
{
$search = (string)$request->get('search');
$cache = new CacheProperties;
@@ -115,8 +113,22 @@ class AutoCompleteController extends Controller
return response()->json($cache->get()); // @codeCoverageIgnore
}
// find everything:
/** @var GroupCollectorInterface $collector */
$collector = app(GroupCollectorInterface::class);
$collector->setLimit(250)->setPage(1);
$return = array_values(array_unique($collector->getTransactions()->pluck('description')->toArray()));
$journals = $collector->getExtractedJournals();
$return = [];
/** @var array $journal */
foreach ($journals as $journal) {
if (strlen($journal['group_title']) > 0) {
$return[] = $journal['group_title'];
}
if (strlen($journal['description']) > 0) {
$return[] = $journal['description'];
}
}
$return = array_unique($return);
if ('' !== $search) {
$return = array_values(
@@ -136,7 +148,7 @@ class AutoCompleteController extends Controller
/**
* @param Request $request
* @param string $subject
* @param string $subject
*
* @return JsonResponse
* @throws FireflyException
@@ -250,13 +262,12 @@ class AutoCompleteController extends Controller
/**
* List of journals with their ID.
*
* @param Request $request
* @param TransactionCollectorInterface $collector
* @param TransactionJournal $except
* @param Request $request
* @param TransactionJournal $except
*
* @return JsonResponse
*/
public function journalsWithId(Request $request, TransactionCollectorInterface $collector, TransactionJournal $except): JsonResponse
public function journalsWithId(Request $request, TransactionJournal $except): JsonResponse
{
$search = (string)$request->get('search');
$cache = new CacheProperties;
@@ -268,15 +279,17 @@ class AutoCompleteController extends Controller
return response()->json($cache->get()); // @codeCoverageIgnore
}
// find everything:
/** @var GroupCollectorInterface $collector */
$collector = app(GroupCollectorInterface::class);
$collector->setLimit(400)->setPage(1);
$set = $collector->getTransactions()->pluck('description', 'journal_id')->toArray();
$set = $collector->getExtractedJournals();
$return = [];
foreach ($set as $id => $description) {
$id = (int)$id;
foreach ($set as $journal) {
$id = (int)$journal['transaction_journal_id'];
if ($id !== $except->id) {
$return[] = [
'id' => $id,
'name' => $id . ': ' . $description,
'name' => $id . ': ' . $journal['description'],
];
}
}
@@ -327,13 +340,12 @@ class AutoCompleteController extends Controller
/**
* List of journals by type.
*
* @param Request $request
* @param TransactionCollectorInterface $collector
* @param string $what
* @param Request $request
* @param string $what
*
* @return JsonResponse
*/
public function transactionJournals(Request $request, TransactionCollectorInterface $collector, string $what): JsonResponse
public function transactionJournals(Request $request, string $what): JsonResponse
{
$search = (string)$request->get('search');
$cache = new CacheProperties;
@@ -348,8 +360,15 @@ class AutoCompleteController extends Controller
$type = config('firefly.transactionTypesByWhat.' . $what);
$types = [$type];
/** @var GroupCollectorInterface $collector */
$collector = app(GroupCollectorInterface::class);
$collector->setTypes($types)->setLimit(250)->setPage(1);
$return = array_unique($collector->getTransactions()->pluck('description')->toArray());
$result = $collector->getExtractedJournals();
$return = [];
foreach ($result as $journal) {
$return[] = $journal['description'];
}
$return = array_unique($return);
sort($return);
if ('' !== $search) {

View File

@@ -23,12 +23,11 @@ declare(strict_types=1);
namespace FireflyIII\Http\Controllers\Json;
use Carbon\Carbon;
use FireflyIII\Helpers\Collector\TransactionCollectorInterface;
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Helpers\Report\NetWorthInterface;
use FireflyIII\Http\Controllers\Controller;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Models\TransactionType;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
@@ -134,35 +133,33 @@ class BoxController extends Controller
$sums = [];
// collect income of user:
/** @var TransactionCollectorInterface $collector */
$collector = app(TransactionCollectorInterface::class);
$collector->setAllAssetAccounts()->setRange($start, $end)
->setTypes([TransactionType::DEPOSIT])
->withOpposingAccount();
$set = $collector->getTransactions();
/** @var Transaction $transaction */
foreach ($set as $transaction) {
$currencyId = (int)$transaction->transaction_currency_id;
/** @var GroupCollectorInterface $collector */
$collector = app(GroupCollectorInterface::class);
$collector->setRange($start, $end)
->setTypes([TransactionType::DEPOSIT]);
$set = $collector->getExtractedJournals();
/** @var array $journal */
foreach ($set as $journal) {
$currencyId = (int)$journal['currency_id'];
$incomes[$currencyId] = $incomes[$currencyId] ?? '0';
$incomes[$currencyId] = bcadd($incomes[$currencyId], $transaction->transaction_amount);
$incomes[$currencyId] = bcadd($incomes[$currencyId], $journal['amount']);
$sums[$currencyId] = $sums[$currencyId] ?? '0';
$sums[$currencyId] = bcadd($sums[$currencyId], $transaction->transaction_amount);
$sums[$currencyId] = bcadd($sums[$currencyId], $journal['amount']);
}
// collect expenses
/** @var TransactionCollectorInterface $collector */
$collector = app(TransactionCollectorInterface::class);
$collector->setAllAssetAccounts()->setRange($start, $end)
->setTypes([TransactionType::WITHDRAWAL])
->withOpposingAccount();
$set = $collector->getTransactions();
/** @var Transaction $transaction */
foreach ($set as $transaction) {
$currencyId = (int)$transaction->transaction_currency_id;
/** @var GroupCollectorInterface $collector */
$collector = app(GroupCollectorInterface::class);
$collector->setRange($start, $end)
->setTypes([TransactionType::WITHDRAWAL]);
$set = $collector->getExtractedJournals();
/** @var array $journal */
foreach ($set as $journal) {
$currencyId = (int)$journal['currency_id'];
$expenses[$currencyId] = $expenses[$currencyId] ?? '0';
$expenses[$currencyId] = bcadd($expenses[$currencyId], $transaction->transaction_amount);
$expenses[$currencyId] = bcadd($expenses[$currencyId], $journal['amount']);
$sums[$currencyId] = $sums[$currencyId] ?? '0';
$sums[$currencyId] = bcadd($sums[$currencyId], $transaction->transaction_amount);
$sums[$currencyId] = bcadd($sums[$currencyId], $journal['amount']);
}
// format amounts:
@@ -173,7 +170,7 @@ class BoxController extends Controller
$incomes[$currencyId] = app('amount')->formatAnything($currency, $incomes[$currencyId] ?? '0', false);
$expenses[$currencyId] = app('amount')->formatAnything($currency, $expenses[$currencyId] ?? '0', false);
}
if (0 === \count($sums)) {
if (0 === count($sums)) {
$currency = app('amount')->getDefaultCurrency();
$sums[$currency->id] = app('amount')->formatAnything($currency, '0', false);
$incomes[$currency->id] = app('amount')->formatAnything($currency, '0', false);
@@ -184,7 +181,7 @@ class BoxController extends Controller
'incomes' => $incomes,
'expenses' => $expenses,
'sums' => $sums,
'size' => \count($sums),
'size' => count($sums),
];

View File

@@ -64,7 +64,7 @@ class FrontpageController extends Controller
}
}
$html = '';
if (\count($info) > 0) {
if (count($info) > 0) {
try {
$html = view('json.piggy-banks', compact('info'))->render();
// @codeCoverageIgnoreStart

View File

@@ -47,7 +47,7 @@ class IntroController
$specificPage = $specificPage ?? '';
$steps = $this->getBasicSteps($route);
$specificSteps = $this->getSpecificSteps($route, $specificPage);
if (0 === \count($specificSteps)) {
if (0 === count($specificSteps)) {
Log::debug(sprintf('No specific steps for route "%s" and page "%s"', $route, $specificPage));
return response()->json($steps);
@@ -55,7 +55,7 @@ class IntroController
if ($this->hasOutroStep($route)) {
// @codeCoverageIgnoreStart
// save last step:
$lastStep = $steps[\count($steps) - 1];
$lastStep = $steps[count($steps) - 1];
// remove last step:
array_pop($steps);
// merge arrays and add last step again

View File

@@ -26,7 +26,7 @@ namespace FireflyIII\Http\Controllers\Json;
use Carbon\Carbon;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Helpers\Collector\TransactionCollectorInterface;
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Http\Controllers\Controller;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType;
@@ -44,7 +44,7 @@ use Throwable;
/**
*
* Class ReconcileController
*
* TODO needs a full rewrite
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class ReconcileController extends Controller
@@ -84,8 +84,8 @@ class ReconcileController extends Controller
*
* @param Request $request
* @param Account $account
* @param Carbon $start
* @param Carbon $end
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*
@@ -189,8 +189,8 @@ class ReconcileController extends Controller
* Returns a list of transactions in a modal.
*
* @param Account $account
* @param Carbon $start
* @param Carbon $end
* @param Carbon $start
* @param Carbon $end
*
* @return mixed
*
@@ -220,14 +220,15 @@ class ReconcileController extends Controller
$selectionEnd->addDays(3);
// grab transactions:
/** @var TransactionCollectorInterface $collector */
$collector = app(TransactionCollectorInterface::class);
/** @var GroupCollectorInterface $collector */
$collector = app(GroupCollectorInterface::class);
$collector->setAccounts(new Collection([$account]))
->setRange($selectionStart, $selectionEnd)->withBudgetInformation()->withOpposingAccount()->withCategoryInformation();
$transactions = $collector->getTransactions();
->setRange($selectionStart, $selectionEnd)->withBudgetInformation()->withCategoryInformation();
$groups = $collector->getGroups();
try {
$html = view(
'accounts.reconcile.transactions', compact('account', 'transactions', 'currency', 'start', 'end', 'selectionStart', 'selectionEnd')
'accounts.reconcile.transactions', compact('account', 'groups', 'currency', 'start', 'end', 'selectionStart', 'selectionEnd')
)->render();
// @codeCoverageIgnoreStart
} catch (Throwable $e) {