Added some code for reminders but most of its commented out.

This commit is contained in:
James Cole 2014-11-17 20:18:14 +01:00
parent f69598c6aa
commit 36cbb3d71f
10 changed files with 188 additions and 117 deletions

View File

@ -11,4 +11,5 @@ return [
| |
*/ */
'debug' => true, 'debug' => true,
'log_level' => 'debug',
]; ];

View File

@ -236,12 +236,9 @@ class PiggybankController extends BaseController
/* /*
* Number of reminders: * Number of reminders:
*/ */
$amountPerReminder = $piggybank->amountPerReminder();
$remindersCount = $piggybank->countFutureReminders(); $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( return View::make('piggybanks.show', compact('amountPerReminder', 'remindersCount', 'piggybank', 'events'))->with('title', 'Piggy banks')->with(
'mainTitleIcon', 'fa-sort-amount-asc' 'mainTitleIcon', 'fa-sort-amount-asc'

View File

@ -1,4 +1,5 @@
<?php <?php
use FireflyIII\Exception\NotImplementedException;
/** /**
* Class ReminderController * Class ReminderController
@ -7,11 +8,34 @@
class ReminderController extends BaseController class ReminderController extends BaseController
{ {
public function __construct() {
View::share('title','Reminders');
View::share('mainTitleIcon','fa-lightbulb-o');
}
/** /**
* @param Reminder $reminder * @param Reminder $reminder
*/ */
public function show(Reminder $reminder) public function show(Reminder $reminder)
{ {
var_dump($reminder); throw new NotImplementedException;
// $subTitle = $reminder->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'));
} }
} }

View File

