Add transaction list to recurring transaction

This commit is contained in:
James Cole
2018-07-03 05:32:35 +02:00
parent 5690a44c38
commit 2260ede559
4 changed files with 74 additions and 16 deletions

View File

@@ -334,13 +334,12 @@ class RecurringRepository implements RecurringRepositoryInterface
/**
* @param Recurrence $recurrence
*
* @param int $page
* @param int $pageSize
*
* @return LengthAwarePaginator
*/
public function getTransactions(Recurrence $recurrence, int $page, int $pageSize): LengthAwarePaginator
public function getTransactionPaginator(Recurrence $recurrence, int $page, int $pageSize): LengthAwarePaginator
{
$journalMeta = TransactionJournalMeta
::leftJoin('transaction_journals', 'transaction_journals.id', '=', 'journal_meta.transaction_journal_id')
@@ -356,8 +355,7 @@ class RecurringRepository implements RecurringRepositoryInterface
/** @var JournalCollectorInterface $collector */
$collector = app(JournalCollectorInterface::class);
$collector->setUser($recurrence->user);
$collector->withOpposingAccount()->setAllAssetAccounts()->
withCategoryInformation()->withBudgetInformation()->setLimit($pageSize)->setPage($page);
$collector->withOpposingAccount()->setAllAssetAccounts()->withCategoryInformation()->withBudgetInformation()->setLimit($pageSize)->setPage($page);
// filter on specific journals.
$collector->removeFilter(InternalTransferFilter::class);
$collector->setJournals(new Collection($search));
@@ -365,6 +363,35 @@ class RecurringRepository implements RecurringRepositoryInterface
return $collector->getPaginatedJournals();
}
/**
* @param Recurrence $recurrence
*
* @return Collection
*/
public function getTransactions(Recurrence $recurrence): Collection
{
$journalMeta = TransactionJournalMeta
::leftJoin('transaction_journals', 'transaction_journals.id', '=', 'journal_meta.transaction_journal_id')
->whereNull('transaction_journals.deleted_at')
->where('transaction_journals.user_id', $this->user->id)
->where('name', 'recurrence_id')
->where('data', json_encode((string)$recurrence->id))
->get()->pluck('transaction_journal_id')->toArray();
$search = [];
foreach ($journalMeta as $journalId) {
$search[] = ['id' => (int)$journalId];
}
/** @var JournalCollectorInterface $collector */
$collector = app(JournalCollectorInterface::class);
$collector->setUser($recurrence->user);
$collector->withOpposingAccount()->setAllAssetAccounts()->withCategoryInformation()->withBudgetInformation();
// filter on specific journals.
$collector->removeFilter(InternalTransferFilter::class);
$collector->setJournals(new Collection($search));
return $collector->getJournals();
}
/**
* Calculate the next X iterations starting on the date given in $date.
*

View File

@@ -47,16 +47,6 @@ interface RecurringRepositoryInterface
*/
public function destroy(Recurrence $recurrence): void;
/**
* @param Recurrence $recurrence
*
* @param int $page
* @param int $pageSize
*
* @return LengthAwarePaginator
*/
public function getTransactions(Recurrence $recurrence, int $page, int $pageSize): LengthAwarePaginator;
/**
* Returns all of the user's recurring transactions.
*
@@ -91,6 +81,7 @@ interface RecurringRepositoryInterface
/**
* Returns the journals created for this recurrence, possibly limited by time.
* TODO make consistent with getTransactions
*
* @param Recurrence $recurrence
* @param Carbon|null $start
@@ -131,6 +122,22 @@ interface RecurringRepositoryInterface
*/
public function getTags(Recurrence $recurrence): array;
/**
* @param Recurrence $recurrence
* @param int $page
* @param int $pageSize
*
* @return LengthAwarePaginator
*/
public function getTransactionPaginator(Recurrence $recurrence, int $page, int $pageSize): LengthAwarePaginator;
/**
* @param Recurrence $recurrence
*
* @return Collection
*/
public function getTransactions(Recurrence $recurrence): Collection;
/**
* Calculate the next X iterations starting on the date given in $date.
* Returns an array of Carbon objects.