From 7ff8c5e966357b821dbff50142410d0b6ac76860 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sat, 30 Dec 2017 12:13:13 +0100 Subject: [PATCH] Move bulk methods to their own controller. #1078 --- .../Transaction/BulkController.php | 127 ++++++++++++++++++ .../Transaction/MassController.php | 83 ------------ 2 files changed, 127 insertions(+), 83 deletions(-) create mode 100644 app/Http/Controllers/Transaction/BulkController.php diff --git a/app/Http/Controllers/Transaction/BulkController.php b/app/Http/Controllers/Transaction/BulkController.php new file mode 100644 index 0000000000..c3e825a7c6 --- /dev/null +++ b/app/Http/Controllers/Transaction/BulkController.php @@ -0,0 +1,127 @@ +. + */ + +declare(strict_types=1); + +namespace FireflyIII\Http\Controllers\Transaction; + + +use FireflyIII\Http\Controllers\Controller; +use FireflyIII\Http\Requests\MassEditBulkJournalRequest; +use FireflyIII\Models\TransactionJournal; +use FireflyIII\Models\TransactionType; +use FireflyIII\Repositories\Journal\JournalRepositoryInterface; +use Illuminate\Support\Collection; +use Preferences; +use Session; +use View; + +/** + * Class BulkController + */ +class BulkController extends Controller +{ + /** + * @param Collection $journals + * + * @return View + */ + public function edit(Collection $journals) + { + $subTitle = trans('firefly.mass_edit_bulk_journals'); + + // skip transactions that have multiple destinations, multiple sources or are an opening balance. + $filtered = new Collection; + $messages = []; + /** @var TransactionJournal $journal */ + foreach ($journals as $journal) { + $sources = $journal->sourceAccountList(); + $destinations = $journal->destinationAccountList(); + if ($sources->count() > 1) { + $messages[] = trans('firefly.cannot_edit_multiple_source', ['description' => $journal->description, 'id' => $journal->id]); + continue; + } + + if ($destinations->count() > 1) { + $messages[] = trans('firefly.cannot_edit_multiple_dest', ['description' => $journal->description, 'id' => $journal->id]); + continue; + } + if (TransactionType::OPENING_BALANCE === $journal->transactionType->type) { + $messages[] = trans('firefly.cannot_edit_opening_balance'); + continue; + } + + // cannot edit reconciled transactions / journals: + if ($journal->transactions->first()->reconciled) { + $messages[] = trans('firefly.cannot_edit_reconciled', ['description' => $journal->description, 'id' => $journal->id]); + continue; + } + + $filtered->push($journal); + } + + if (count($messages) > 0) { + Session::flash('info', $messages); + } + + // put previous url in session + $this->rememberPreviousUri('transactions.mass-edit-bulk.uri'); + Session::flash('gaEventCategory', 'transactions'); + Session::flash('gaEventAction', 'mass-edit-bulk'); + + // collect some useful meta data for the mass edit: + $filtered->each( + function (TransactionJournal $journal) { + $journal->transaction_count = $journal->transactions()->count(); + } + ); + + if (0 === $filtered->count()) { + Session::flash('error', trans('firefly.no_edit_multiple_left')); + } + + $journals = $filtered; + + return view('transactions.mass.edit-bulk', compact('journals', 'subTitle')); + } + + + /** + * @param MassEditBulkJournalRequest $request + * @param JournalRepositoryInterface $repository + * + * @return mixed + */ + public function updateBulk(MassEditBulkJournalRequest $request, JournalRepositoryInterface $repository) + { + $journalIds = $request->get('journals'); + $count = 0; + if (is_array($journalIds)) { + $count = $repository->updateBulk($journalIds, $request->get('category'), $request->get('tags')); + } + Preferences::mark(); + Session::flash('success', trans('firefly.mass_edited_transactions_success', ['amount' => $count])); + + // redirect to previous URL: + return redirect($this->getPreviousUri('transactions.mass-edit-bulk.uri')); + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Transaction/MassController.php b/app/Http/Controllers/Transaction/MassController.php index cd393d7581..734bbe1397 100644 --- a/app/Http/Controllers/Transaction/MassController.php +++ b/app/Http/Controllers/Transaction/MassController.php @@ -201,70 +201,6 @@ class MassController extends Controller return view('transactions.mass.edit', compact('journals', 'subTitle', 'accounts', 'budgets')); } - /** - * @param Collection $journals - * - * @return View - */ - public function editBulk(Collection $journals) - { - $subTitle = trans('firefly.mass_edit_bulk_journals'); - - // skip transactions that have multiple destinations, multiple sources or are an opening balance. - $filtered = new Collection; - $messages = []; - /** @var TransactionJournal $journal */ - foreach ($journals as $journal) { - $sources = $journal->sourceAccountList(); - $destinations = $journal->destinationAccountList(); - if ($sources->count() > 1) { - $messages[] = trans('firefly.cannot_edit_multiple_source', ['description' => $journal->description, 'id' => $journal->id]); - continue; - } - - if ($destinations->count() > 1) { - $messages[] = trans('firefly.cannot_edit_multiple_dest', ['description' => $journal->description, 'id' => $journal->id]); - continue; - } - if (TransactionType::OPENING_BALANCE === $journal->transactionType->type) { - $messages[] = trans('firefly.cannot_edit_opening_balance'); - continue; - } - - // cannot edit reconciled transactions / journals: - if ($journal->transactions->first()->reconciled) { - $messages[] = trans('firefly.cannot_edit_reconciled', ['description' => $journal->description, 'id' => $journal->id]); - continue; - } - - $filtered->push($journal); - } - - if (count($messages) > 0) { - Session::flash('info', $messages); - } - - // put previous url in session - $this->rememberPreviousUri('transactions.mass-edit-bulk.uri'); - Session::flash('gaEventCategory', 'transactions'); - Session::flash('gaEventAction', 'mass-edit-bulk'); - - // collect some useful meta data for the mass edit: - $filtered->each( - function (TransactionJournal $journal) { - $journal->transaction_count = $journal->transactions()->count(); - } - ); - - if (0 === $filtered->count()) { - Session::flash('error', trans('firefly.no_edit_multiple_left')); - } - - $journals = $filtered; - - return view('transactions.mass.edit-bulk', compact('journals', 'subTitle')); - } - /** * @param MassEditJournalRequest $request * @param JournalRepositoryInterface $repository @@ -330,23 +266,4 @@ class MassController extends Controller return redirect($this->getPreviousUri('transactions.mass-edit.uri')); } - /** - * @param MassEditBulkJournalRequest $request - * @param JournalRepositoryInterface $repository - * - * @return mixed - */ - public function updateBulk(MassEditBulkJournalRequest $request, JournalRepositoryInterface $repository) - { - $journalIds = $request->get('journals'); - $count = 0; - if (is_array($journalIds)) { - $count = $repository->updateBulk($journalIds, $request->get('category'), $request->get('tags')); - } - Preferences::mark(); - Session::flash('success', trans('firefly.mass_edited_transactions_success', ['amount' => $count])); - - // redirect to previous URL: - return redirect($this->getPreviousUri('transactions.mass-edit-bulk.uri')); - } }