Routes and views for transactions without a budget / category [skip ci]

This commit is contained in:
James Cole 2015-01-02 18:48:06 +01:00
parent da0c0742bf
commit ae16a2b14f
10 changed files with 144 additions and 7 deletions

View File

@ -124,6 +124,19 @@ class BudgetController extends BaseController
return View::make('budgets.index', compact('budgetMaximum', 'budgets', 'spent', 'spentPCT', 'overspent', 'amount')); return View::make('budgets.index', compact('budgetMaximum', 'budgets', 'spent', 'spentPCT', 'overspent', 'amount'));
} }
/**
* @return \Illuminate\View\View
*/
public function noBudget()
{
$start = \Session::get('start', Carbon::now()->startOfMonth());
$end = \Session::get('end', Carbon::now()->startOfMonth());
$list = $this->_repository->journalsNoBudget($start, $end);
$subTitle = 'Transactions without a budget in ' . $start->format('F Y');
return View::make('budgets.noBudget', compact('list', 'subTitle'));
}
/** /**
* @return \Illuminate\Http\RedirectResponse * @return \Illuminate\Http\RedirectResponse
*/ */
@ -189,7 +202,6 @@ class BudgetController extends BaseController
return Redirect::route('budgets.create')->withInput(); return Redirect::route('budgets.create')->withInput();
} }
/** /**
* @param Budget $budget * @param Budget $budget
* *

View File

@ -1,4 +1,5 @@
<?php <?php
use Carbon\Carbon;
use FireflyIII\Database\Category\Category as CategoryRepository; use FireflyIII\Database\Category\Category as CategoryRepository;
use FireflyIII\Exception\FireflyException; use FireflyIII\Exception\FireflyException;
@ -34,6 +35,19 @@ class CategoryController extends BaseController
return View::make('categories.create')->with('subTitle', 'Create a new category'); return View::make('categories.create')->with('subTitle', 'Create a new category');
} }
/**
* @return \Illuminate\View\View
*/
public function noCategory()
{
$start = \Session::get('start', Carbon::now()->startOfMonth());
$end = \Session::get('end', Carbon::now()->startOfMonth());
$list = $this->_repository->journalsNoCategory($start, $end);
$subTitle = 'Transactions without a category in ' . $start->format('F Y');
return View::make('categories.noCategory', compact('list', 'subTitle'));
}
/** /**
* @param Category $category * @param Category $category
* *

View File

@ -155,7 +155,7 @@ class GoogleChartController extends BaseController
} }
} }
$noBudgetSet = $bdt->transactionsWithoutBudgetInDateRange($this->_start, $this->_end); $noBudgetSet = $bdt->expenseNoBudget($this->_start, $this->_end);
$sum = $noBudgetSet->sum('amount') * -1; $sum = $noBudgetSet->sum('amount') * -1;
$this->_chart->addRow('No budget', 0, $sum); $this->_chart->addRow('No budget', 0, $sum);
$this->_chart->generate(); $this->_chart->generate();

View File

@ -10,7 +10,7 @@ use FireflyIII\Exception\NotImplementedException;
use Illuminate\Database\Eloquent\Model as Eloquent; use Illuminate\Database\Eloquent\Model as Eloquent;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\MessageBag; use Illuminate\Support\MessageBag;
use Illuminate\Database\Query\Builder; use Illuminate\Database\Query\Builder as QueryBuilder;
/** /**
* Class Budget * Class Budget
@ -258,7 +258,7 @@ class Budget implements CUDInterface, CommonDatabaseCallsInterface, BudgetInterf
* *
* @return Collection * @return Collection
*/ */
public function transactionsWithoutBudgetInDateRange(Carbon $start, Carbon $end) public function expenseNoBudget(Carbon $start, Carbon $end)
{ {
// Add expenses that have no budget: // Add expenses that have no budget:
return $this->getUser() return $this->getUser()
@ -269,8 +269,8 @@ class Budget implements CUDInterface, CommonDatabaseCallsInterface, BudgetInterf
->select('transaction_journals.id') ->select('transaction_journals.id')
->from('transaction_journals') ->from('transaction_journals')
->leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id') ->leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id')
->where('transaction_journals.date', '>=', $start->format('Y-m-d')) ->where('transaction_journals.date', '>=', $start->format('Y-m-d 00:00:00'))
->where('transaction_journals.date', '<=', $end->format('Y-m-d')); ->where('transaction_journals.date', '<=', $end->format('Y-m-d 00:00:00'));
} }
) )
->before($end) ->before($end)
@ -280,6 +280,26 @@ class Budget implements CUDInterface, CommonDatabaseCallsInterface, BudgetInterf
->get(); ->get();
} }
/**
* @param Carbon $start
* @param Carbon $end
*
* @return Collection
*/
public function journalsNoBudget(Carbon $start, Carbon $end)
{
$set = $this->getUser()
->transactionjournals()
->leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id')
->whereNull('budget_transaction_journal.id')
->before($end)
->after($start)
->orderBy('transaction_journals.date')
->get(['transaction_journals.*']);
return $set;
}
/** /**
* @param \Budget $budget * @param \Budget $budget
* @param Carbon $date * @param Carbon $date

View File

@ -26,6 +26,15 @@ interface BudgetInterface
* *
* @return Collection * @return Collection
*/ */
public function transactionsWithoutBudgetInDateRange(Carbon $start, Carbon $end); public function expenseNoBudget(Carbon $start, Carbon $end);
/**
* @param Carbon $start
* @param Carbon $end
*
* @return Collection
*/
public function journalsNoBudget(Carbon $start, Carbon $end);
} }

