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 | ||||
| { | ||||
|  | ||||
|     /** | ||||
|      * @param Reminder $reminder | ||||
|      */ | ||||
|     public function show(Reminder $reminder) | ||||
|     { | ||||
|         var_dump($reminder); | ||||
|     } | ||||
| } | ||||
| @@ -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()); | ||||
|  | ||||
|         } | ||||
|  | ||||
|     } | ||||
|   | ||||
							
								
								
									
										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'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @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 \Illuminate\Database\Eloquent\Relations\HasMany | ||||
|      */ | ||||
|     public function reminders() | ||||
|     { | ||||
|         return $this->hasMany('Reminder'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return \Illuminate\Database\Eloquent\Relations\HasMany | ||||
|      */ | ||||
|   | ||||
| @@ -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']); | ||||
|  | ||||
|   | ||||
| @@ -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 --> | ||||
|   | ||||
| @@ -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). | ||||
|   | ||||
		Reference in New Issue
	
	Block a user