Fixed the tables (again) for account and for index.

This commit is contained in:
James Cole 2014-11-14 09:07:13 +01:00
parent 96ab112b22
commit a58a560bbb
6 changed files with 112 additions and 20 deletions

View File

@ -172,6 +172,9 @@ class AccountController extends BaseController
*/ */
public function index($what = 'default') public function index($what = 'default')
{ {
/** @var \FireflyIII\Database\Account $acct */
$acct = App::make('FireflyIII\Database\Account');
switch ($what) { switch ($what) {
default: default:
throw new FireflyException('Cannot handle account type "' . e($what) . '".'); throw new FireflyException('Cannot handle account type "' . e($what) . '".');
@ -179,18 +182,21 @@ class AccountController extends BaseController
case 'asset': case 'asset':
$subTitleIcon = 'fa-money'; $subTitleIcon = 'fa-money';
$subTitle = 'Asset accounts'; $subTitle = 'Asset accounts';
$accounts = $acct->getAssetAccounts();
break; break;
case 'expense': case 'expense':
$subTitleIcon = 'fa-shopping-cart'; $subTitleIcon = 'fa-shopping-cart';
$subTitle = 'Expense accounts'; $subTitle = 'Expense accounts';
$accounts = $acct->getExpenseAccounts();
break; break;
case 'revenue': case 'revenue':
$subTitleIcon = 'fa-download'; $subTitleIcon = 'fa-download';
$subTitle = 'Revenue accounts'; $subTitle = 'Revenue accounts';
$accounts = $acct->getRevenueAccounts();
break; break;
} }
return View::make('accounts.index')->with('what', $what)->with(compact('subTitleIcon'))->with(compact('subTitle')); return View::make('accounts.index',compact('what','subTitleIcon','subTitle','accounts'));
} }
/** /**

View File

@ -1,4 +1,5 @@
<?php <?php
use Carbon\Carbon;
use LaravelBook\Ardent\Ardent as Ardent; use LaravelBook\Ardent\Ardent as Ardent;
use LaravelBook\Ardent\Builder; use LaravelBook\Ardent\Builder;
@ -34,7 +35,7 @@ class Account extends Ardent
* @var array * @var array
*/ */
public static $rules public static $rules
= ['name' => ['required', 'between:1,100', 'alphabasic'], 'user_id' => 'required|exists:users,id', = ['name' => ['required', 'between:1,100', 'alphabasic'], 'user_id' => 'required|exists:users,id',
'account_type_id' => 'required|exists:account_types,id', 'active' => 'required|boolean' 'account_type_id' => 'required|exists:account_types,id', 'active' => 'required|boolean'
]; ];
@ -64,21 +65,11 @@ class Account extends Ardent
return floatval( return floatval(
$this->transactions()->leftJoin( $this->transactions()->leftJoin(
'transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id' 'transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id'
)->where('transaction_journals.date', '<=', $date->format('Y-m-d'))->sum('transactions.amount') )->where('transaction_journals.date', '<=', $date->format('Y-m-d'))->sum('transactions.amount')
); );
} }
/**
* Transactions.
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function transactions()
{
return $this->hasMany('Transaction');
}
/** /**
* @param TransactionJournal $journal * @param TransactionJournal $journal
* *
@ -88,13 +79,36 @@ class Account extends Ardent
{ {
return floatval( return floatval(
$this->transactions()->leftJoin( $this->transactions()->leftJoin(
'transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id' 'transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id'
)->where('transaction_journals.date', '<=', $journal->date->format('Y-m-d'))->where( )->where('transaction_journals.date', '<=', $journal->date->format('Y-m-d'))->where(
'transaction_journals.created_at', '<=', $journal->created_at->format('Y-m-d H:i:s') 'transaction_journals.created_at', '<=', $journal->created_at->format('Y-m-d H:i:s')
)->where('transaction_journals.id', '!=', $journal->id)->sum('transactions.amount') )->where('transaction_journals.id', '!=', $journal->id)->sum('transactions.amount')
); );
} }
/**
* @return Carbon
*/
public function lastActionDate()
{
$transaction = $this->transactions()->orderBy('updated_at', 'DESC')->first();
if(is_null($transaction)) {
return null;
}
return $transaction->updated_at;
}
/**
* Transactions.
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function transactions()
{
return $this->hasMany('Transaction');
}
/** /**
* @return \Illuminate\Database\Eloquent\Relations\HasMany * @return \Illuminate\Database\Eloquent\Relations\HasMany
*/ */

View File

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

View File

@ -101,7 +101,7 @@
</div> </div>
<div class="panel-body"> <div class="panel-body">
@include('lists.old.journals-small-index',['transactions' => $data[0],'account' => $data[1]]) @include('list.journals-tiny',['transactions' => $data[0],'account' => $data[1]])
</div> </div>
</div> </div>
@endforeach @endforeach

View File

@ -0,0 +1,37 @@
<table class="table table-bordered table-striped">
<tr>
<th>&nbsp;</th>
<th>Name</th>
<th>Current balance</th>
<th>Active</th>
<th>Last activity</th>
</tr>
@foreach($accounts as $account)
<tr>
<td>
<div class="btn-group btn-group-xs">
<a class="btn btn-default btn-xs" href="{{route('accounts.edit',$account->id)}}"><span class="glyphicon glyphicon-pencil"></span></a>
<a class="btn btn-danger btn-xs" href="{{route('accounts.delete',$account->id)}}"><span class="glyphicon glyphicon-trash"></span></a>
</div>
</td>
<td><a href="{{route('accounts.show',$account->id)}}">{{{$account->name}}}</a></td>
<td>{{mf($account->balance())}}</td>
<td>
@if($account->active)
<i class="fa fa-fw fa-check"></i>
@else
<i class="fa fa-fw fa-ban"></i>
@endif
</td>
<td>
<?php $active = $account->lastActionDate(); ?>
@if($active)
{{{$active->format('j F Y @ H:i')}}}
@else
<em>Never</em>
@endif
</td>
</tr>
@endforeach
</table>

View File

@ -0,0 +1,35 @@
<div class="list-group">
@foreach($transactions as $journal)
<a class="list-group-item" title="{{$journal->date->format('jS M Y')}}" href="{{route('transactions.show',$journal->id)}}">
@if($journal->transactiontype->type == 'Withdrawal')
<i class="fa fa-long-arrow-left fa-fw" title="Withdrawal"></i>
@endif
@if($journal->transactiontype->type == 'Deposit')
<i class="fa fa-long-arrow-right fa-fw" title="Deposit"></i>
@endif
@if($journal->transactiontype->type == 'Transfer')
<i class="fa fa-arrows-h fa-fw" title="Transfer"></i>
@endif
{{{$journal->description}}}
<span class="pull-right small">
@if(isset($account))
@foreach($journal->transactions as $index => $t)
@if($t->account_id == $account->id)
{{mf($t->amount)}}
@endif
@endforeach
@else
@foreach($journal->transactions as $index => $t)
@if($index == 0)
{{mf($t->amount)}}
@endif
@endforeach
@endif
</span>
</a>
@endforeach
</div>