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
{
/**
* @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 */
$filter = App::make('FireflyIII\Shared\Toolkit\Filter');
$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');
}
/**
* @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 \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function reminders()
{
return $this->hasMany('Reminder');
}
/**
* @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/{year}', ['uses' => 'ReportController@year', 'as' => 'reports.year']);
// reminder controller
Route::get('/reminders/{reminder}',['uses' => 'ReminderController@show','as' => 'reminders.show']);
// search controller:
Route::get('/search', ['uses' => 'SearchController@index', 'as' => 'search']);

View File

@ -12,6 +12,33 @@
<!-- /.navbar-header -->
<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">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-user fa-fw"></i> <i class="fa fa-caret-down"></i>
@ -24,6 +51,9 @@
</ul>
<!-- /.dropdown-user -->
</li>
<!-- /.dropdown -->
</ul>
<!-- /.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 updates the relationship between transaction journals and recurring events when edited.
// 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.
// TODO 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.
// TODO event to create the first repetition (for non-repeating piggy banks) when the piggy bank is created.
// event for when a transfer gets created and set an associated piggy bank; save as Piggy bank event.
// when this transfer gets edited, retro-actively edit the event and THUS also the piggy bank.
// event for when a transfer gets deleted; also delete related piggy bank event.
// 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.
// (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).