Fix chart for account/all overview.

This commit is contained in:
James Cole 2016-11-21 20:23:25 +01:00
parent 6075d75ee2
commit 4a99399952
3 changed files with 45 additions and 11 deletions

View File

@ -22,6 +22,7 @@ use FireflyIII\Http\Requests\AccountFormRequest;
use FireflyIII\Models\Account; use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType; use FireflyIII\Models\AccountType;
use FireflyIII\Models\Transaction; use FireflyIII\Models\Transaction;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Account\AccountRepositoryInterface as ARI; use FireflyIII\Repositories\Account\AccountRepositoryInterface as ARI;
use FireflyIII\Repositories\Account\AccountTaskerInterface; use FireflyIII\Repositories\Account\AccountTaskerInterface;
use FireflyIII\Support\CacheProperties; use FireflyIII\Support\CacheProperties;
@ -240,7 +241,7 @@ class AccountController extends Controller
* *
* @return View * @return View
*/ */
public function showAll(Account $account) public function showAll(AccountRepositoryInterface $repository, Account $account)
{ {
$subTitle = sprintf('%s (%s)', $account->name, strtolower(trans('firefly.everything'))); $subTitle = sprintf('%s (%s)', $account->name, strtolower(trans('firefly.everything')));
$page = intval(Input::get('page')) === 0 ? 1 : intval(Input::get('page')); $page = intval(Input::get('page')) === 0 ? 1 : intval(Input::get('page'));
@ -252,7 +253,11 @@ class AccountController extends Controller
$journals = $collector->getPaginatedJournals(); $journals = $collector->getPaginatedJournals();
$journals->setPath('accounts/show/' . $account->id . '/all'); $journals->setPath('accounts/show/' . $account->id . '/all');
return view('accounts.show_with_date', compact('category', 'date', 'account', 'journals', 'subTitle', 'carbon')); // get oldest and newest journal for account:
$start = $repository->oldestJournalDate($account);
$end = $repository->newestJournalDate($account);
return view('accounts.show_with_date', compact('account', 'journals', 'subTitle', 'start', 'end'));
} }
/** /**

View File

@ -260,6 +260,29 @@ class AccountRepository implements AccountRepositoryInterface
return $result; return $result;
} }
/**
* Returns the date of the very last transaction in this account.
*
* @param Account $account
*
* @return Carbon
*/
public function newestJournalDate(Account $account): Carbon
{
$last = new Carbon;
$date = $account->transactions()
->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
->orderBy('transaction_journals.date', 'DESC')
->orderBy('transaction_journals.order', 'ASC')
->orderBy('transaction_journals.id', 'DESC')
->first(['transaction_journals.date']);
if (!is_null($date)) {
$last = new Carbon($date->date);
}
return $last;
}
/** /**
* Returns the date of the very first transaction in this account. * Returns the date of the very first transaction in this account.
* *
@ -270,8 +293,6 @@ class AccountRepository implements AccountRepositoryInterface
public function oldestJournalDate(Account $account): Carbon public function oldestJournalDate(Account $account): Carbon
{ {
$first = new Carbon; $first = new Carbon;
/** @var Transaction $first */
$date = $account->transactions() $date = $account->transactions()
->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id') ->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
->orderBy('transaction_journals.date', 'ASC') ->orderBy('transaction_journals.date', 'ASC')
@ -602,5 +623,4 @@ class AccountRepository implements AccountRepositoryInterface
return false; return false;
} }
} }

View File

@ -96,6 +96,15 @@ interface AccountRepositoryInterface
*/ */
public function getActiveAccountsByType(array $types): Collection; public function getActiveAccountsByType(array $types): Collection;
/**
* Returns the date of the very last transaction in this account.
*
* @param Account $account
*
* @return Carbon
*/
public function newestJournalDate(Account $account): Carbon;
/** /**
* Returns the date of the very first transaction in this account. * Returns the date of the very first transaction in this account.
* *