Got up to categories with the new tables.

This commit is contained in:
James Cole 2014-11-14 10:17:12 +01:00
parent 0530c0402c
commit ac2ab65471
11 changed files with 114 additions and 21 deletions

View File

@ -4,10 +4,10 @@ return [
'driver' => 'smtp',
'host' => 'smtp.gmail.com',
'port' => 587,
'from' => ['address' => '@gmail.com', 'name' => 'Firefly III'],
'from' => ['address' => 'thegrumpydictator@gmail.com', 'name' => 'Firefly III'],
'encryption' => 'tls',
'username' => '@gmail.com',
'password' => '',
'username' => 'thegrumpydictator@gmail.com',
'password' => 'eyp-ort-ab-ig-york-ig-e-kne',
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
];

View File

@ -224,7 +224,7 @@ class AccountController extends BaseController
/** @var \FireflyIII\Database\Account $acct */
$acct = App::make('FireflyIII\Database\Account');
$journals = $acct->getTransactionJournals($account, 50);
$journals = $acct->getTransactionJournals($account, 10);
//$data = $this->_accounts->show($account, 40);

View File

@ -191,17 +191,28 @@ class BudgetController extends BaseController
if (!is_null($repetition) && $repetition->limit->budget->id != $budget->id) {
App::abort(500);
}
/** @var \FireflyIII\Database\Budget $repos */
$repos = App::make('FireflyIII\Database\Budget');
if (is_null($repetition)) {
// get all other repetitions:
$limits = $budget->limits()->orderBy('startdate', 'DESC')->get();
// get all transaction journals for this budget.
$journals = $repos->getTransactionJournals($budget, 50);
$subTitle = $budget->name;
} else {
// get nothing? i dunno
$limits = [$repetition->limit];
// get all transaction journals for this budget and limit repetition.
$journals = [];
$subTitle = $budget->name.' in ' . $repetition->startdate->format('F Y');
$journals = $repos->getTransactionJournalsInRepetition($budget, $repetition, 50);
}
$hideBudget = true;
return View::make('budgets.show', compact('limits', 'budget', 'repetition'));
return View::make('budgets.show', compact('limits', 'budget', 'repetition', 'journals','subTitle','hideBudget'));
}
/**

View File

@ -65,7 +65,10 @@ class CategoryController extends BaseController
*/
public function index()
{
return View::make('categories.index');
/** @var \FireflyIII\Database\Category $repos */
$repos = App::make('FireflyIII\Database\Category');
$categories = $repos->get();
return View::make('categories.index',compact('categories'));
}
/**

View File

@ -182,6 +182,36 @@ class Budget implements CUD, CommonDatabaseCalls, BudgetInterface
throw new NotImplementedException;
}
public function getTransactionJournals(\Budget $budget, $limit = 50)
{
$offset = intval(\Input::get('page')) > 0 ? intval(\Input::get('page')) * $limit : 0;
$set = $budget->transactionJournals()->withRelevantData()->take($limit)->offset($offset)->orderBy('date', 'DESC')->get(['transaction_journals.*']);
$count = $budget->transactionJournals()->count();
$items = [];
foreach ($set as $entry) {
$items[] = $entry;
}
return \Paginator::make($items, $count, $limit);
}
public function getTransactionJournalsInRepetition(\Budget $budget, \LimitRepetition $repetition, $limit = 50)
{
$start = $repetition->startdate;
$end = $repetition->enddate;
$offset = intval(\Input::get('page')) > 0 ? intval(\Input::get('page')) * $limit : 0;
$set = $budget->transactionJournals()->withRelevantData()->before($end)->after($start)->take($limit)->offset($offset)->orderBy('date', 'DESC')->get(['transaction_journals.*']);
$count = $budget->transactionJournals()->before($end)->after($start)->count();
$items = [];
foreach ($set as $entry) {
$items[] = $entry;
}
return \Paginator::make($items, $count, $limit);
}
/**
* @param \Budget $budget
* @param Carbon $date
@ -210,10 +240,10 @@ class Budget implements CUD, CommonDatabaseCalls, BudgetInterface
return \Auth::user()->transactionjournals()->whereNotIn(
'transaction_journals.id', function ($query) use ($start, $end) {
$query->select('transaction_journals.id')->from('transaction_journals')->leftJoin(
'component_transaction_journal', 'component_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id'
)->leftJoin('components', 'components.id', '=', 'component_transaction_journal.component_id')->where(
'transaction_journals.date', '>=', $start->format('Y-m-d')
)->where('transaction_journals.date', '<=', $end->format('Y-m-d'))->where('components.class', 'Budget');
'component_transaction_journal', 'component_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id'
)->leftJoin('components', 'components.id', '=', 'component_transaction_journal.component_id')->where(
'transaction_journals.date', '>=', $start->format('Y-m-d')
)->where('transaction_journals.date', '<=', $end->format('Y-m-d'))->where('components.class', 'Budget');
}
)->before($end)->after($start)->lessThan(0)->transactionTypes(['Withdrawal'])->get();
}

View File

@ -31,4 +31,16 @@ class Category extends Component
{
return $this->belongsToMany('TransactionJournal', 'component_transaction_journal', 'component_id');
}
/**
* @return Carbon
*/
public function lastActionDate()
{
$transaction = $this->transactionjournals()->orderBy('updated_at', 'DESC')->first();
if(is_null($transaction)) {
return null;
}
return $transaction->date;
}
}

