mirror of
				https://github.com/firefly-iii/firefly-iii.git
				synced 2025-10-31 10:47:00 +00:00 
			
		
		
		
	First attempt at generating and showing reminders.
This commit is contained in:
		| @@ -7,4 +7,11 @@ | |||||||
| class ReminderController extends BaseController | class ReminderController extends BaseController | ||||||
| { | { | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param Reminder $reminder | ||||||
|  |      */ | ||||||
|  |     public function show(Reminder $reminder) | ||||||
|  |     { | ||||||
|  |         var_dump($reminder); | ||||||
|  |     } | ||||||
| } | } | ||||||
| @@ -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()); | ||||||
|  |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|     } |     } | ||||||
|   | |||||||
							
								
								
									
										59
									
								
								app/lib/FireflyIII/Shared/Toolkit/Reminders.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								app/lib/FireflyIII/Shared/Toolkit/Reminders.php
									
									
									
									
									
										Normal 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; | ||||||
|  |     } | ||||||
|  | }  | ||||||
| @@ -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); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| }  | }  | ||||||
| @@ -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 | ||||||
|      */ |      */ | ||||||
|   | |||||||
| @@ -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']); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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 --> | ||||||
|   | |||||||
| @@ -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). | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user