use journal repository instead of direct calls.

This commit is contained in:
James Cole
2018-02-25 19:09:05 +01:00
parent 99983a5c8f
commit 1b304bf85e
18 changed files with 175 additions and 222 deletions

View File

@@ -52,6 +52,9 @@ use Session;
*/
class ReconcileController extends Controller
{
/** @var JournalRepositoryInterface */
private $repository;
/**
*
*/
@@ -64,6 +67,7 @@ class ReconcileController extends Controller
function ($request, $next) {
app('view')->share('mainTitleIcon', 'fa-credit-card');
app('view')->share('title', trans('firefly.accounts'));
$this->repository = app(JournalRepositoryInterface::class);
return $next($request);
}
@@ -84,10 +88,10 @@ class ReconcileController extends Controller
$subTitle = trans('breadcrumbs.edit_journal', ['description' => $journal->description]);
// journal related code
$pTransaction = $journal->positiveTransaction(); // TODO replace
$pTransaction = $this->repository->getFirstPosTransaction($journal);
$preFilled = [
'date' => $journal->dateAsString(),
'category' => $journal->categoryAsString(),
'date' => $this->repository->getJournalDate($journal, null),
'category' => $this->repository->getJournalCategoryName($journal),
'tags' => join(',', $journal->tags->pluck('tag')->toArray()),
'amount' => $pTransaction->amount,
];
@@ -130,10 +134,8 @@ class ReconcileController extends Controller
$clearedAmount = '0';
$route = route('accounts.reconcile.submit', [$account->id, $start->format('Ymd'), $end->format('Ymd')]);
// get sum of transaction amounts:
/** @var JournalRepositoryInterface $repository */
$repository = app(JournalRepositoryInterface::class);
$transactions = $repository->getTransactionsById($transactionIds);
$cleared = $repository->getTransactionsById($clearedIds);
$transactions = $this->repository->getTransactionsById($transactionIds);
$cleared = $this->repository->getTransactionsById($clearedIds);
$countCleared = 0;
/** @var Transaction $transaction */
@@ -224,12 +226,11 @@ class ReconcileController extends Controller
}
/**
* @param JournalRepositoryInterface $repository
* @param TransactionJournal $journal
* @param TransactionJournal $journal
*
* @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View
*/
public function show(JournalRepositoryInterface $repository, TransactionJournal $journal)
public function show(TransactionJournal $journal)
{
if (TransactionType::RECONCILIATION !== $journal->transactionType->type) {
@@ -238,7 +239,7 @@ class ReconcileController extends Controller
$subTitle = trans('firefly.reconciliation') . ' "' . $journal->description . '"';
// get main transaction:
$transaction = $repository->getAssetTransaction($journal);
$transaction = $this->repository->getAssetTransaction($journal);
$account = $transaction->account;
return view('accounts.reconcile.show', compact('journal', 'subTitle', 'transaction', 'account'));
@@ -384,12 +385,11 @@ class ReconcileController extends Controller
/**
* @param ReconciliationUpdateRequest $request
* @param JournalRepositoryInterface $repository
* @param TransactionJournal $journal
*
* @return $this|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
*/
public function update(ReconciliationUpdateRequest $request, JournalRepositoryInterface $repository, TransactionJournal $journal)
public function update(ReconciliationUpdateRequest $request, TransactionJournal $journal)
{
if (TransactionType::RECONCILIATION !== $journal->transactionType->type) {
return redirect(route('transactions.show', [$journal->id]));
@@ -403,8 +403,8 @@ class ReconcileController extends Controller
$submitted = $request->getJournalData();
// amount pos neg influences the accounts:
$source = $repository->getSourceAccount($journal);
$destination = $repository->getDestinationAccount($journal);
$source = $this->repository->getSourceAccount($journal);
$destination = $this->repository->getDestinationAccount($journal);
if (bccomp($submitted['amount'], '0') === 1) {
// amount is positive, switch accounts:
list($source, $destination) = [$destination, $source];
@@ -443,10 +443,10 @@ class ReconcileController extends Controller
'category_name' => $submitted['category'],
],
],
'notes' => $repository->getNote($journal),
'notes' => $this->repository->getNoteText($journal),
];
$repository->update($journal, $data);
$this->repository->update($journal, $data);
// @codeCoverageIgnoreStart
if (1 === intval($request->get('return_to_edit'))) {

View File

@@ -43,6 +43,8 @@ use View;
*/
class BulkController extends Controller
{
/** @var JournalRepositoryInterface */
private $repository;
/**
@@ -54,6 +56,7 @@ class BulkController extends Controller
$this->middleware(
function ($request, $next) {
$this->repository = app(JournalRepositoryInterface::class);
app('view')->share('title', trans('firefly.transactions'));
app('view')->share('mainTitleIcon', 'fa-repeat');
@@ -77,8 +80,8 @@ class BulkController extends Controller
$messages = [];
/** @var TransactionJournal $journal */
foreach ($journals as $journal) {
$sources = $journal->sourceAccountList();
$destinations = $journal->destinationAccountList();
$sources = $this->repository->getJournalSourceAccounts($journal);
$destinations = $this->repository->getJournalDestinationAccounts($journal);
if ($sources->count() > 1) {
$messages[] = trans('firefly.cannot_edit_multiple_source', ['description' => $journal->description, 'id' => $journal->id]);
continue;
@@ -88,13 +91,13 @@ class BulkController extends Controller
$messages[] = trans('firefly.cannot_edit_multiple_dest', ['description' => $journal->description, 'id' => $journal->id]);
continue;
}
if (TransactionType::OPENING_BALANCE === $journal->transactionType->type) {
if (TransactionType::OPENING_BALANCE === $this->repository->getTransactionType($journal)) {
$messages[] = trans('firefly.cannot_edit_opening_balance');
continue;
}
// cannot edit reconciled transactions / journals:
if ($journal->transactions->first()->reconciled) {
if ($this->repository->isJournalReconciled($journal)) {
$messages[] = trans('firefly.cannot_edit_reconciled', ['description' => $journal->description, 'id' => $journal->id]);
continue;
}

View File

@@ -43,6 +43,9 @@ class ConvertController extends Controller
/** @var AccountRepositoryInterface */
private $accounts;
/** @var JournalRepositoryInterface */
private $repository;
/**
* ConvertController constructor.
*/
@@ -53,7 +56,8 @@ class ConvertController extends Controller
// some useful repositories:
$this->middleware(
function ($request, $next) {
$this->accounts = app(AccountRepositoryInterface::class);
$this->accounts = app(AccountRepositoryInterface::class);
$this->repository = app(JournalRepositoryInterface::class);
app('view')->share('title', trans('firefly.transactions'));
app('view')->share('mainTitleIcon', 'fa-exchange');
@@ -76,8 +80,7 @@ class ConvertController extends Controller
return $this->redirectToAccount($journal);
}
// @codeCoverageIgnoreEnd
$positiveAmount = $journal->amountPositive();
$positiveAmount = $this->repository->getJournalTotal($journal);
$assetAccounts = ExpandedForm::makeSelectList($this->accounts->getActiveAccountsByType([AccountType::DEFAULT, AccountType::ASSET]));
$sourceType = $journal->transactionType;
$subTitle = trans('firefly.convert_to_' . $destinationType->type, ['description' => $journal->description]);
@@ -98,8 +101,8 @@ class ConvertController extends Controller
}
// get source and destination account:
$sourceAccount = $journal->sourceAccountList()->first();
$destinationAccount = $journal->destinationAccountList()->first();
$sourceAccount = $this->repository->getJournalSourceAccounts($journal)->first();
$destinationAccount = $this->repository->getJournalDestinationAccounts($journal)->first();
return view(
'transactions.convert',
@@ -183,8 +186,8 @@ class ConvertController extends Controller
{
/** @var AccountRepositoryInterface $accountRepository */
$accountRepository = app(AccountRepositoryInterface::class);
$sourceAccount = $journal->sourceAccountList()->first();
$destinationAccount = $journal->destinationAccountList()->first();
$sourceAccount = $this->repository->getJournalSourceAccounts($journal)->first();
$destinationAccount = $this->repository->getJournalDestinationAccounts($journal)->first();
$sourceType = $journal->transactionType;
$joined = $sourceType->type . '-' . $destinationType->type;
switch ($joined) {
@@ -239,8 +242,8 @@ class ConvertController extends Controller
{
/** @var AccountRepositoryInterface $accountRepository */
$accountRepository = app(AccountRepositoryInterface::class);
$sourceAccount = $journal->sourceAccountList()->first();
$destinationAccount = $journal->destinationAccountList()->first();
$sourceAccount = $this->repository->getJournalSourceAccounts($journal)->first();
$destinationAccount = $this->repository->getJournalDestinationAccounts($journal)->first();
$sourceType = $journal->transactionType;
$joined = $sourceType->type . '-' . $destinationType->type;
switch ($joined) {

View File

@@ -43,6 +43,9 @@ use View;
*/
class MassController extends Controller
{
/** @var JournalRepositoryInterface */
private $repository;
/**
*
*/
@@ -54,6 +57,7 @@ class MassController extends Controller
function ($request, $next) {
app('view')->share('title', trans('firefly.transactions'));
app('view')->share('mainTitleIcon', 'fa-repeat');
$this->repository = app(JournalRepositoryInterface::class);
return $next($request);
}
@@ -76,12 +80,11 @@ class MassController extends Controller
}
/**
* @param MassDeleteJournalRequest $request
* @param JournalRepositoryInterface $repository
* @param MassDeleteJournalRequest $request
*
* @return mixed
*/
public function destroy(MassDeleteJournalRequest $request, JournalRepositoryInterface $repository)
public function destroy(MassDeleteJournalRequest $request)
{
$ids = $request->get('confirm_mass_delete');
$set = new Collection;
@@ -89,7 +92,7 @@ class MassController extends Controller
/** @var int $journalId */
foreach ($ids as $journalId) {
/** @var TransactionJournal $journal */
$journal = $repository->find(intval($journalId));
$journal = $this->repository->find(intval($journalId));
if (null !== $journal->id && intval($journalId) === $journal->id) {
$set->push($journal);
}
@@ -100,7 +103,7 @@ class MassController extends Controller
/** @var TransactionJournal $journal */
foreach ($set as $journal) {
$repository->delete($journal);
$this->repository->delete($journal);
++$count;
}
@@ -134,8 +137,8 @@ class MassController extends Controller
$messages = [];
/** @var TransactionJournal $journal */
foreach ($journals as $journal) {
$sources = $journal->sourceAccountList();
$destinations = $journal->destinationAccountList();
$sources = $this->repository->getJournalSourceAccounts($journal);
$destinations = $this->repository->getJournalDestinationAccounts($journal);
if ($sources->count() > 1) {
$messages[] = trans('firefly.cannot_edit_multiple_source', ['description' => $journal->description, 'id' => $journal->id]);
continue;
@@ -172,8 +175,8 @@ class MassController extends Controller
$transaction = $journal->positiveTransaction();
$currency = $transaction->transactionCurrency;
$journal->amount = floatval($transaction->amount);
$sources = $journal->sourceAccountList();
$destinations = $journal->destinationAccountList();
$sources = $this->repository->getJournalSourceAccounts($journal);
$destinations = $this->repository->getJournalDestinationAccounts($journal);
$journal->transaction_count = $journal->transactions()->count();
$journal->currency_symbol = $currency->symbol;
$journal->transaction_type_type = $journal->transactionType->type;

View File

@@ -104,13 +104,13 @@ class SingleController extends Controller
*/
public function cloneTransaction(TransactionJournal $journal)
{
$source = $journal->sourceAccountList()->first();
$destination = $journal->destinationAccountList()->first();
$budget = $journal->budgets()->first();
$budgetId = null === $budget ? 0 : $budget->id;
$category = $journal->categories()->first();
$categoryName = null === $category ? '' : $category->name;
$tags = join(',', $journal->tags()->get()->pluck('tag')->toArray());
$source = $this->repository->getJournalSourceAccounts($journal)->first();
$destination = $this->repository->getJournalDestinationAccounts($journal)->first();
$budgetId = $this->repository->getJournalBudgetId($journal);
$categoryName = $this->repository->getJournalCategoryName($journal);
$tags = join(',',$this->repository->getTags($journal));
// todo less direct database access. Use collector?
/** @var Transaction $transaction */
$transaction = $journal->transactions()->first();
$amount = app('steam')->positive($transaction->amount);
@@ -398,7 +398,7 @@ class SingleController extends Controller
}
// @codeCoverageIgnoreEnd
$data = $request->getJournalData();
$data = $request->getJournalData();
$journal = $repository->update($journal, $data);
/** @var array $files */
$files = $request->hasFile('attachments') ? $request->file('attachments') : null;

View File

@@ -124,9 +124,10 @@ class SplitController extends Controller
return view(
'transactions.split.edit', compact(
'subTitleIcon', 'currencies', 'optionalFields', 'preFilled', 'subTitle', 'uploadSize', 'assetAccounts', 'budgets', 'journal', 'accountArray',
'previous'
)
'subTitleIcon', 'currencies', 'optionalFields', 'preFilled', 'subTitle', 'uploadSize', 'assetAccounts', 'budgets',
'journal', 'accountArray',
'previous'
)
);
}
@@ -186,7 +187,7 @@ class SplitController extends Controller
$destinationAccounts = $this->repository->getJournalDestinationAccounts($journal);
$array = [
'journal_description' => $request->old('journal_description', $journal->description),
'journal_amount' => $journal->amountPositive(),
'journal_amount' => $this->repository->getJournalTotal($journal),
'sourceAccounts' => $sourceAccounts,
'journal_source_account_id' => $request->old('journal_source_account_id', $sourceAccounts->first()->id),
'journal_source_account_name' => $request->old('journal_source_account_name', $sourceAccounts->first()->name),