diff --git a/app/controllers/BudgetController.php b/app/controllers/BudgetController.php index 53ae58aef2..5a42967adc 100644 --- a/app/controllers/BudgetController.php +++ b/app/controllers/BudgetController.php @@ -42,7 +42,7 @@ class BudgetController extends BaseController $date = Session::get('start', Carbon::now()->startOfMonth()); $limitRepetition = $this->_repository->updateLimitAmount($budget, $date, $amount); - return Response::json(['name' => $budget->name, 'repetition' => $limitRepetition->id]); + return Response::json(['name' => $budget->name, 'repetition' => $limitRepetition ? $limitRepetition->id : 0]); } diff --git a/app/controllers/GoogleChartController.php b/app/controllers/GoogleChartController.php index fb21a0b203..efafc28d6b 100644 --- a/app/controllers/GoogleChartController.php +++ b/app/controllers/GoogleChartController.php @@ -42,6 +42,7 @@ class GoogleChartController extends BaseController { $this->_chart->addColumn('Day of month', 'date'); $this->_chart->addColumn('Balance for ' . $account->name, 'number'); + $this->_chart->addCertainty(1); $start = $this->_start; $end = $this->_end; @@ -61,7 +62,7 @@ class GoogleChartController extends BaseController $current = clone $start; while ($end >= $current) { - $this->_chart->addRow(clone $current, Steam::balance($account, $current)); + $this->_chart->addRow(clone $current, Steam::balance($account, $current), false); $current->addDay(); } @@ -86,17 +87,23 @@ class GoogleChartController extends BaseController $acct = App::make('FireflyIII\Database\Account\Account'); $accounts = count($pref->data) > 0 ? $acct->getByIds($pref->data) : $acct->getAccountsByType(['Default account', 'Asset account']); + $index = 1; /** @var Account $account */ foreach ($accounts as $account) { $this->_chart->addColumn('Balance for ' . $account->name, 'number'); + $this->_chart->addCertainty($index); + $index++; } $current = clone $this->_start; $current->subDay(); - + $today = Carbon::now(); while ($this->_end >= $current) { - $row = [clone $current]; + $row = [clone $current]; + $certain = $current < $today; foreach ($accounts as $account) { + $row[] = Steam::balance($account, $current); + $row[] = $certain; } $this->_chart->addRowArray($row); $current->addDay(); @@ -108,6 +115,49 @@ class GoogleChartController extends BaseController } + /** + * @param int $year + * + * @return $this|\Illuminate\Http\JsonResponse + */ + public function allBudgetsAndSpending($year) + { + try { + new Carbon('01-01-' . $year); + } catch (Exception $e) { + return View::make('error')->with('message', 'Invalid year.'); + } + /** @var \FireflyIII\Database\Budget\Budget $budgetRepository */ + $budgetRepository = App::make('FireflyIII\Database\Budget\Budget'); + $budgets = $budgetRepository->get(); + $budgets->sortBy('name'); + $this->_chart->addColumn('Month', 'date'); + foreach ($budgets as $budget) { + $this->_chart->addColumn($budget->name, 'number'); + } + $start = Carbon::createFromDate(intval($year), 1, 1); + $end = clone $start; + $end->endOfYear(); + + + while ($start <= $end) { + $row = [clone $start]; + foreach ($budgets as $budget) { + $spent = $budgetRepository->spentInMonth($budget, $start); + //$repetition = $budgetRepository->repetitionOnStartingOnDate($budget, $start); + $row[] = $spent; + } + $this->_chart->addRowArray($row); + $start->addMonth(); + } + + + $this->_chart->generate(); + + return Response::json($this->_chart->getData()); + + } + /** * @return \Illuminate\Http\JsonResponse */ diff --git a/app/controllers/HomeController.php b/app/controllers/HomeController.php index 2f068e50db..64169899b9 100644 --- a/app/controllers/HomeController.php +++ b/app/controllers/HomeController.php @@ -77,8 +77,11 @@ class HomeController extends BaseController $preferences->set('viewRange', $range); Session::forget('range'); } - - return Redirect::back(); + if (isset($_SERVER['HTTP_REFERER']) && (!strpos($_SERVER['HTTP_REFERER'], Config::get('app.url')) === false)) { + return Redirect::back(); + } else { + return Redirect::intended(); + } } /** @@ -87,7 +90,11 @@ class HomeController extends BaseController public function sessionNext() { Navigation::next(); - return Redirect::back(); + if (isset($_SERVER['HTTP_REFERER']) && (!strpos($_SERVER['HTTP_REFERER'], Config::get('app.url')) === false)) { + return Redirect::back(); + } else { + return Redirect::intended(); + } } @@ -98,6 +105,10 @@ class HomeController extends BaseController { Navigation::prev(); - return Redirect::back(); + if (isset($_SERVER['HTTP_REFERER']) && (!strpos($_SERVER['HTTP_REFERER'], Config::get('app.url')) === false)) { + return Redirect::back(); + } else { + return Redirect::intended(); + } } } diff --git a/app/controllers/ReportController.php b/app/controllers/ReportController.php index efec329d56..ed4821c449 100644 --- a/app/controllers/ReportController.php +++ b/app/controllers/ReportController.php @@ -126,11 +126,10 @@ class ReportController extends BaseController $balances = $this->_repository->yearBalanceReport($date); $groupedIncomes = $this->_repository->revenueGroupedByAccount($date, $end, 15); $groupedExpenses = $this->_repository->expensesGroupedByAccount($date, $end, 15); - $budgets = \Auth::user()->budgets()->get(); return View::make( 'reports.year', - compact('date', 'groupedIncomes', 'budgets', 'groupedExpenses', 'year', 'balances', 'title', 'subTitle', 'subTitleIcon', 'mainTitleIcon') + compact('date', 'groupedIncomes', 'groupedExpenses', 'year', 'balances', 'title', 'subTitle', 'subTitleIcon', 'mainTitleIcon') ); } diff --git a/app/views/reports/year.blade.php b/app/views/reports/year.blade.php index d4b30af4a0..29ef5bc4f2 100644 --- a/app/views/reports/year.blade.php +++ b/app/views/reports/year.blade.php @@ -133,20 +133,18 @@ -@foreach($budgets as $budget)