diff --git a/app/config/homestead/app.php b/app/config/homestead/app.php index 16c4d11e1b..b6d461000d 100644 --- a/app/config/homestead/app.php +++ b/app/config/homestead/app.php @@ -11,4 +11,5 @@ return [ | */ 'debug' => true, + 'log_level' => 'debug', ]; \ No newline at end of file diff --git a/app/controllers/PiggybankController.php b/app/controllers/PiggybankController.php index 60f030519d..14f7be3774 100644 --- a/app/controllers/PiggybankController.php +++ b/app/controllers/PiggybankController.php @@ -236,12 +236,9 @@ class PiggybankController extends BaseController /* * Number of reminders: */ + + $amountPerReminder = $piggybank->amountPerReminder(); $remindersCount = $piggybank->countFutureReminders(); - if ($remindersCount > 0) { - $amountPerReminder = ($piggybank->targetamount - $piggybank->currentRelevantRep()->currentamount) / $remindersCount; - } else { - $amountPerReminder = ($piggybank->targetamount - $piggybank->currentRelevantRep()->currentamount); - } return View::make('piggybanks.show', compact('amountPerReminder', 'remindersCount', 'piggybank', 'events'))->with('title', 'Piggy banks')->with( 'mainTitleIcon', 'fa-sort-amount-asc' diff --git a/app/controllers/ReminderController.php b/app/controllers/ReminderController.php index ba6eb30747..ce59b5d256 100644 --- a/app/controllers/ReminderController.php +++ b/app/controllers/ReminderController.php @@ -1,4 +1,5 @@ title; +// $model = null; // related model. +// +// if(isset($reminder->data->model) && isset($reminder->data->type)) { +// switch($reminder->data->type) { +// case 'Test': +// break; +// case 'Piggybank': +// break; +// default: +// throw new FireflyException('Cannot handle model of type '.$reminder->data->model); +// break; +// } +// } else { +// +// } +// +// return View::make('reminders.show',compact('reminder','title','subTitle')); } } \ No newline at end of file diff --git a/app/lib/FireflyIII/Database/Piggybank.php b/app/lib/FireflyIII/Database/Piggybank.php index c4104d07ea..a05bcbe7cd 100644 --- a/app/lib/FireflyIII/Database/Piggybank.php +++ b/app/lib/FireflyIII/Database/Piggybank.php @@ -52,6 +52,10 @@ class Piggybank implements CUD, CommonDatabaseCalls, PiggybankInterface $data['startdate'] = isset($data['startdate']) ? $data['startdate'] : Carbon::now()->format('Y-m-d'); $data['targetdate'] = isset($data['targetdate']) && $data['targetdate'] != '' ? $data['targetdate'] : null; + if ($data['remind_me'] == 0) { + $data['reminder'] = null; + } + $piggybank = new \Piggybank($data); if (!$piggybank->validate()) { @@ -81,6 +85,11 @@ class Piggybank implements CUD, CommonDatabaseCalls, PiggybankInterface $model->order = isset($data['order']) ? $data['order'] : 0; $model->remind_me = isset($data['remind_me']) ? intval($data['remind_me']) : 0; $model->reminder = isset($data['reminder']) ? $data['reminder'] : 'month'; + + if ($model->remind_me == 0) { + $model->reminder = null; + } + if (!$model->validate()) { var_dump($model->errors()); exit(); diff --git a/app/lib/FireflyIII/Shared/Toolkit/Reminders.php b/app/lib/FireflyIII/Shared/Toolkit/Reminders.php index 4841c6dbf0..2e90acc006 100644 --- a/app/lib/FireflyIII/Shared/Toolkit/Reminders.php +++ b/app/lib/FireflyIII/Shared/Toolkit/Reminders.php @@ -13,62 +13,103 @@ class Reminders { - public function updateReminders() - { - $today = Carbon::now()->format('Y-m-d'); - $reminders = \Auth::user()->reminders() - ->where('startdate', '<=', $today) - ->where('enddate', '>=', $today) - ->where('active', '=', 1) - ->get(); - $hasTestReminder = false; - - /** @var \Reminder $reminder */ - foreach ($reminders as $reminder) { - if ($reminder->title == 'Test' && intval($reminder->active) == 1) { - $hasTestReminder = true; - } - } - if (!$hasTestReminder) { - $reminder = new \Reminder; - $reminder->user()->associate(\Auth::user()); - $reminder->title = 'Test'; - $reminder->startdate = new Carbon; - $reminder->active = 1; - $reminder->enddate = Carbon::now()->addDays(4); - - $data = ['type' => 'Test', - 'action_uri' => route('index'), - 'text' => 'hello!', - 'amount' => 50, - 'icon' => 'fa-bomb' - ]; - $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'] = $reminder->title; - $set['icon'] = $reminder->data->icon; - $set['text'] = mf(floatval($reminder->data->amount)); + return []; +// $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': +// case 'Piggybank': +// $set['title'] = $reminder->title; +// $set['icon'] = $reminder->data->icon; +// $set['text'] = mf(floatval($reminder->data->amount)); +// break; +// +// } +// $return[] = $set; +// } +// +// return $return; + } + + public function updateReminders() + { +// $today = Carbon::now()->format('Y-m-d'); +// $reminders = \Auth::user()->reminders()->where('startdate', '<=', $today)->where('enddate', '>=', $today)->where('active', '=', 1)->get(); +// +// /* +// * Find all piggy banks in the current set of reminders. +// */ +// $this->updatePiggyBankReminders(); + } + + /** + * + */ + public function updatePiggyBankReminders() + { +// $piggyBanks = \Auth::user()->piggybanks()->where('targetdate', '>=', Carbon::now()->format('Y-m-d'))->whereNotNull('reminder')->where('remind_me', 1) +// ->get(); +// +// /** @var \FireflyIII\Shared\Toolkit\Date $dateKit */ +// $dateKit = \App::make('FireflyIII\Shared\Toolkit\Date'); +// +// $today = Carbon::now(); +// +// +// /** @var \Piggybank $piggyBank */ +// foreach ($piggyBanks as $piggyBank) { +// /* +// * Loop from today until end? +// */ +// $end = $piggyBank->targetdate; +// $start = Carbon::now(); +// +// /* +// * Create a reminder for the current period: +// */ +// /* +// * * type: Piggybank, Test +// * action_uri: where to go when the user wants to do this? +// * text: full text to present to user +// * amount: any relevant amount. +// * model: id of relevant model. +// */ +// +// while ($start <= $end) { +// $currentEnd = $dateKit->addPeriod(clone $start, $piggyBank->reminder, 0); +// +// $count = \Reminder::where('startdate',$start->format('Y-m-d'))->where('enddate',$currentEnd->format('Y-m-d'))->count(); +// if ($start >= $today && $start <= $today && $count == 0) { +// +// +// $reminder = new \Reminder; +// $reminder->active = 1; +// $reminder->user()->associate(\Auth::user()); +// $reminder->startdate = clone $start; +// $reminder->enddate = $currentEnd; +// $reminder->title = 'Add money to "'.e($piggyBank->name).'"'; +// $amount = $piggyBank->amountPerReminder(); +// $data = ['type' => 'Piggybank', 'icon' => 'fa-sort-amount-asc', 'text' => +// 'If you want to save up the full amount of "' . e($piggyBank->name) . '", add ' . mf($amount) . ' to account "' . e( +// $piggyBank->account->name +// ) . '". Don\'t forget to connect the transfer to this piggy bank!', 'amount' => $amount, 'model' => $piggyBank->id +// +// ]; +// $reminder->data = $data; +// $reminder->save(); +// } +// $start = $dateKit->addPeriod($start, $piggyBank->reminder, 0); +// } +// +// } - } - $return[] = $set; - } - return $return; } } \ No newline at end of file diff --git a/app/models/Piggybank.php b/app/models/Piggybank.php index f949e38e07..3b1fb614d8 100644 --- a/app/models/Piggybank.php +++ b/app/models/Piggybank.php @@ -6,42 +6,42 @@ use LaravelBook\Ardent\Ardent as Ardent; /** * Piggybank * - * @property integer $id - * @property \Carbon\Carbon $created_at - * @property \Carbon\Carbon $updated_at - * @property integer $account_id - * @property string $name - * @property float $targetamount - * @property \Carbon\Carbon $startdate - * @property \Carbon\Carbon $targetdate - * @property boolean $repeats - * @property string $rep_length - * @property integer $rep_every - * @property integer $rep_times - * @property string $reminder - * @property integer $reminder_skip - * @property integer $order - * @property boolean $remind_me - * @property-read \Account $account + * @property integer $id + * @property \Carbon\Carbon $created_at + * @property \Carbon\Carbon $updated_at + * @property integer $account_id + * @property string $name + * @property float $targetamount + * @property \Carbon\Carbon $startdate + * @property \Carbon\Carbon $targetdate + * @property boolean $repeats + * @property string $rep_length + * @property integer $rep_every + * @property integer $rep_times + * @property string $reminder + * @property integer $reminder_skip + * @property integer $order + * @property boolean $remind_me + * @property-read \Account $account * @property-read \Illuminate\Database\Eloquent\Collection|\PiggybankRepetition[] $piggybankrepetitions - * @property-read \Illuminate\Database\Eloquent\Collection|\PiggybankEvent[] $piggybankevents - * @property-read \Illuminate\Database\Eloquent\Collection|\Transaction[] $transactions - * @method static \Illuminate\Database\Query\Builder|\Piggybank whereId($value) - * @method static \Illuminate\Database\Query\Builder|\Piggybank whereCreatedAt($value) - * @method static \Illuminate\Database\Query\Builder|\Piggybank whereUpdatedAt($value) - * @method static \Illuminate\Database\Query\Builder|\Piggybank whereAccountId($value) - * @method static \Illuminate\Database\Query\Builder|\Piggybank whereName($value) - * @method static \Illuminate\Database\Query\Builder|\Piggybank whereTargetamount($value) - * @method static \Illuminate\Database\Query\Builder|\Piggybank whereStartdate($value) - * @method static \Illuminate\Database\Query\Builder|\Piggybank whereTargetdate($value) - * @method static \Illuminate\Database\Query\Builder|\Piggybank whereRepeats($value) - * @method static \Illuminate\Database\Query\Builder|\Piggybank whereRepLength($value) - * @method static \Illuminate\Database\Query\Builder|\Piggybank whereRepEvery($value) - * @method static \Illuminate\Database\Query\Builder|\Piggybank whereRepTimes($value) - * @method static \Illuminate\Database\Query\Builder|\Piggybank whereReminder($value) - * @method static \Illuminate\Database\Query\Builder|\Piggybank whereReminderSkip($value) - * @method static \Illuminate\Database\Query\Builder|\Piggybank whereOrder($value) - * @method static \Illuminate\Database\Query\Builder|\Piggybank whereRemindMe($value) + * @property-read \Illuminate\Database\Eloquent\Collection|\PiggybankEvent[] $piggybankevents + * @property-read \Illuminate\Database\Eloquent\Collection|\Transaction[] $transactions + * @method static \Illuminate\Database\Query\Builder|\Piggybank whereId($value) + * @method static \Illuminate\Database\Query\Builder|\Piggybank whereCreatedAt($value) + * @method static \Illuminate\Database\Query\Builder|\Piggybank whereUpdatedAt($value) + * @method static \Illuminate\Database\Query\Builder|\Piggybank whereAccountId($value) + * @method static \Illuminate\Database\Query\Builder|\Piggybank whereName($value) + * @method static \Illuminate\Database\Query\Builder|\Piggybank whereTargetamount($value) + * @method static \Illuminate\Database\Query\Builder|\Piggybank whereStartdate($value) + * @method static \Illuminate\Database\Query\Builder|\Piggybank whereTargetdate($value) + * @method static \Illuminate\Database\Query\Builder|\Piggybank whereRepeats($value) + * @method static \Illuminate\Database\Query\Builder|\Piggybank whereRepLength($value) + * @method static \Illuminate\Database\Query\Builder|\Piggybank whereRepEvery($value) + * @method static \Illuminate\Database\Query\Builder|\Piggybank whereRepTimes($value) + * @method static \Illuminate\Database\Query\Builder|\Piggybank whereReminder($value) + * @method static \Illuminate\Database\Query\Builder|\Piggybank whereReminderSkip($value) + * @method static \Illuminate\Database\Query\Builder|\Piggybank whereOrder($value) + * @method static \Illuminate\Database\Query\Builder|\Piggybank whereRemindMe($value) */ class Piggybank extends Ardent { @@ -71,24 +71,14 @@ class Piggybank extends Ardent return $this->belongsTo('Account'); } + public function amountPerReminder() { + return 0; + + } + public function countFutureReminders() { - /** @var \FireflyIII\Shared\Toolkit\Date $dateKit */ - $dateKit = App::make('FireflyIII\Shared\Toolkit\Date'); - - if (is_null($this->reminder)) { - return 0; - } - - $start = new Carbon; - $end = !is_null($this->targetdate) ? clone $this->targetdate : new Carbon; - $reminders = 0; - while ($start <= $end) { - $reminders++; - $start = $dateKit->addPeriod($start, $this->reminder, $this->reminder_skip); - } - - return $reminders; + return 0; } public function createRepetition(Carbon $start = null, Carbon $target = null) @@ -99,7 +89,6 @@ class Piggybank extends Ardent $rep->targetdate = $target; $rep->currentamount = 0; $rep->save(); - \Event::fire('piggybanks.repetition', [$rep]); return $rep; } diff --git a/app/models/Reminder.php b/app/models/Reminder.php index 6d101694d1..2cf33da6d8 100644 --- a/app/models/Reminder.php +++ b/app/models/Reminder.php @@ -57,6 +57,7 @@ class Reminder extends Ardent * action_uri: where to go when the user wants to do this? * text: full text to present to user * amount: any relevant amount. + * model: id of relevant model. * * @param $value * diff --git a/app/models/User.php b/app/models/User.php index 20cfa67d38..88b46873c4 100644 --- a/app/models/User.php +++ b/app/models/User.php @@ -71,14 +71,6 @@ 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 */ diff --git a/app/views/partials/menu.blade.php b/app/views/partials/menu.blade.php index 31094add19..1b62a21451 100644 --- a/app/views/partials/menu.blade.php +++ b/app/views/partials/menu.blade.php @@ -14,6 +14,7 @@