Pretty much finished the default piggy banks, now for the repeating ones (issue #6). [skip ci]

This commit is contained in:
James Cole
2014-08-14 18:02:31 +02:00
parent 5f710f4c23
commit e063e5686f
4 changed files with 29 additions and 45 deletions

View File

@@ -35,9 +35,10 @@ class PiggybankController extends BaseController
public function createRepeated() public function createRepeated()
{ {
$periods = Config::get('firefly.piggybank_periods');
$accounts = $this->_accounts->getActiveDefaultAsSelectList(); $accounts = $this->_accounts->getActiveDefaultAsSelectList();
return View::make('piggybanks.create')->with('accounts', $accounts); return View::make('piggybanks.create-repeated')->with('accounts', $accounts)->with('periods',$periods);
} }

View File

@@ -69,7 +69,6 @@ class EloquentPiggybankRepository implements PiggybankRepositoryInterface
*/ */
public function store($data) public function store($data)
{ {
var_dump($data);
if ($data['targetdate'] == '') { if ($data['targetdate'] == '') {
unset($data['targetdate']); unset($data['targetdate']);
} }
@@ -83,15 +82,14 @@ class EloquentPiggybankRepository implements PiggybankRepositoryInterface
$piggyBank = new \Piggybank($data); $piggyBank = new \Piggybank($data);
$piggyBank->account()->associate($account); if (!is_null($account)) {
$piggyBank->account()->associate($account);
}
$today = new Carbon; $today = new Carbon;
if ($piggyBank->validate()) { if ($piggyBank->validate()) {
echo 'Valid, but some more checking!';
if (!is_null($piggyBank->targetdate) && $piggyBank->targetdate < $today) { if (!is_null($piggyBank->targetdate) && $piggyBank->targetdate < $today) {
$piggyBank->errors()->add('targetdate', 'Target date cannot be in the past.'); $piggyBank->errors()->add('targetdate', 'Target date cannot be in the past.');
return $piggyBank; return $piggyBank;
} }
@@ -100,7 +98,7 @@ class EloquentPiggybankRepository implements PiggybankRepositoryInterface
// just flash a warning // just flash a warning
$reminderSkip = $piggyBank->reminder_skip < 1 ? 1 : intval($piggyBank->reminder_skip); $reminderSkip = $piggyBank->reminder_skip < 1 ? 1 : intval($piggyBank->reminder_skip);
$firstReminder = new Carbon; $firstReminder = new Carbon;
switch($piggyBank->reminder) { switch ($piggyBank->reminder) {
case 'day': case 'day':
$firstReminder->addDays($reminderSkip); $firstReminder->addDays($reminderSkip);
break; break;
@@ -117,18 +115,12 @@ class EloquentPiggybankRepository implements PiggybankRepositoryInterface
throw new FireflyException('Invalid reminder period'); throw new FireflyException('Invalid reminder period');
break; break;
} }
if($firstReminder > $piggyBank->targetdate) { if ($firstReminder > $piggyBank->targetdate) {
$piggyBank->errors()->add('reminder','Something reminder bla.'); $piggyBank->errors()->add('reminder', 'The reminder has been set to remind you after the piggy bank will expire.');
return $piggyBank; return $piggyBank;
} }
} }
$piggyBank->save(); $piggyBank->save();
} else {
echo 'Does not validate';
print_r($piggyBank->errors()->all());
exit;
} }
return $piggyBank; return $piggyBank;

View File

@@ -66,7 +66,11 @@
<div class="col-sm-8"> <div class="col-sm-8">
<input type="date" name="startdate" value="{{Input::old('startdate') ?: date('Y-m-d')}}" <input type="date" name="startdate" value="{{Input::old('startdate') ?: date('Y-m-d')}}"
class="form-control"/> class="form-control"/>
@if($errors->has('startdate'))
<p class="text-danger">{{$errors->first('startdate')}}</p>
@else
<span class="help-block">This date indicates when you start(ed) saving money for this piggy bank. This field defaults to today and you should keep it on today.</span> <span class="help-block">This date indicates when you start(ed) saving money for this piggy bank. This field defaults to today and you should keep it on today.</span>
@endif
</div> </div>
</div> </div>
@@ -75,14 +79,18 @@
<div class="col-sm-8"> <div class="col-sm-8">
<input type="date" name="targetdate" value="{{Input::old('targetdate') ?: ''}}" <input type="date" name="targetdate" value="{{Input::old('targetdate') ?: ''}}"
class="form-control"/> class="form-control"/>
@if($errors->has('targetdate'))
<p class="text-danger">{{$errors->first('targetdate')}}</p>
@else
<span class="help-block">If this piggy bank has a dead line, enter it here.</span> <span class="help-block">If this piggy bank has a dead line, enter it here.</span>
@endif
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
{{ Form::label('reminder', 'Remind you every', ['class' => 'col-sm-4 control-label'])}} {{ Form::label('reminder', 'Remind you every', ['class' => 'col-sm-4 control-label'])}}
<div class="col-sm-8"> <div class="col-sm-8">
<input type="number" step="1" min="1" value="1" style="width:50px;display:inline;" max="100" name="reminder_skip" class="form-control" /> <input type="number" step="1" min="1" value="{{Input::old('reminder_skip') ?: 1}}" style="width:50px;display:inline;" max="100" name="reminder_skip" class="form-control" />
<select class="form-control" name="reminder" style="width:150px;display: inline"> <select class="form-control" name="reminder" style="width:150px;display: inline">
<option value="none" label="do not remind me">do not remind me</option> <option value="none" label="do not remind me">do not remind me</option>
@@ -90,8 +98,12 @@
<option value="{{$period}}" label="{{$period}}">{{$period}}</option> <option value="{{$period}}" label="{{$period}}">{{$period}}</option>
@endforeach @endforeach
</select> </select>
@if($errors->has('reminder'))
<p class="text-danger">{{$errors->first('reminder')}}</p>
@else
<span class="help-block">Enter a number and a period and Firefly will remind you to add money <span class="help-block">Enter a number and a period and Firefly will remind you to add money
to this piggy bank every now and then.</span> to this piggy bank every now and then.</span>
@endif
</div> </div>
</div> </div>

View File

@@ -3,23 +3,19 @@
<div class="row"> <div class="row">
<div class="col-lg-12 col-md-12 col-sm-12"> <div class="col-lg-12 col-md-12 col-sm-12">
<h1>Firefly <h1>Firefly
<small>Create a new piggy bank</small> <small>Create a new repeated expense</small>
</h1> </h1>
<p class="lead">Create piggy banks to make saving money easier</p> <p class="lead">Create repeated expenses to keep track of long-term planned expenses</p>
<p class="text-info">
Saving money is <em>hard</em>. Piggy banks allow you to group money
from an account together. If you also set a target (and a target date) you
can save towards your goals.
</p>
</div> </div>
</div> </div>
{{Form::open(['class' => 'form-horizontal','url' => route('piggybanks.store')])}} {{Form::open(['class' => 'form-horizontal','url' => route('piggybanks.store.repeated')])}}
<div class="row"> <div class="row">
<div class="col-lg-6 col-md-12 col-sm-6"> <div class="col-lg-6 col-md-12 col-sm-6">
<h4>Mandatory fields</h4> <h4>Mandatory fields</h4>
<div class="form-group"> <div class="form-group">
<label for="name" class="col-sm-4 control-label">Name</label> <label for="name" class="col-sm-4 control-label">Name</label>
<div class="col-sm-8"> <div class="col-sm-8">
@@ -47,39 +43,22 @@
</div> </div>
<div class="form-group"> <div class="form-group">
{{ Form::label('target', 'Target amount', ['class' => 'col-sm-4 control-label'])}} {{ Form::label('targetamount', 'Target amount', ['class' => 'col-sm-4 control-label'])}}
<div class="col-sm-8"> <div class="col-sm-8">
<div class="input-group"> <div class="input-group">
<span class="input-group-addon">&euro;</span> <span class="input-group-addon">&euro;</span>
{{Form::input('number','target', Input::old('target'), ['step' => 'any', 'min' => '1', 'class' => 'form-control'])}} {{Form::input('number','targetamount', Input::old('targetamount'), ['step' => 'any', 'min' => '1', 'class' => 'form-control'])}}
</div> </div>
@if($errors->has('target')) @if($errors->has('targetamount'))
<p class="text-danger">{{$errors->first('target')}}</p> <p class="text-danger">{{$errors->first('targetamount')}}</p>
@else @else
<span class="help-block">How much money do you need to save?</span> <span class="help-block">How much money do you need to save?</span>
@endif @endif
</div> </div>
</div> </div>
<div class="form-group">
<label for="create" class="col-sm-4 control-label">Repeat this piggy bank.</label>
<div class="col-sm-8">
<div class="checkbox">
<label>
{{Form::checkbox('repeats',1,Input::old('repeats') == '1')}}
Repeat this piggy bank
</label>
</div>
<span class="help-block">If you need to save money annually (to save for taxes) use this form and fill
in the fields that will appear.</span>
</div>
</div>
<div class="repeat-piggy">
<h4>Mandatory fields for repeating piggy banks</h4>
Fields be here.
</div>