From 184e9bdaf6e0ec02afde7defce7c216560215a1a Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 22 Feb 2015 08:38:46 +0100 Subject: [PATCH] Fixed even more tests! --- app/Http/Controllers/AccountController.php | 6 +-- .../Controllers/GoogleChartController.php | 40 +++++++++++++++++++ app/Http/routes.php | 14 +++---- app/Models/TransactionJournal.php | 16 ++++++++ .../Account/AccountRepository.php | 4 +- resources/views/list/journals-full.blade.php | 6 +-- 6 files changed, 71 insertions(+), 15 deletions(-) diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index 36f5470003..af6397f60e 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -8,10 +8,10 @@ use FireflyIII\Http\Requests; use FireflyIII\Http\Requests\AccountFormRequest; use FireflyIII\Models\Account; use FireflyIII\Repositories\Account\AccountRepositoryInterface; +use Input; use Redirect; use Session; use View; -use Input; /** * Class AccountController @@ -128,10 +128,10 @@ class AccountController extends Controller { /** @var \FireflyIII\Repositories\Account\AccountRepositoryInterface $repository */ $repository = App::make('FireflyIII\Repositories\Account\AccountRepositoryInterface'); - $page = intval(Input::get('page')) == 0 ? 1 : intval(Input::get('page')); + $page = intval(Input::get('page')) == 0 ? 1 : intval(Input::get('page')); $subTitleIcon = Config::get('firefly.subTitlesByIdentifier.' . $account->accountType->type); $what = Config::get('firefly.shortNamesByFullName.' . $account->accountType->type); - $journals = $repository->getJournals($account, $range); + $journals = $repository->getJournals($account, $page, $range); $subTitle = 'Details for ' . strtolower(e($account->accountType->type)) . ' "' . e($account->name) . '"'; return View::make('accounts.show', compact('account', 'what', 'range', 'subTitleIcon', 'journals', 'subTitle')); diff --git a/app/Http/Controllers/GoogleChartController.php b/app/Http/Controllers/GoogleChartController.php index c5fa91bdab..3391af442c 100644 --- a/app/Http/Controllers/GoogleChartController.php +++ b/app/Http/Controllers/GoogleChartController.php @@ -233,5 +233,45 @@ class GoogleChartController extends Controller return Response::json($chart->getData()); } + /** + * @param Account $account + * @param string $view + * + * @return \Illuminate\Http\JsonResponse + */ + public function accountBalanceChart(Account $account, $view = 'session', GChart $chart) + { + $chart->addColumn('Day of month', 'date'); + $chart->addColumn('Balance for ' . $account->name, 'number'); + $chart->addCertainty(1); + + $start = Session::get('start', Carbon::now()->startOfMonth()); + $end = Session::get('end', Carbon::now()->endOfMonth()); + $count = $account->transactions()->count(); + + if ($view == 'all' && $count > 0) { + $first = $account->transactions()->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')->orderBy( + 'date', 'ASC' + )->first(['transaction_journals.date']); + $last = $account->transactions()->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')->orderBy( + 'date', 'DESC' + )->first(['transaction_journals.date']); + $start = new Carbon($first->date); + $end = new Carbon($last->date); + } + + $current = clone $start; + + while ($end >= $current) { + $chart->addRow(clone $current, Steam::balance($account, $current), false); + $current->addDay(); + } + + + $chart->generate(); + + return Response::json($chart->getData()); + } + } diff --git a/app/Http/routes.php b/app/Http/routes.php index a4df3e1317..ef3ed610f6 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -50,8 +50,8 @@ Route::group( //Route::get('/bills/rescan/{bill}', ['uses' => 'BillController@rescan', 'as' => 'bills.rescan']); # rescan for matching. Route::get('/bills/create', ['uses' => 'BillController@create', 'as' => 'bills.create']); //Route::get('/bills/edit/{bill}', ['uses' => 'BillController@edit', 'as' => 'bills.edit']); - //Route::get('/bills/delete/{bill}', ['uses' => 'BillController@delete', 'as' => 'bills.delete']); - //Route::get('/bills/show/{bill}', ['uses' => 'BillController@show', 'as' => 'bills.show']); +// Route::get('/bills/delete/{bill}', ['uses' => 'BillController@delete', 'as' => 'bills.delete']); + Route::get('/bills/show/{bill}', ['uses' => 'BillController@show', 'as' => 'bills.show']); /** * Budget Controller @@ -61,7 +61,7 @@ Route::group( //Route::get('/budgets/create', ['uses' => 'BudgetController@create', 'as' => 'budgets.create']); //Route::get('/budgets/edit/{budget}', ['uses' => 'BudgetController@edit', 'as' => 'budgets.edit']); //Route::get('/budgets/delete/{budget}', ['uses' => 'BudgetController@delete', 'as' => 'budgets.delete']); - //Route::get('/budgets/show/{budget}/{limitrepetition?}', ['uses' => 'BudgetController@show', 'as' => 'budgets.show']); + Route::get('/budgets/show/{budget}/{limitrepetition?}', ['uses' => 'BudgetController@show', 'as' => 'budgets.show']); //Route::get('/budgets/list/noBudget', ['uses' => 'BudgetController@noBudget', 'as' => 'budgets.noBudget']); /** @@ -71,7 +71,7 @@ Route::group( //Route::get('/categories/create', ['uses' => 'CategoryController@create', 'as' => 'categories.create']); //Route::get('/categories/edit/{category}', ['uses' => 'CategoryController@edit', 'as' => 'categories.edit']); //Route::get('/categories/delete/{category}', ['uses' => 'CategoryController@delete', 'as' => 'categories.delete']); - //Route::get('/categories/show/{category}', ['uses' => 'CategoryController@show', 'as' => 'categories.show']); + Route::get('/categories/show/{category}', ['uses' => 'CategoryController@show', 'as' => 'categories.show']); //Route::get('/categories/list/noCategory', ['uses' => 'CategoryController@noCategory', 'as' => 'categories.noCategory']); /** @@ -90,7 +90,7 @@ Route::group( Route::get('/chart/home/budgets', ['uses' => 'GoogleChartController@allBudgetsHomeChart']); Route::get('/chart/home/categories', ['uses' => 'GoogleChartController@allCategoriesHomeChart']); Route::get('/chart/home/bills', ['uses' => 'GoogleChartController@billsOverview']); - //Route::get('/chart/account/{account}/{view?}', ['uses' => 'GoogleChartController@accountBalanceChart']); + Route::get('/chart/account/{account}/{view?}', ['uses' => 'GoogleChartController@accountBalanceChart']); //Route::get('/chart/reports/income-expenses/{year}', ['uses' => 'GoogleChartController@yearInExp']); //Route::get('/chart/reports/income-expenses-sum/{year}', ['uses' => 'GoogleChartController@yearInExpSum']); //Route::get('/chart/bills/{bill}', ['uses' => 'GoogleChartController@billOverview']); @@ -150,8 +150,8 @@ Route::group( 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' => 'TransactionController@edit', 'as' => 'transactions.edit']); - //Route::get('/transaction/delete/{tj}', ['uses' => 'TransactionController@delete', 'as' => 'transactions.delete']); + 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/relate/{tj}', ['uses' => 'TransactionController@relate', 'as' => 'transactions.relate']); //Route::post('/transactions/relatedSearch/{tj}', ['uses' => 'TransactionController@relatedSearch', 'as' => 'transactions.relatedSearch']); diff --git a/app/Models/TransactionJournal.php b/app/Models/TransactionJournal.php index ab2cf2abd9..6895328107 100644 --- a/app/Models/TransactionJournal.php +++ b/app/Models/TransactionJournal.php @@ -4,6 +4,7 @@ use Carbon\Carbon; use Crypt; use Illuminate\Database\Eloquent\Builder as EloquentBuilder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; use Watson\Validating\ValidatingTrait; @@ -172,6 +173,21 @@ class TransactionJournal extends Model return $this->belongsToMany('FireflyIII\Models\TransactionGroup'); } + /** + * Automatically includes the 'with' parameters to get relevant related + * objects. + * + * @param EloquentBuilder $query + */ + public function scopeWithRelevantData(EloquentBuilder $query) + { + $query->with( + ['transactions' => function (HasMany $q) { + $q->orderBy('amount', 'ASC'); + }, 'transactiontype', 'transactioncurrency','budgets', 'categories', 'transactions.account.accounttype', 'bill', 'budgets', 'categories'] + ); + } + /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ diff --git a/app/Repositories/Account/AccountRepository.php b/app/Repositories/Account/AccountRepository.php index 1b89f3d8a9..309b41a694 100644 --- a/app/Repositories/Account/AccountRepository.php +++ b/app/Repositories/Account/AccountRepository.php @@ -13,7 +13,6 @@ use FireflyIII\Models\Transaction; use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionType; use Illuminate\Pagination\LengthAwarePaginator; -use Illuminate\Pagination\Paginator; use Log; use Session; @@ -50,7 +49,7 @@ class AccountRepository implements AccountRepositoryInterface $items = []; $query = Auth::user() ->transactionJournals() - //->withRelevantData() + ->withRelevantData() ->leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id') ->where('transactions.account_id', $account->id) ->orderBy('date', 'DESC'); @@ -67,6 +66,7 @@ class AccountRepository implements AccountRepositoryInterface } $paginator = new LengthAwarePaginator($items, $count, 50, $page); + return $paginator; //return Paginator::make($items, $count, 50); diff --git a/resources/views/list/journals-full.blade.php b/resources/views/list/journals-full.blade.php index 4979b6a428..b9c4908852 100644 --- a/resources/views/list/journals-full.blade.php +++ b/resources/views/list/journals-full.blade.php @@ -58,13 +58,13 @@ @if($journal->transactiontype->type == 'Withdrawal') - {{Amount::formatTransaction($journal->transactions[1],false)}} + {{Amount::formatTransaction($journal->transactions[0],false)}} @endif @if($journal->transactiontype->type == 'Deposit') - {{Amount::formatTransaction($journal->transactions[1],false)}} + {{Amount::formatTransaction($journal->transactions[1],false)}} @endif @if($journal->transactiontype->type == 'Transfer') - {{Amount::formatTransaction($journal->transactions[1],false)}} + {{Amount::formatTransaction($journal->transactions[1],false)}} @endif