_budgets = $budgets; $this->_repository = $repository; } /** * @return $this|\Illuminate\View\View */ public function create() { $periods = \Config::get('firefly.periods_to_text'); return View::make('budgets.create')->with('periods', $periods)->with('title', 'Create a new budget'); } /** * @param Budget $budget * * @return $this */ public function delete(Budget $budget) { return View::make('budgets.delete')->with('budget', $budget) ->with('title', 'Delete budget "' . $budget->name . '"'); } /** * @param Budget $budget * * @return \Illuminate\Http\RedirectResponse */ public function destroy(Budget $budget) { // remove budget Event::fire('budgets.destroy', [$budget]); // just before deletion. $this->_repository->destroy($budget); Session::flash('success', 'The budget was deleted.'); // redirect: if (Input::get('from') == 'date') { return Redirect::route('budgets.index'); } return Redirect::route('budgets.index.budget'); } /** * @param Budget $budget * * @return $this */ public function edit(Budget $budget) { return View::make('budgets.edit')->with('budget', $budget) ->with('title', 'Edit budget "' . $budget->name . '"'); } /** * @return $this|\Illuminate\View\View */ public function indexByBudget() { $budgets = $this->_repository->get(); return View::make('budgets.indexByBudget')->with('budgets', $budgets)->with('today', new Carbon) ->with('title', 'All your budgets grouped by budget'); } /** * @return $this */ public function indexByDate() { // get a list of dates by getting all repetitions: $set = $this->_repository->get(); $budgets = $this->_budgets->organizeByDate($set); return View::make('budgets.indexByDate')->with('budgets', $budgets) ->with('title', 'All your budgets grouped by date'); } /** * Three use cases for this view: * * - Show everything. * - Show a specific repetition. * - Show everything shows NO repetition. * * @param Budget $budget * @param LimitRepetition $repetition * * @return int */ public function show(Budget $budget, \LimitRepetition $repetition = null) { $useSessionDates = Input::get('useSession') == 'true' ? true : false; $view = null; $title = null; \Log::debug('Is envelope true? ' . (Input::get('noenvelope') == 'true')); switch (true) { case (!is_null($repetition)): $data = $this->_budgets->organizeRepetition($repetition); $view = 1; $title = $budget->name . ', ' . $repetition->periodShow() . ', ' . mf($repetition->limit->amount, false); break; case (Input::get('noenvelope') == 'true'): $data = $this->_budgets->outsideRepetitions($budget); $view = 2; $title = $budget->name . ', transactions outside an envelope'; break; default: $data = $this->_budgets->organizeRepetitions($budget, $useSessionDates); $view = $useSessionDates ? 3 : 4; $title = $useSessionDates ? $budget->name . ' in session period' : $budget->name; break; } return View::make('budgets.show') ->with('budget', $budget) ->with('repetitions', $data) ->with('view', $view) ->with('highlight', Input::get('highlight')) ->with('useSessionDates', $useSessionDates) ->with('title', $title); } /** * @return \Illuminate\Http\RedirectResponse */ public function store() { $budget = $this->_repository->store(Input::all()); if ($budget->validate()) { Event::fire('budgets.store', [$budget]); Session::flash('success', 'Budget created!'); if (Input::get('create') == '1') { return Redirect::route('budgets.create', ['from' => Input::get('from')]); } if (Input::get('from') == 'date') { return Redirect::route('budgets.index'); } else { return Redirect::route('budgets.index.budget'); } } else { Session::flash('error', 'Could not save the new budget'); return Redirect::route('budgets.create')->withInput()->withErrors($budget->errors()); } } /** * @param Budget $budget * * @return $this|\Illuminate\Http\RedirectResponse */ public function update(Budget $budget) { $budget = $this->_repository->update($budget, Input::all()); if ($budget->validate()) { Event::fire('budgets.update', [$budget]); Session::flash('success', 'Budget "' . $budget->name . '" updated.'); if (Input::get('from') == 'date') { return Redirect::route('budgets.index'); } else { return Redirect::route('budgets.index.budget'); } } else { Session::flash('error', 'Could not update budget: ' . $budget->errors()->first()); return Redirect::route('budgets.edit', $budget->id)->withInput()->withErrors($budget->errors()); } } }