View File

@ -17,7 +17,7 @@
Transactions
</div>
<div class="panel-body">
<div id="transactions"></div>
@include('list.journals-full')
</div>
</div>
</div>

View File

@ -22,7 +22,7 @@
</div>
<div class="panel-body">
<div id="category-list"></div>
@include('list.categories')
</div>
</div>
</div>

View File

@ -26,7 +26,7 @@
<td>
<?php $active = $account->lastActionDate(); ?>
@if($active)
{{{$active->format('j F Y @ H:i')}}}
{{{$active->format('j F Y')}}}
@else
<em>Never</em>
@endif

View File

@ -0,0 +1,28 @@
<table class="table table-striped table-bordered">
<tr>
<th>&nbsp;</th>
<th>Name</th>
<th>Last activity</th>
</tr>
@foreach($categories as $category)
<tr>
<td>
<div class="btn-group btn-group-xs">
<a href="{{route('categories.edit',$category->id)}}" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-pencil"></span></a>
<a href="{{route('categories.delete',$category->id)}}" class="btn btn-danger btn-xs"><span class="glyphicon glyphicon-trash"></span></a>
</div>
</td>
<td>
<a href="{{route('categories.show',$category->id)" title="{{{$category->name}}}">{{{$category->name}}}</a>
</td>
<td>
<?php $active = $category->lastActionDate(); ?>
@if($active)
{{{$active->format('j F Y')}}}
@else
<em>Never</em>
@endif
</td>
</tr>
@endforeach
</table>

View File

@ -1,3 +1,6 @@
@if(is_object($journals))
{{$journals->links()}}
@endif
<table class="table table-striped table-bordered">
<tr>
<th>&nbsp;</th>
@ -7,7 +10,9 @@
<th>Date</th>
<th>From</th>
<th>To</th>
<th><i class="fa fa-tasks fa-fw" title="Budget"></i></th>
@if(!isset($hideBudget) || (isset($hideBudget) && $hideBudget=== false))
<th><i class="fa fa-tasks fa-fw" title="Budget"></i></th>
@endif
<th><i class="fa fa-bar-chart fa-fw" title="Category"></i></th>
<th><i class="fa fa-fw fa-rotate-right" title="Recurring transaction"></i></th>
</tr>
@ -64,12 +69,14 @@
<a href="{{route('accounts.show',$journal->transactions[1]->account_id)}}">{{{$journal->transactions[1]->account->name}}}</a>
@endif
</td>
<td>
<?php $budget = isset($journal->budgets[0]) ? $journal->budgets[0] : null; ?>
@if($budget)
<a href="{{route('budgets.show',$budget->id)}}">{{{$budget->name}}}</a>
@endif
</td>
@if(!isset($hideBudget) || (isset($hideBudget) && $hideBudget=== false))
<td>
<?php $budget = isset($journal->budgets[0]) ? $journal->budgets[0] : null; ?>
@if($budget)
<a href="{{route('budgets.show',$budget->id)}}">{{{$budget->name}}}</a>
@endif
</td>
@endif
<td>
<?php $category = isset($journal->categories[0]) ? $journal->categories[0] : null; ?>
@if($category)
@ -87,4 +94,6 @@
@endforeach
</table>
{{$journals->links()}}
@if(is_object($journals))
{{$journals->links()}}
@endif