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,
'log_level' => 'debug',
];

View File

@ -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'

View File

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

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()
{
$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;
}
}

View File

@ -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;
}

View File

@ -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
*

View File

@ -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
*/

View File

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