@ -52,6 +52,10 @@ class Piggybank implements CUD, CommonDatabaseCalls, PiggybankInterface
$data['startdate'] = isset($data['startdate']) ? $data['startdate'] : Carbon::now()->format('Y-m-d'); $data['startdate'] = isset($data['startdate']) ? $data['startdate'] : Carbon::now()->format('Y-m-d');
$data['targetdate'] = isset($data['targetdate']) && $data['targetdate'] != '' ? $data['targetdate'] : null; $data['targetdate'] = isset($data['targetdate']) && $data['targetdate'] != '' ? $data['targetdate'] : null;
if ($data['remind_me'] == 0) {
$data['reminder'] = null;
}
$piggybank = new \Piggybank($data); $piggybank = new \Piggybank($data);
if (!$piggybank->validate()) { if (!$piggybank->validate()) {
@ -81,6 +85,11 @@ class Piggybank implements CUD, CommonDatabaseCalls, PiggybankInterface
$model->order = isset($data['order']) ? $data['order'] : 0; $model->order = isset($data['order']) ? $data['order'] : 0;
$model->remind_me = isset($data['remind_me']) ? intval($data['remind_me']) : 0; $model->remind_me = isset($data['remind_me']) ? intval($data['remind_me']) : 0;
$model->reminder = isset($data['reminder']) ? $data['reminder'] : 'month'; $model->reminder = isset($data['reminder']) ? $data['reminder'] : 'month';
if ($model->remind_me == 0) {
$model->reminder = null;
}
if (!$model->validate()) { if (!$model->validate()) {
var_dump($model->errors()); var_dump($model->errors());
exit(); exit();

View File

@ -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() public function getReminders()
{ {
$reminders = \Auth::user()->reminders()->where('active', true)->get(); return [];
$return = []; // $reminders = \Auth::user()->reminders()->where('active', true)->get();
/** @var \Reminder $reminder */ // $return = [];
foreach ($reminders as $reminder) { // /** @var \Reminder $reminder */
$set = [ // foreach ($reminders as $reminder) {
'id' => $reminder->id // $set = ['id' => $reminder->id];
]; // switch ($reminder->data->type) {
switch ($reminder->data->type) { // case 'Test':
case 'Test': // case 'Piggybank':
$set['title'] = $reminder->title; // $set['title'] = $reminder->title;
$set['icon'] = $reminder->data->icon; // $set['icon'] = $reminder->data->icon;
$set['text'] = mf(floatval($reminder->data->amount)); // $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;
} }
} }

View File

@ -6,42 +6,42 @@ use LaravelBook\Ardent\Ardent as Ardent;
/** /**
* Piggybank * Piggybank
* *
* @property integer $id * @property integer $id
* @property \Carbon\Carbon $created_at * @property \Carbon\Carbon $created_at
* @property \Carbon\Carbon $updated_at * @property \Carbon\Carbon $updated_at
* @property integer $account_id * @property integer $account_id
* @property string $name * @property string $name
* @property float $targetamount * @property float $targetamount
* @property \Carbon\Carbon $startdate * @property \Carbon\Carbon $startdate
* @property \Carbon\Carbon $targetdate * @property \Carbon\Carbon $targetdate
* @property boolean $repeats * @property boolean $repeats
* @property string $rep_length * @property string $rep_length
* @property integer $rep_every * @property integer $rep_every
* @property integer $rep_times * @property integer $rep_times
* @property string $reminder * @property string $reminder
* @property integer $reminder_skip * @property integer $reminder_skip
* @property integer $order * @property integer $order
* @property boolean $remind_me * @property boolean $remind_me
* @property-read \Account $account * @property-read \Account $account
* @property-read \Illuminate\Database\Eloquent\Collection|\PiggybankRepetition[] $piggybankrepetitions * @property-read \Illuminate\Database\Eloquent\Collection|\PiggybankRepetition[] $piggybankrepetitions
* @property-read \Illuminate\Database\Eloquent\Collection|\PiggybankEvent[] $piggybankevents * @property-read \Illuminate\Database\Eloquent\Collection|\PiggybankEvent[] $piggybankevents
* @property-read \Illuminate\Database\Eloquent\Collection|\Transaction[] $transactions * @property-read \Illuminate\Database\Eloquent\Collection|\Transaction[] $transactions
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereId($value) * @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 whereCreatedAt($value)
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereUpdatedAt($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 whereAccountId($value)
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereName($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 whereTargetamount($value)
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereStartdate($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 whereTargetdate($value)
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereRepeats($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 whereRepLength($value)
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereRepEvery($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 whereRepTimes($value)
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereReminder($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 whereReminderSkip($value)
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereOrder($value) * @method static \Illuminate\Database\Query\Builder|\Piggybank whereOrder($value)
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereRemindMe($value) * @method static \Illuminate\Database\Query\Builder|\Piggybank whereRemindMe($value)
*/ */
class Piggybank extends Ardent class Piggybank extends Ardent
{ {
@ -71,24 +71,14 @@ class Piggybank extends Ardent
return $this->belongsTo('Account'); return $this->belongsTo('Account');
} }
public function amountPerReminder() {
return 0;
}
public function countFutureReminders() public function countFutureReminders()
{ {
/** @var \FireflyIII\Shared\Toolkit\Date $dateKit */ return 0;
$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;
} }
public function createRepetition(Carbon $start = null, Carbon $target = null) public function createRepetition(Carbon $start = null, Carbon $target = null)
@ -99,7 +89,6 @@ class Piggybank extends Ardent
$rep->targetdate = $target; $rep->targetdate = $target;
$rep->currentamount = 0; $rep->currentamount = 0;
$rep->save(); $rep->save();
\Event::fire('piggybanks.repetition', [$rep]);
return $rep; return $rep;
} }

View File

@ -57,6 +57,7 @@ class Reminder extends Ardent
* action_uri: where to go when the user wants to do this? * action_uri: where to go when the user wants to do this?
* text: full text to present to user * text: full text to present to user
* amount: any relevant amount. * amount: any relevant amount.
* model: id of relevant model.
* *
* @param $value * @param $value
* *

View File

@ -71,14 +71,6 @@ 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
*/ */

View File

@ -14,6 +14,7 @@
<ul class="nav navbar-top-links navbar-right"> <ul class="nav navbar-top-links navbar-right">
<!-- reminders --> <!-- reminders -->
{{--
@if(count($reminders) > 0) @if(count($reminders) > 0)
<li class="dropdown"> <li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">
@ -37,6 +38,7 @@
<!-- /.dropdown-alerts --> <!-- /.dropdown-alerts -->
</li> </li>
@endif @endif
--}}
<!-- /.dropdown --> <!-- /.dropdown -->
<li class="dropdown"> <li class="dropdown">

View File

@ -0,0 +1,15 @@
@extends('layouts.default')
@section('content')
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="panel panel-default">
<div class="panel-heading">
Something
</div>
<div class="panel-body">
{{$reminder->data->text}}
</div>
</div>
</div>
</div>
@stop