mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-19 10:53:37 +00:00
Get a list of transactions belonging to the recurrence.
This commit is contained in:
@@ -179,15 +179,19 @@ class IndexController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @param Request $request
|
||||||
* @param Recurrence $recurrence
|
* @param Recurrence $recurrence
|
||||||
*
|
*
|
||||||
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
|
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
|
||||||
* @throws \FireflyIII\Exceptions\FireflyException
|
* @throws FireflyException
|
||||||
*/
|
*/
|
||||||
public function show(Recurrence $recurrence)
|
public function show(Request $request, Recurrence $recurrence)
|
||||||
{
|
{
|
||||||
$transformer = new RecurrenceTransformer(new ParameterBag);
|
$transformer = new RecurrenceTransformer(new ParameterBag);
|
||||||
$array = $transformer->transform($recurrence);
|
$array = $transformer->transform($recurrence);
|
||||||
|
$page = (int)$request->get('page');
|
||||||
|
$pageSize = (int)app('preferences')->get('listPageSize', 50)->data;
|
||||||
|
$transactions = $this->recurring->getTransactions($recurrence, $page, $pageSize);
|
||||||
|
|
||||||
// transform dates back to Carbon objects:
|
// transform dates back to Carbon objects:
|
||||||
foreach ($array['recurrence_repetitions'] as $index => $repetition) {
|
foreach ($array['recurrence_repetitions'] as $index => $repetition) {
|
||||||
@@ -198,7 +202,7 @@ class IndexController extends Controller
|
|||||||
|
|
||||||
$subTitle = trans('firefly.overview_for_recurrence', ['title' => $recurrence->title]);
|
$subTitle = trans('firefly.overview_for_recurrence', ['title' => $recurrence->title]);
|
||||||
|
|
||||||
return view('recurring.show', compact('recurrence', 'subTitle', 'array'));
|
return view('recurring.show', compact('recurrence', 'subTitle', 'array','transactions'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -26,6 +26,7 @@ namespace FireflyIII\Repositories\Recurring;
|
|||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
use FireflyIII\Exceptions\FireflyException;
|
||||||
use FireflyIII\Factory\RecurrenceFactory;
|
use FireflyIII\Factory\RecurrenceFactory;
|
||||||
|
use FireflyIII\Helpers\Collector\JournalCollectorInterface;
|
||||||
use FireflyIII\Models\Note;
|
use FireflyIII\Models\Note;
|
||||||
use FireflyIII\Models\Preference;
|
use FireflyIII\Models\Preference;
|
||||||
use FireflyIII\Models\Recurrence;
|
use FireflyIII\Models\Recurrence;
|
||||||
@@ -34,9 +35,11 @@ use FireflyIII\Models\RecurrenceRepetition;
|
|||||||
use FireflyIII\Models\RecurrenceTransaction;
|
use FireflyIII\Models\RecurrenceTransaction;
|
||||||
use FireflyIII\Models\RecurrenceTransactionMeta;
|
use FireflyIII\Models\RecurrenceTransactionMeta;
|
||||||
use FireflyIII\Models\TransactionJournal;
|
use FireflyIII\Models\TransactionJournal;
|
||||||
|
use FireflyIII\Models\TransactionJournalMeta;
|
||||||
use FireflyIII\Services\Internal\Destroy\RecurrenceDestroyService;
|
use FireflyIII\Services\Internal\Destroy\RecurrenceDestroyService;
|
||||||
use FireflyIII\Services\Internal\Update\RecurrenceUpdateService;
|
use FireflyIII\Services\Internal\Update\RecurrenceUpdateService;
|
||||||
use FireflyIII\User;
|
use FireflyIII\User;
|
||||||
|
use Illuminate\Pagination\LengthAwarePaginator;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
use Log;
|
use Log;
|
||||||
|
|
||||||
@@ -328,6 +331,39 @@ class RecurringRepository implements RecurringRepositoryInterface
|
|||||||
return $tags;
|
return $tags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Recurrence $recurrence
|
||||||
|
*
|
||||||
|
* @param int $page
|
||||||
|
* @param int $pageSize
|
||||||
|
*
|
||||||
|
* @return LengthAwarePaginator
|
||||||
|
*/
|
||||||
|
public function getTransactions(Recurrence $recurrence, int $page, int $pageSize): LengthAwarePaginator
|
||||||
|
{
|
||||||
|
$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()->setLimit($pageSize)->setPage($page);
|
||||||
|
// filter on specific journals.
|
||||||
|
$collector->setJournals(new Collection($search));
|
||||||
|
|
||||||
|
return $collector->getPaginatedJournals();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculate the next X iterations starting on the date given in $date.
|
* Calculate the next X iterations starting on the date given in $date.
|
||||||
*
|
*
|
||||||
|
@@ -29,6 +29,7 @@ use FireflyIII\Models\Recurrence;
|
|||||||
use FireflyIII\Models\RecurrenceRepetition;
|
use FireflyIII\Models\RecurrenceRepetition;
|
||||||
use FireflyIII\Models\RecurrenceTransaction;
|
use FireflyIII\Models\RecurrenceTransaction;
|
||||||
use FireflyIII\User;
|
use FireflyIII\User;
|
||||||
|
use Illuminate\Pagination\LengthAwarePaginator;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
|
|
||||||
|
|
||||||
@@ -46,6 +47,16 @@ interface RecurringRepositoryInterface
|
|||||||
*/
|
*/
|
||||||
public function destroy(Recurrence $recurrence): void;
|
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.
|
* Returns all of the user's recurring transactions.
|
||||||
*
|
*
|
||||||
|
@@ -52,7 +52,7 @@ class RecurrenceTransformer extends TransformerAbstract
|
|||||||
*
|
*
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $availableIncludes = ['user'];
|
protected $availableIncludes = ['user', 'transactions'];
|
||||||
/**
|
/**
|
||||||
* List of resources to automatically include
|
* List of resources to automatically include
|
||||||
*
|
*
|
||||||
|
@@ -194,7 +194,7 @@
|
|||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-body">
|
<div class="box-body">
|
||||||
List be here.
|
{% include 'list.journals' with {sorting:false, hideBills:true, hideBudgets: true, hideCategories: true, showReconcile: false} %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Reference in New Issue
Block a user