diff --git a/app/Http/Controllers/JournalController.php b/app/Http/Controllers/JournalController.php index ccd03e930eb..95fc52e8c39 100644 --- a/app/Http/Controllers/JournalController.php +++ b/app/Http/Controllers/JournalController.php @@ -28,10 +28,26 @@ public function index() * * @return array */ - public function list() + public function list(Request $request) { + + $startDate = $request->input('start_date'); + $endDate = $request->input('end_date'); + $sortBy = $request->input('sort_by', 'created_at'); + $sortOrder = $request->input('sort_order', 'desc'); + $perPage = $request->input('per_page', 30); + $entries = collect([]); - $journalEntries = auth()->user()->account->journalEntries()->paginate(30); + + $journalEntriesQuery = auth()->user()->account->journalEntries(); + + if ($startDate && $endDate) { + $journalEntriesQuery->whereDate('date', '>=', $startDate) + ->whereDate('date', '<=', $endDate); + } + $journalEntries = $journalEntriesQuery->orderBy($sortBy, $sortOrder) + ->paginate($perPage); + // this is needed to determine if we need to display the calendar // (month + year) next to the journal entry diff --git a/resources/js/components/journal/JournalList.vue b/resources/js/components/journal/JournalList.vue index a8c4932df71..c5e0868a553 100644 --- a/resources/js/components/journal/JournalList.vue +++ b/resources/js/components/journal/JournalList.vue @@ -1,29 +1,74 @@