First attempt at generating and showing reminders.

This commit is contained in:
Sander Dorigo 2014-11-17 10:10:57 +01:00
parent 6581ee0ee0
commit 5fc31f3c1e
8 changed files with 139 additions and 5 deletions

View File

@ -7,4 +7,11 @@
class ReminderController extends BaseController class ReminderController extends BaseController
{ {
/**
* @param Reminder $reminder
*/
public function show(Reminder $reminder)
{
var_dump($reminder);
}
} }

View File

@ -9,7 +9,14 @@ App::before(
/** @var \FireflyIII\Shared\Toolkit\Filter $toolkit */ /** @var \FireflyIII\Shared\Toolkit\Filter $toolkit */
$filter = App::make('FireflyIII\Shared\Toolkit\Filter'); $filter = App::make('FireflyIII\Shared\Toolkit\Filter');
$filter->setSessionDateRange(); $filter->setSessionDateRange();
//Event::fire('recurring.verify');
/** @var \FireflyIII\Shared\Toolkit\Reminders $toolkit */
$reminderKit = App::make('FireflyIII\Shared\Toolkit\Reminders');
$reminderKit->updateReminders();
View::share('reminders',$reminderKit->getReminders());
} }
} }

View File

@ -0,0 +1,59 @@
<?php
namespace FireflyIII\Shared\Toolkit;
use Carbon\Carbon;
/**
* Class Reminders
*
* @package FireflyIII\Shared\Toolkit
*/
class Reminders {
public function updateReminders() {
$reminders = \Auth::user()->reminders()->get();
$hasTestReminder = false;
/** @var \Reminder $reminder */
foreach($reminders as $reminder) {
if($reminder->title == 'Test' && $reminder->active == true) {
$hasTestReminder = true;
}
}
if(!$hasTestReminder) {
$reminder = new \Reminder;
$reminder->user()->associate(\Auth::user());
$reminder->title = 'Test';
$reminder->startdate = new Carbon;
$reminder->enddate = Carbon::now()->addDays(4);
$data = [1 => 2, 'money' => 100, 'amount' => 2.45,'type' => 'Test'];
$reminder->data = $data;
$reminder->save();
}
}
/**
*
*/
public function getReminders() {
$reminders = \Auth::user()->reminders()->where('active',true)->get();
$return = [];
/** @var \Reminder $reminder */
foreach($reminders as $reminder) {
$set = [
'id' => $reminder->id
];
switch($reminder->data->type) {
case 'Test':
$set['title'] = 'Test reminder #'.$reminder->id;
$set['icon'] = 'fa-bomb';
$set['text'] = 'Bla bla';
}
$return[] = $set;
}
return $return;
}
}

View File

@ -49,4 +49,24 @@ class Reminder extends Ardent
{ {
return $this->belongsTo('User'); return $this->belongsTo('User');
} }
/**
* @param $value
*
* @return mixed
*/
public function getDataAttribute($value)
{
return json_decode($value);
}
/**
* @param $value
*/
public function setDataAttribute($value)
{
$this->attributes['data'] = json_encode($value);
}
} }

View File

@ -71,6 +71,14 @@ class User extends Ardent implements UserInterface, RemindableInterface
return $this->hasMany('Budget'); return $this->hasMany('Budget');
} }
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function reminders()
{
return $this->hasMany('Reminder');
}
/** /**
* @return \Illuminate\Database\Eloquent\Relations\HasMany * @return \Illuminate\Database\Eloquent\Relations\HasMany
*/ */

View File

@ -201,6 +201,9 @@ Route::group(
Route::get('/reports', ['uses' => 'ReportController@index', 'as' => 'reports.index']); Route::get('/reports', ['uses' => 'ReportController@index', 'as' => 'reports.index']);
Route::get('/reports/{year}', ['uses' => 'ReportController@year', 'as' => 'reports.year']); Route::get('/reports/{year}', ['uses' => 'ReportController@year', 'as' => 'reports.year']);
// reminder controller
Route::get('/reminders/{reminder}',['uses' => 'ReminderController@show','as' => 'reminders.show']);
// search controller: // search controller:
Route::get('/search', ['uses' => 'SearchController@index', 'as' => 'search']); Route::get('/search', ['uses' => 'SearchController@index', 'as' => 'search']);

View File

@ -12,6 +12,33 @@
<!-- /.navbar-header --> <!-- /.navbar-header -->
<ul class="nav navbar-top-links navbar-right"> <ul class="nav navbar-top-links navbar-right">
<!-- reminders -->
@if(count($reminders) > 0)
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-bell fa-fw"></i> <i class="fa fa-caret-down"></i>
</a>
<ul class="dropdown-menu dropdown-alerts">
@foreach($reminders as $index => $reminder)
<li>
<a href="{{route('reminders.show',$reminder['id'])}}">
<div>
<i class="fa {{$reminder['icon']}} fa-fw"></i> {{{$reminder['title']}}}
<span class="pull-right text-muted small">{{{$reminder['text']}}}</span>
</div>
</a>
</li>
@if($index+1 != count($reminders))
<li class="divider"></li>
@endif
@endforeach
</ul>
<!-- /.dropdown-alerts -->
</li>
@endif
<!-- /.dropdown -->
<li class="dropdown"> <li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-user fa-fw"></i> <i class="fa fa-caret-down"></i> <i class="fa fa-user fa-fw"></i> <i class="fa fa-caret-down"></i>
@ -24,6 +51,9 @@
</ul> </ul>
<!-- /.dropdown-user --> <!-- /.dropdown-user -->
</li> </li>
<!-- /.dropdown --> <!-- /.dropdown -->
</ul> </ul>
<!-- /.navbar-top-links --> <!-- /.navbar-top-links -->

View File

@ -93,10 +93,10 @@ Event::subscribe('FireflyIII\Event\Piggybank');
// TODO event that creates a relationship between transaction journals and recurring events when created. // TODO event that creates a relationship between transaction journals and recurring events when created.
// TODO event that updates the relationship between transaction journals and recurring events when edited. // TODO event that updates the relationship between transaction journals and recurring events when edited.
// TODO event that creates a LimitRepetition when a Limit is created. // TODO event that creates a LimitRepetition when a Limit is created.
// TODO event for when a transfer gets created and set an associated piggy bank; save as Piggy bank event. // event for when a transfer gets created and set an associated piggy bank; save as Piggy bank event.
// TODO when this transfer gets edited, retro-actively edit the event and THUS also the piggy bank. // when this transfer gets edited, retro-actively edit the event and THUS also the piggy bank.
// TODO event for when a transfer gets deleted; also delete related piggy bank event. // event for when a transfer gets deleted; also delete related piggy bank event.
// TODO event to create the first repetition (for non-repeating piggy banks) when the piggy bank is created. // event to create the first repetition (for non-repeating piggy banks) when the piggy bank is created.
// TODO event for when the non-repeating piggy bank is updated because the single repetition must also be changed. // TODO event for when the non-repeating piggy bank is updated because the single repetition must also be changed.
// (also make piggy bank events "invalid" when they start falling outside of the date-scope of the piggy bank, // (also make piggy bank events "invalid" when they start falling outside of the date-scope of the piggy bank,
// although this not changes the amount in the piggy bank). // although this not changes the amount in the piggy bank).