From bfa7ee90f451417f27f01ba9f58f2fb89ec9e4c8 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 1 May 2016 06:59:08 +0200 Subject: [PATCH] Reverse stuff --- .../Transaction/TransactionController.php | 237 ------------------ ...ntroller.php => TransactionController.php} | 223 +++++++++++++++- app/Http/routes.php | 26 +- 3 files changed, 223 insertions(+), 263 deletions(-) delete mode 100644 app/Http/Controllers/Transaction/TransactionController.php rename app/Http/Controllers/{Transaction/CrudController.php => TransactionController.php} (61%) diff --git a/app/Http/Controllers/Transaction/TransactionController.php b/app/Http/Controllers/Transaction/TransactionController.php deleted file mode 100644 index 4aad76e3c6..0000000000 --- a/app/Http/Controllers/Transaction/TransactionController.php +++ /dev/null @@ -1,237 +0,0 @@ -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/Controllers/Transaction/CrudController.php b/app/Http/Controllers/TransactionController.php similarity index 61% rename from app/Http/Controllers/Transaction/CrudController.php rename to app/Http/Controllers/TransactionController.php index 987c810cd5..b4b62b445d 100644 --- a/app/Http/Controllers/Transaction/CrudController.php +++ b/app/Http/Controllers/TransactionController.php @@ -1,21 +1,24 @@ getAccounts(['Default account', 'Asset account'])); $budgetList = ExpandedForm::makeSelectListWithEmpty($budgetRepository->getActiveBudgets()); @@ -201,6 +203,201 @@ class CrudController extends Controller ); } + /** + * @param JournalRepositoryInterface $repository + * @param $what + * + * @return \Illuminate\View\View + */ + public function index(JournalRepositoryInterface $repository, string $what) + { + $pageSize = Preferences::get('transactionPageSize', 50)->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 + * + * @return View + */ + 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')); + } + + /** + * @param MassEditJournalRequest $request + * @param JournalRepositoryInterface $repository + * + * @return mixed + */ + 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 @@ -267,7 +464,6 @@ class CrudController extends Controller Session::flash('info', $att->getMessages()->get('attachments')); } - Log::debug('Triggered TransactionJournalStored with transaction journal #' . $journal->id . ' and piggy #' . intval($request->get('piggy_bank_id'))); event(new TransactionJournalStored($journal, intval($request->get('piggy_bank_id')))); Session::flash('success', strval(trans('firefly.stored_journal', ['description' => e($journal->description)]))); @@ -285,6 +481,7 @@ class CrudController extends Controller } + /** * @param JournalFormRequest $request * @param JournalRepositoryInterface $repository @@ -328,4 +525,4 @@ class CrudController extends Controller return redirect(session('transactions.edit.url')); } -} \ No newline at end of file +} diff --git a/app/Http/routes.php b/app/Http/routes.php index 1c87892279..d811da5f7f 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -367,28 +367,28 @@ Route::group( /** * Transaction Controller */ - Route::get('/transactions/{what}', ['uses' => 'Transaction\TransactionController@index', 'as' => 'transactions.index'])->where( + Route::get('/transactions/{what}', ['uses' => 'TransactionController@index', 'as' => 'transactions.index'])->where( ['what' => 'expenses|revenue|withdrawal|deposit|transfer|transfers'] ); - Route::get('/transactions/create/{what}', ['uses' => 'Transaction\CrudController@create', 'as' => 'transactions.create'])->where( + Route::get('/transactions/create/{what}', ['uses' => 'TransactionController@create', 'as' => 'transactions.create'])->where( ['what' => 'expenses|revenue|withdrawal|deposit|transfer|transfers'] ); - 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']); + 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']); // transaction controller: - Route::post('/transactions/store/{what}', ['uses' => 'Transaction\CrudController@store', 'as' => 'transactions.store'])->where( + Route::post('/transactions/store/{what}', ['uses' => 'TransactionController@store', 'as' => 'transactions.store'])->where( ['what' => 'expenses|revenue|withdrawal|deposit|transfer|transfers'] ); - 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']); + 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']); // mass edit and mass delete. - 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']); + 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']); /** * POPUP Controllers