More stuff for categories.

This commit is contained in:
James Cole 2016-05-09 18:06:53 +02:00
parent 98e683329e
commit a90d095609
3 changed files with 15 additions and 10 deletions

View File

@ -163,7 +163,7 @@ class CategoryController extends Controller
// oldest transaction in category:
//$start = $repository->getFirstActivityDate($category);
$start = $repository->firstUseDate($category, new Account);
$start = $repository->firstUseDate($category, new Collection);
$range = Preferences::get('viewRange', '1M')->data;
$start = Navigation::startOfPeriod($start, $range);
$end = Navigation::endOfX(new Carbon, $range);

View File

@ -573,7 +573,7 @@ class CategoryRepository implements CategoryRepositoryInterface
$first = null;
/** @var TransactionJournal $first */
$firstJournalQuery = $category->transactionjournals()->orderBy('date', 'DESC');
$firstJournalQuery = $category->transactionjournals()->orderBy('date', 'ASC');
if ($accounts->count() > 0) {
// filter journals:
@ -643,17 +643,21 @@ class CategoryRepository implements CategoryRepositoryInterface
$first = $query->get(TransactionJournal::queryFields());
// then collection transactions (harder)
$query = $this->user->transactions()
->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.id');
$query = $this->user->transactions();
$query->leftJoin('category_transaction', 'category_transaction.transaction_id', '=', 'transactions.id');
$query->where('category_transaction.category_id', $category->id);
$second = $query->get('transaction_journals.*');
$second = $query->get(['transaction_journals.*']);
$complete = $complete->merge($first);
$complete = $complete->merge($second);
return $complete;
// create paginator
$offset = ($page - 1) * $pageSize;
$subSet = $complete->slice($offset, $pageSize);
$paginator = new LengthAwarePaginator($subSet, $complete->count(), $pageSize, $page);
return $paginator;
}
/**
@ -696,7 +700,6 @@ class CategoryRepository implements CategoryRepositoryInterface
// then collection transactions (harder)
$query = $this->user->transactions()
->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.id')
->where('transaction_journals.date', '>=', $start->format('Y-m-d 00:00:00'))
->where('transaction_journals.date', '<=', $end->format('Y-m-d 23:59:59'));
if (count($types) > 0) {
@ -712,7 +715,7 @@ class CategoryRepository implements CategoryRepositoryInterface
$query->leftJoin('category_transaction', 'category_transaction.transaction_id', '=', 'transactions.id');
$query->whereIn('category_transaction.category_id', $categoryIds);
}
$second = $query->get('transaction_journals.*');
$second = $query->get(['transaction_journals.*']);
$complete = $complete->merge($first);
$complete = $complete->merge($second);
@ -785,7 +788,7 @@ class CategoryRepository implements CategoryRepositoryInterface
$last = null;
/** @var TransactionJournal $first */
$lastJournalQuery = $category->transactionjournals()->orderBy('date', 'ASC');
$lastJournalQuery = $category->transactionjournals()->orderBy('date', 'DESC');
if ($accounts->count() > 0) {
// filter journals:
@ -804,7 +807,7 @@ class CategoryRepository implements CategoryRepositoryInterface
$lastTransactionQuery = $category->transactions()
->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
->orderBy('transaction_journals.date', 'ASC');
->orderBy('transaction_journals.date', 'DESC');
if ($accounts->count() > 0) {
// filter journals:
$ids = $accounts->pluck('id')->toArray();

View File

@ -198,6 +198,8 @@ interface CategoryRepositoryInterface
public function journalsInPeriodWithoutCategory(Collection $accounts, Carbon $start, Carbon $end) : Collection;
/**
* Return most recent transaction(journal) date.
*
* @param Category $category
* @param Collection $accounts
*