View File

@ -175,6 +175,26 @@ class Category implements CUDInterface, CommonDatabaseCallsInterface
} }
/**
* @param Carbon $start
* @param Carbon $end
*
* @return Collection
*/
public function journalsNoCategory(Carbon $start, Carbon $end)
{
$set = $this->getUser()
->transactionjournals()
->leftJoin('category_transaction_journal', 'category_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id')
->whereNull('category_transaction_journal.id')
->before($end)
->after($start)
->orderBy('transaction_journals.date')
->get(['transaction_journals.*']);
return $set;
}
/** /**
* @param \Category $category * @param \Category $category
* @param Carbon $date * @param Carbon $date

View File

@ -196,6 +196,7 @@ Route::group(
Route::get('/budgets/edit/{budget}', ['uses' => 'BudgetController@edit', 'as' => 'budgets.edit']); 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/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']);
// category controller: // category controller:
Route::get('/categories', ['uses' => 'CategoryController@index', 'as' => 'categories.index']); Route::get('/categories', ['uses' => 'CategoryController@index', 'as' => 'categories.index']);
@ -203,6 +204,7 @@ Route::group(
Route::get('/categories/edit/{category}', ['uses' => 'CategoryController@edit', 'as' => 'categories.edit']); 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/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.noBudget']);
// currency controller // currency controller
Route::get('/currency', ['uses' => 'CurrencyController@index', 'as' => 'currency.index']); Route::get('/currency', ['uses' => 'CurrencyController@index', 'as' => 'currency.index']);

View File

@ -51,6 +51,18 @@
<div class="col-lg-3 col-sm-4 col-md-4"> <div class="col-lg-3 col-sm-4 col-md-4">
<!-- time based navigation --> <!-- time based navigation -->
@include('partials.date_nav') @include('partials.date_nav')
<div class="panel panel-default">
<div class="panel-heading">
Transactions without a budget
</div>
<div class="panel-body">
<p>
<a href="{{route('budgets.noBudget')}}">Transactions without a budget in
{{\Session::get('start', \Carbon\Carbon::now()->startOfMonth())->format('F Y')}}.</a>
</p>
</div>
</div>
</div> </div>
</div> </div>

View File

@ -0,0 +1,24 @@
@extends('layouts.default')
@section('content')
{{ Breadcrumbs::renderIfExists(Route::getCurrentRoute()->getName()) }}
<div class="row">
<div class="col-lg-4 col-md-4 col-sm-12 ">
<!-- time based navigation -->
@include('partials.date_nav')
</div>
</div>
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12">
<div class="panel panel-default">
<div class="panel-heading">
{{{$subTitle}}}
</div>
<div class="panel-body">
@include('list.journals-full',['journals' => $list])
</div>
</div>
</div>
</div>
@stop

View File

@ -0,0 +1,24 @@
@extends('layouts.default')
@section('content')
{{ Breadcrumbs::renderIfExists(Route::getCurrentRoute()->getName()) }}
<div class="row">
<div class="col-lg-4 col-md-4 col-sm-12 ">
<!-- time based navigation -->
@include('partials.date_nav')
</div>
</div>
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12">
<div class="panel panel-default">
<div class="panel-heading">
{{{$subTitle}}}
</div>
<div class="panel-body">
@include('list.journals-full',['journals' => $list])
</div>
</div>
</div>
</div>
@stop