mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-12 23:45:10 +00:00
More stuff for categories.
This commit is contained in:
@@ -163,7 +163,7 @@ class CategoryController extends Controller
|
|||||||
|
|
||||||
// oldest transaction in category:
|
// oldest transaction in category:
|
||||||
//$start = $repository->getFirstActivityDate($category);
|
//$start = $repository->getFirstActivityDate($category);
|
||||||
$start = $repository->firstUseDate($category, new Account);
|
$start = $repository->firstUseDate($category, new Collection);
|
||||||
$range = Preferences::get('viewRange', '1M')->data;
|
$range = Preferences::get('viewRange', '1M')->data;
|
||||||
$start = Navigation::startOfPeriod($start, $range);
|
$start = Navigation::startOfPeriod($start, $range);
|
||||||
$end = Navigation::endOfX(new Carbon, $range);
|
$end = Navigation::endOfX(new Carbon, $range);
|
||||||
|
@@ -573,7 +573,7 @@ class CategoryRepository implements CategoryRepositoryInterface
|
|||||||
$first = null;
|
$first = null;
|
||||||
|
|
||||||
/** @var TransactionJournal $first */
|
/** @var TransactionJournal $first */
|
||||||
$firstJournalQuery = $category->transactionjournals()->orderBy('date', 'DESC');
|
$firstJournalQuery = $category->transactionjournals()->orderBy('date', 'ASC');
|
||||||
|
|
||||||
if ($accounts->count() > 0) {
|
if ($accounts->count() > 0) {
|
||||||
// filter journals:
|
// filter journals:
|
||||||
@@ -643,17 +643,21 @@ class CategoryRepository implements CategoryRepositoryInterface
|
|||||||
$first = $query->get(TransactionJournal::queryFields());
|
$first = $query->get(TransactionJournal::queryFields());
|
||||||
|
|
||||||
// then collection transactions (harder)
|
// then collection transactions (harder)
|
||||||
$query = $this->user->transactions()
|
$query = $this->user->transactions();
|
||||||
->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.id');
|
|
||||||
$query->leftJoin('category_transaction', 'category_transaction.transaction_id', '=', 'transactions.id');
|
$query->leftJoin('category_transaction', 'category_transaction.transaction_id', '=', 'transactions.id');
|
||||||
$query->where('category_transaction.category_id', $category->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($first);
|
||||||
$complete = $complete->merge($second);
|
$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)
|
// then collection transactions (harder)
|
||||||
$query = $this->user->transactions()
|
$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', '>=', $start->format('Y-m-d 00:00:00'))
|
||||||
->where('transaction_journals.date', '<=', $end->format('Y-m-d 23:59:59'));
|
->where('transaction_journals.date', '<=', $end->format('Y-m-d 23:59:59'));
|
||||||
if (count($types) > 0) {
|
if (count($types) > 0) {
|
||||||
@@ -712,7 +715,7 @@ class CategoryRepository implements CategoryRepositoryInterface
|
|||||||
$query->leftJoin('category_transaction', 'category_transaction.transaction_id', '=', 'transactions.id');
|
$query->leftJoin('category_transaction', 'category_transaction.transaction_id', '=', 'transactions.id');
|
||||||
$query->whereIn('category_transaction.category_id', $categoryIds);
|
$query->whereIn('category_transaction.category_id', $categoryIds);
|
||||||
}
|
}
|
||||||
$second = $query->get('transaction_journals.*');
|
$second = $query->get(['transaction_journals.*']);
|
||||||
$complete = $complete->merge($first);
|
$complete = $complete->merge($first);
|
||||||
$complete = $complete->merge($second);
|
$complete = $complete->merge($second);
|
||||||
|
|
||||||
@@ -785,7 +788,7 @@ class CategoryRepository implements CategoryRepositoryInterface
|
|||||||
$last = null;
|
$last = null;
|
||||||
|
|
||||||
/** @var TransactionJournal $first */
|
/** @var TransactionJournal $first */
|
||||||
$lastJournalQuery = $category->transactionjournals()->orderBy('date', 'ASC');
|
$lastJournalQuery = $category->transactionjournals()->orderBy('date', 'DESC');
|
||||||
|
|
||||||
if ($accounts->count() > 0) {
|
if ($accounts->count() > 0) {
|
||||||
// filter journals:
|
// filter journals:
|
||||||
@@ -804,7 +807,7 @@ class CategoryRepository implements CategoryRepositoryInterface
|
|||||||
|
|
||||||
$lastTransactionQuery = $category->transactions()
|
$lastTransactionQuery = $category->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', 'DESC');
|
||||||
if ($accounts->count() > 0) {
|
if ($accounts->count() > 0) {
|
||||||
// filter journals:
|
// filter journals:
|
||||||
$ids = $accounts->pluck('id')->toArray();
|
$ids = $accounts->pluck('id')->toArray();
|
||||||
|
@@ -198,6 +198,8 @@ interface CategoryRepositoryInterface
|
|||||||
public function journalsInPeriodWithoutCategory(Collection $accounts, Carbon $start, Carbon $end) : Collection;
|
public function journalsInPeriodWithoutCategory(Collection $accounts, Carbon $start, Carbon $end) : Collection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Return most recent transaction(journal) date.
|
||||||
|
*
|
||||||
* @param Category $category
|
* @param Category $category
|
||||||
* @param Collection $accounts
|
* @param Collection $accounts
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user