From d9028ed9b7aa4da7ded05622ab53961b2ddc982d Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 8 Mar 2015 09:00:04 +0100 Subject: [PATCH] Small optimizations to the reminders --- app/Helpers/Reminders/ReminderHelper.php | 12 ++++- app/Http/Middleware/Reminders.php | 8 +++ database/seeds/TestDataSeeder.php | 62 +++++++++++++++++------- resources/views/list/reminders.blade.php | 3 +- 4 files changed, 63 insertions(+), 22 deletions(-) diff --git a/app/Helpers/Reminders/ReminderHelper.php b/app/Helpers/Reminders/ReminderHelper.php index 0ca4ca816d..ccfdc2d57a 100644 --- a/app/Helpers/Reminders/ReminderHelper.php +++ b/app/Helpers/Reminders/ReminderHelper.php @@ -39,9 +39,14 @@ class ReminderHelper implements ReminderHelperInterface $perReminder = $left / count($ranges); } else { $perReminder = null; + $ranges = []; + $left = 0; } $metaData = [ - 'perReminder' => $perReminder + 'perReminder' => $perReminder, + 'rangesCount' => count($ranges), + 'ranges' => $ranges, + 'leftToSave' => $left, ]; @@ -97,7 +102,7 @@ class ReminderHelper implements ReminderHelperInterface $start = $piggyBank->targetdate; $end = $piggyBank->startdate; - while ($start >= $end) { + while ($start > $end) { $currentEnd = clone $start; $start = Navigation::subtractPeriod($start, $piggyBank->reminder, 1); $currentStart = clone $start; @@ -129,6 +134,9 @@ class ReminderHelper implements ReminderHelperInterface { /** @var PiggyBank $piggyBank */ $piggyBank = $reminder->remindersable; + if(is_null($piggyBank)) { + return 'Piggy bank no longer exists.'; + } if (is_null($piggyBank->targetdate)) { return 'Add money to this piggy bank to reach your target of ' . Amount::format($piggyBank->targetamount); diff --git a/app/Http/Middleware/Reminders.php b/app/Http/Middleware/Reminders.php index ef8f78ed27..4310bdfac9 100644 --- a/app/Http/Middleware/Reminders.php +++ b/app/Http/Middleware/Reminders.php @@ -66,6 +66,14 @@ class Reminders } } + // delete invalid reminders + $reminders = $this->auth->user()->reminders()->get(); + foreach($reminders as $reminder) { + if(is_null($reminder->remindersable)) { + $reminder->delete(); + } + } + // get and list active reminders: diff --git a/database/seeds/TestDataSeeder.php b/database/seeds/TestDataSeeder.php index b128227920..714c6b71fa 100644 --- a/database/seeds/TestDataSeeder.php +++ b/database/seeds/TestDataSeeder.php @@ -301,24 +301,50 @@ class TestDataSeeder extends Seeder PiggyBankEvent::create(['piggy_bank_id' => $newClothes->id, 'date' => $this->som, 'amount' => 100]); - // weekly reminder piggy bank - $weekly = PiggyBank::create( - [ - 'account_id' => $savings->id, - 'name' => 'Weekly reminder for clothes', - 'targetamount' => 2000, - 'startdate' => $this->som, - 'targetdate' => $next, - 'repeats' => 0, - 'rep_length' => null, - 'rep_every' => 0, - 'rep_times' => null, - 'reminder' => 'week', - 'reminder_skip' => 0, - 'remind_me' => 1, - 'order' => 0, - ] - ); + /* + * New: create no less than eight piggy banks that + * create all sorts of reminders + */ + $list = ['week','quarter','month','year']; + $nextYear = clone $this->_startOfMonth; + $nextYear->addYear(); + foreach($list as $entry) { + + PiggyBank::create( + [ + 'account_id' => $savings->id, + 'name' => $entry.' piggy bank with target date.', + 'targetamount' => 1000, + 'startdate' => $this->som, + 'targetdate' => $nextYear, + 'repeats' => 0, + 'rep_length' => null, + 'rep_every' => 0, + 'rep_times' => null, + 'reminder' => $entry, + 'reminder_skip' => 0, + 'remind_me' => 1, + 'order' => 0, + ] + ); + PiggyBank::create( + [ + 'account_id' => $savings->id, + 'name' => $entry.' piggy bank without target date.', + 'targetamount' => 1000, + 'startdate' => $this->som, + 'targetdate' => null, + 'repeats' => 0, + 'rep_length' => null, + 'rep_every' => 0, + 'rep_times' => null, + 'reminder' => $entry, + 'reminder_skip' => 0, + 'remind_me' => 1, + 'order' => 0, + ] + ); + } } /** diff --git a/resources/views/list/reminders.blade.php b/resources/views/list/reminders.blade.php index dde97295a3..78ecbed4f7 100644 --- a/resources/views/list/reminders.blade.php +++ b/resources/views/list/reminders.blade.php @@ -15,10 +15,9 @@

- Active between {{$reminder->startdate->format('jS F Y')}} + This reminder is active between {{$reminder->startdate->format('jS F Y')}} and {{$reminder->enddate->format('jS F Y')}}.

- @if(isset($reminder->description))

{!! $reminder->description !!}

@endif