From 77c9e3758456671892c3ad7e2f0d96c46cc76c75 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 1 May 2016 06:37:47 +0200 Subject: [PATCH] Move some stuff around. --- .../CrudController.php} | 217 ++-------------- .../Transaction/TransactionController.php | 237 ++++++++++++++++++ app/Http/routes.php | 26 +- 3 files changed, 266 insertions(+), 214 deletions(-) rename app/Http/Controllers/{TransactionController.php => Transaction/CrudController.php} (62%) create mode 100644 app/Http/Controllers/Transaction/TransactionController.php diff --git a/app/Http/Controllers/TransactionController.php b/app/Http/Controllers/Transaction/CrudController.php similarity index 62% rename from app/Http/Controllers/TransactionController.php rename to app/Http/Controllers/Transaction/CrudController.php index 74a35cc1b9..987c810cd5 100644 --- a/app/Http/Controllers/TransactionController.php +++ b/app/Http/Controllers/Transaction/CrudController.php @@ -1,15 +1,21 @@ -data; - $subTitleIcon = config('firefly.transactionIconsByWhat.' . $what); - $types = config('firefly.transactionTypesByWhat.' . $what); - $subTitle = trans('firefly.title_' . $what); - $page = intval(Input::get('page')); - $journals = $repository->getJournalsOfTypes($types, $page, $pageSize); - - $journals->setPath('transactions/' . $what); - - return view('transactions.index', compact('subTitle', 'what', 'subTitleIcon', 'journals')); - - } - - /** - * @param Collection $journals - * - * @return View - */ - public function massDelete(Collection $journals) - { - $subTitle = trans('firefly.mass_delete_journals'); - - // put previous url in session - Session::put('transactions.mass-delete.url', URL::previous()); - Session::flash('gaEventCategory', 'transactions'); - Session::flash('gaEventAction', 'mass-delete'); - - return view('transactions.mass-delete', compact('journals', 'subTitle')); - - } - - /** - * @param MassDeleteJournalRequest $request - * @param JournalRepositoryInterface $repository - * - * @return mixed - */ - public function massDestroy(MassDeleteJournalRequest $request, JournalRepositoryInterface $repository) - { - $ids = $request->get('confirm_mass_delete'); - $set = new Collection; - if (is_array($ids)) { - /** @var int $journalId */ - foreach ($ids as $journalId) { - /** @var TransactionJournal $journal */ - $journal = $repository->find($journalId); - if (!is_null($journal->id) && $journalId == $journal->id) { - $set->push($journal); - } - } - } - unset($journal); - $count = 0; - - /** @var TransactionJournal $journal */ - foreach ($set as $journal) { - $repository->delete($journal); - $count++; - } - - Preferences::mark(); - Session::flash('success', trans('firefly.mass_deleted_transactions_success', ['amount' => $count])); - - // redirect to previous URL: - return redirect(session('transactions.mass-delete.url')); - - } - - /** - * @param Collection $journals - */ - public function massEdit(Collection $journals) - { - $subTitle = trans('firefly.mass_edit_journals'); - /** @var ARI $accountRepository */ - $accountRepository = app('FireflyIII\Repositories\Account\AccountRepositoryInterface'); - $accountList = ExpandedForm::makeSelectList($accountRepository->getAccounts(['Default account', 'Asset account'])); - - // put previous url in session - Session::put('transactions.mass-edit.url', URL::previous()); - Session::flash('gaEventCategory', 'transactions'); - Session::flash('gaEventAction', 'mass-edit'); - - return view('transactions.mass-edit', compact('journals', 'subTitle', 'accountList')); - } - - /** - * - */ - public function massUpdate(MassEditJournalRequest $request, JournalRepositoryInterface $repository) - { - $journalIds = Input::get('journals'); - $count = 0; - if (is_array($journalIds)) { - foreach ($journalIds as $journalId) { - $journal = $repository->find(intval($journalId)); - if ($journal) { - // do update. - - // get optional fields: - $what = strtolower(TransactionJournal::transactionTypeStr($journal)); - $sourceAccountId = $request->get('source_account_id')[$journal->id] ?? 0; - $destAccountId = $request->get('destination_account_id')[$journal->id] ?? 0; - $expenseAccount = $request->get('expense_account')[$journal->id] ?? ''; - $revenueAccount = $request->get('revenue_account')[$journal->id] ?? ''; - $budgetId = $journal->budgets->first() ? $journal->budgets->first()->id : 0; - $category = $journal->categories->first() ? $journal->categories->first()->name : ''; - $tags = $journal->tags->pluck('tag')->toArray(); - - // for a deposit, the 'account_id' is the account the money is deposited on. - // needs a better way of handling. - // more uniform source/destination field names - $accountId = $sourceAccountId; - if ($what == 'deposit') { - $accountId = $destAccountId; - } - - // build data array - $data = [ - 'id' => $journal->id, - 'what' => $what, - 'description' => $request->get('description')[$journal->id], - 'account_id' => intval($accountId), - 'account_from_id' => intval($sourceAccountId), - 'account_to_id' => intval($destAccountId), - 'expense_account' => $expenseAccount, - 'revenue_account' => $revenueAccount, - 'amount' => round($request->get('amount')[$journal->id], 4), - 'user' => Auth::user()->id, - 'amount_currency_id_amount' => intval($request->get('amount_currency_id_amount_' . $journal->id)), - 'date' => new Carbon($request->get('date')[$journal->id]), - 'interest_date' => $journal->interest_date, - 'book_date' => $journal->book_date, - 'process_date' => $journal->process_date, - 'budget_id' => $budgetId, - 'category' => $category, - 'tags' => $tags, - - ]; - // call repository update function. - $repository->update($journal, $data); - - $count++; - } - } - } - Preferences::mark(); - Session::flash('success', trans('firefly.mass_edited_transactions_success', ['amount' => $count])); - - // redirect to previous URL: - return redirect(session('transactions.mass-edit.url')); - - } - - /** - * @param JournalRepositoryInterface $repository - * - * @return \Symfony\Component\HttpFoundation\Response - */ - public function reorder(JournalRepositoryInterface $repository) - { - $ids = Input::get('items'); - $date = new Carbon(Input::get('date')); - if (count($ids) > 0) { - $order = 0; - foreach ($ids as $id) { - - $journal = $repository->getWithDate($id, $date); - if ($journal) { - $journal->order = $order; - $order++; - $journal->save(); - } - } - } - Preferences::mark(); - - return Response::json([true]); - - } - /** * @param JournalRepositoryInterface $repository * @param TransactionJournal $journal @@ -468,7 +285,6 @@ class TransactionController extends Controller } - /** * @param JournalFormRequest $request * @param JournalRepositoryInterface $repository @@ -512,5 +328,4 @@ class TransactionController extends Controller return redirect(session('transactions.edit.url')); } - -} +} \ No newline at end of file diff --git a/app/Http/Controllers/Transaction/TransactionController.php b/app/Http/Controllers/Transaction/TransactionController.php new file mode 100644 index 0000000000..4aad76e3c6 --- /dev/null +++ b/app/Http/Controllers/Transaction/TransactionController.php @@ -0,0 +1,237 @@ +data; + $subTitleIcon = config('firefly.transactionIconsByWhat.' . $what); + $types = config('firefly.transactionTypesByWhat.' . $what); + $subTitle = trans('firefly.title_' . $what); + $page = intval(Input::get('page')); + $journals = $repository->getJournalsOfTypes($types, $page, $pageSize); + + $journals->setPath('transactions/' . $what); + + return view('transactions.index', compact('subTitle', 'what', 'subTitleIcon', 'journals')); + + } + + /** + * @param Collection $journals + * + * @return View + */ + public function massDelete(Collection $journals) + { + $subTitle = trans('firefly.mass_delete_journals'); + + // put previous url in session + Session::put('transactions.mass-delete.url', URL::previous()); + Session::flash('gaEventCategory', 'transactions'); + Session::flash('gaEventAction', 'mass-delete'); + + return view('transactions.mass-delete', compact('journals', 'subTitle')); + + } + + /** + * @param MassDeleteJournalRequest $request + * @param JournalRepositoryInterface $repository + * + * @return mixed + */ + public function massDestroy(MassDeleteJournalRequest $request, JournalRepositoryInterface $repository) + { + $ids = $request->get('confirm_mass_delete'); + $set = new Collection; + if (is_array($ids)) { + /** @var int $journalId */ + foreach ($ids as $journalId) { + /** @var TransactionJournal $journal */ + $journal = $repository->find($journalId); + if (!is_null($journal->id) && $journalId == $journal->id) { + $set->push($journal); + } + } + } + unset($journal); + $count = 0; + + /** @var TransactionJournal $journal */ + foreach ($set as $journal) { + $repository->delete($journal); + $count++; + } + + Preferences::mark(); + Session::flash('success', trans('firefly.mass_deleted_transactions_success', ['amount' => $count])); + + // redirect to previous URL: + return redirect(session('transactions.mass-delete.url')); + + } + + /** + * @param Collection $journals + */ + public function massEdit(Collection $journals) + { + $subTitle = trans('firefly.mass_edit_journals'); + /** @var ARI $accountRepository */ + $accountRepository = app('FireflyIII\Repositories\Account\AccountRepositoryInterface'); + $accountList = ExpandedForm::makeSelectList($accountRepository->getAccounts(['Default account', 'Asset account'])); + + // put previous url in session + Session::put('transactions.mass-edit.url', URL::previous()); + Session::flash('gaEventCategory', 'transactions'); + Session::flash('gaEventAction', 'mass-edit'); + + return view('transactions.mass-edit', compact('journals', 'subTitle', 'accountList')); + } + + /** + * + */ + public function massUpdate(MassEditJournalRequest $request, JournalRepositoryInterface $repository) + { + $journalIds = Input::get('journals'); + $count = 0; + if (is_array($journalIds)) { + foreach ($journalIds as $journalId) { + $journal = $repository->find(intval($journalId)); + if ($journal) { + // do update. + + // get optional fields: + $what = strtolower(TransactionJournal::transactionTypeStr($journal)); + $sourceAccountId = $request->get('source_account_id')[$journal->id] ?? 0; + $destAccountId = $request->get('destination_account_id')[$journal->id] ?? 0; + $expenseAccount = $request->get('expense_account')[$journal->id] ?? ''; + $revenueAccount = $request->get('revenue_account')[$journal->id] ?? ''; + $budgetId = $journal->budgets->first() ? $journal->budgets->first()->id : 0; + $category = $journal->categories->first() ? $journal->categories->first()->name : ''; + $tags = $journal->tags->pluck('tag')->toArray(); + + // for a deposit, the 'account_id' is the account the money is deposited on. + // needs a better way of handling. + // more uniform source/destination field names + $accountId = $sourceAccountId; + if ($what == 'deposit') { + $accountId = $destAccountId; + } + + // build data array + $data = [ + 'id' => $journal->id, + 'what' => $what, + 'description' => $request->get('description')[$journal->id], + 'account_id' => intval($accountId), + 'account_from_id' => intval($sourceAccountId), + 'account_to_id' => intval($destAccountId), + 'expense_account' => $expenseAccount, + 'revenue_account' => $revenueAccount, + 'amount' => round($request->get('amount')[$journal->id], 4), + 'user' => Auth::user()->id, + 'amount_currency_id_amount' => intval($request->get('amount_currency_id_amount_' . $journal->id)), + 'date' => new Carbon($request->get('date')[$journal->id]), + 'interest_date' => $journal->interest_date, + 'book_date' => $journal->book_date, + 'process_date' => $journal->process_date, + 'budget_id' => $budgetId, + 'category' => $category, + 'tags' => $tags, + + ]; + // call repository update function. + $repository->update($journal, $data); + + $count++; + } + } + } + Preferences::mark(); + Session::flash('success', trans('firefly.mass_edited_transactions_success', ['amount' => $count])); + + // redirect to previous URL: + return redirect(session('transactions.mass-edit.url')); + + } + + /** + * @param JournalRepositoryInterface $repository + * + * @return \Symfony\Component\HttpFoundation\Response + */ + public function reorder(JournalRepositoryInterface $repository) + { + $ids = Input::get('items'); + $date = new Carbon(Input::get('date')); + if (count($ids) > 0) { + $order = 0; + foreach ($ids as $id) { + + $journal = $repository->getWithDate($id, $date); + if ($journal) { + $journal->order = $order; + $order++; + $journal->save(); + } + } + } + Preferences::mark(); + + return Response::json([true]); + + } + + +} diff --git a/app/Http/routes.php b/app/Http/routes.php index d811da5f7f..1c87892279 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -367,28 +367,28 @@ Route::group( /** * Transaction Controller */ - Route::get('/transactions/{what}', ['uses' => 'TransactionController@index', 'as' => 'transactions.index'])->where( + Route::get('/transactions/{what}', ['uses' => 'Transaction\TransactionController@index', 'as' => 'transactions.index'])->where( ['what' => 'expenses|revenue|withdrawal|deposit|transfer|transfers'] ); - Route::get('/transactions/create/{what}', ['uses' => 'TransactionController@create', 'as' => 'transactions.create'])->where( + Route::get('/transactions/create/{what}', ['uses' => 'Transaction\CrudController@create', 'as' => 'transactions.create'])->where( ['what' => 'expenses|revenue|withdrawal|deposit|transfer|transfers'] ); - Route::get('/transaction/edit/{tj}', ['uses' => 'TransactionController@edit', 'as' => 'transactions.edit']); - Route::get('/transaction/delete/{tj}', ['uses' => 'TransactionController@delete', 'as' => 'transactions.delete']); - Route::get('/transaction/show/{tj}', ['uses' => 'TransactionController@show', 'as' => 'transactions.show']); + Route::get('/transaction/edit/{tj}', ['uses' => 'Transaction\CrudController@edit', 'as' => 'transactions.edit']); + Route::get('/transaction/delete/{tj}', ['uses' => 'Transaction\CrudController@delete', 'as' => 'transactions.delete']); + Route::get('/transaction/show/{tj}', ['uses' => 'Transaction\CrudController@show', 'as' => 'transactions.show']); // transaction controller: - Route::post('/transactions/store/{what}', ['uses' => 'TransactionController@store', 'as' => 'transactions.store'])->where( + Route::post('/transactions/store/{what}', ['uses' => 'Transaction\CrudController@store', 'as' => 'transactions.store'])->where( ['what' => 'expenses|revenue|withdrawal|deposit|transfer|transfers'] ); - Route::post('/transaction/update/{tj}', ['uses' => 'TransactionController@update', 'as' => 'transactions.update']); - Route::post('/transaction/destroy/{tj}', ['uses' => 'TransactionController@destroy', 'as' => 'transactions.destroy']); - Route::post('/transaction/reorder', ['uses' => 'TransactionController@reorder', 'as' => 'transactions.reorder']); + Route::post('/transaction/update/{tj}', ['uses' => 'Transaction\CrudController@update', 'as' => 'transactions.update']); + Route::post('/transaction/destroy/{tj}', ['uses' => 'Transaction\CrudController@destroy', 'as' => 'transactions.destroy']); + Route::post('/transaction/reorder', ['uses' => 'Transaction\TransactionController@reorder', 'as' => 'transactions.reorder']); // mass edit and mass delete. - Route::get('/transactions/mass-edit/{journalList}', ['uses' => 'TransactionController@massEdit', 'as' => 'transactions.mass-edit']); - Route::get('/transactions/mass-delete/{journalList}', ['uses' => 'TransactionController@massDelete', 'as' => 'transactions.mass-delete']); - Route::post('/transactions/mass-update', ['uses' => 'TransactionController@massUpdate', 'as' => 'transactions.mass-update']); - Route::post('/transactions/mass-destroy', ['uses' => 'TransactionController@massDestroy', 'as' => 'transactions.mass-destroy']); + Route::get('/transactions/mass-edit/{journalList}', ['uses' => 'Transaction\TransactionController@massEdit', 'as' => 'transactions.mass-edit']); + Route::get('/transactions/mass-delete/{journalList}', ['uses' => 'Transaction\TransactionController@massDelete', 'as' => 'transactions.mass-delete']); + Route::post('/transactions/mass-update', ['uses' => 'Transaction\TransactionController@massUpdate', 'as' => 'transactions.mass-update']); + Route::post('/transactions/mass-destroy', ['uses' => 'Transaction\TransactionController@massDestroy', 'as' => 'transactions.mass-destroy']); /** * POPUP Controllers