Remove all references to reminders.

This commit is contained in:
James Cole 2015-06-22 21:31:12 +02:00
parent d00786c43f
commit a465cb2191
47 changed files with 45 additions and 1500 deletions

View File

@ -1,176 +0,0 @@
<?php
namespace FireflyIII\Helpers\Reminders;
use Amount;
use Auth;
use Carbon\Carbon;
use Config;
use FireflyIII\Models\PiggyBank;
use FireflyIII\Models\Reminder;
use Navigation;
use Preferences;
/**
* Class ReminderHelper
*
* @package FireflyIII\Helpers\Reminders
*/
class ReminderHelper implements ReminderHelperInterface
{
/**
* @param PiggyBank $piggyBank
* @param Carbon $start
* @param Carbon $end
*
* @return Reminder
*/
public function createReminder(PiggyBank $piggyBank, Carbon $start, Carbon $end)
{
$reminder = Auth::user()->reminders()->where('remindersable_id', $piggyBank->id)->onDates($start, $end)->first();
if (is_null($reminder)) {
if (!is_null($piggyBank->targetdate)) {
// get ranges again, but now for the start date
$ranges = $this->getReminderRanges($piggyBank, $start);
$currentRep = $piggyBank->currentRelevantRep();
$left = $piggyBank->targetamount - $currentRep->currentamount;
$perReminder = count($ranges) == 0 ? $left : $left / count($ranges);
} else {
$perReminder = null;
$ranges = [];
$left = 0;
}
$metaData = [
'perReminder' => $perReminder,
'rangesCount' => count($ranges),
'ranges' => $ranges,
'leftToSave' => $left,
];
$reminder = new Reminder;
$reminder->user()->associate(Auth::user());
$reminder->startdate = $start;
$reminder->enddate = $end;
$reminder->active = true;
$reminder->metadata = $metaData;
$reminder->notnow = false;
$reminder->remindersable()->associate($piggyBank);
$reminder->save();
return $reminder;
} else {
return $reminder;
}
}
/**
* Create all reminders for a piggy bank for a given date.
*
* @param PiggyBank $piggyBank
*
* @param Carbon $date
*
* @return mixed
*/
public function createReminders(PiggyBank $piggyBank, Carbon $date)
{
$ranges = $this->getReminderRanges($piggyBank);
foreach ($ranges as $range) {
if ($date < $range['end'] && $date > $range['start']) {
// create a reminder here!
$this->createReminder($piggyBank, $range['start'], $range['end']);
// stop looping, we're done.
break;
}
}
}
/**
* This routine will return an array consisting of two dates which indicate the start
* and end date for each reminder that this piggy bank will have, if the piggy bank has
* any reminders. For example:
*
* [12 mar - 15 mar]
* [15 mar - 18 mar]
*
* etcetera.
*
* Array is filled with tiny arrays with Carbon objects in them.
*
* @param PiggyBank $piggyBank
* @param Carbon $date ;
*
* @return array
*/
public function getReminderRanges(PiggyBank $piggyBank, Carbon $date = null)
{
$ranges = [];
if (is_null($date)) {
$date = new Carbon;
}
if ($piggyBank->remind_me === false) {
return $ranges;
}
if (!is_null($piggyBank->targetdate)) {
// count back until now.
$start = $piggyBank->targetdate;
$end = $piggyBank->startdate;
while ($start > $end) {
$currentEnd = clone $start;
$start = Navigation::subtractPeriod($start, $piggyBank->reminder, 1);
$currentStart = clone $start;
$ranges[] = ['start' => clone $currentStart, 'end' => clone $currentEnd];
}
} else {
$start = clone $piggyBank->startdate;
while ($start < $date) {
$currentStart = clone $start;
$start = Navigation::addPeriod($start, $piggyBank->reminder, 0);
$currentEnd = clone $start;
$ranges[] = ['start' => clone $currentStart, 'end' => clone $currentEnd];
}
}
return $ranges;
}
/**
* Takes a reminder, finds the piggy bank and tells you what to do now.
* Aka how much money to put in.
*
*
* @param Reminder $reminder
*
* @return string
*/
public function getReminderText(Reminder $reminder)
{
/** @var PiggyBank $piggyBank */
$piggyBank = $reminder->remindersable;
if (is_null($piggyBank)) {
return trans('firefly.piggy_bank_not_exists');
}
if (is_null($piggyBank->targetdate)) {
return trans('firefly.add_any_amount_to_piggy', ['amount' => Amount::format($piggyBank->targetamount)]);
}
$lang = Preferences::get('language', 'en')->data;
return trans(
'firefly.add_set_amount_to_piggy',
[
'amount' => Amount::format($reminder->metadata->perReminder),
'date' => $piggyBank->targetdate->formatLocalized(Config::get('firefly.monthAndDay.' . $lang))
]
);
}
}

View File

@ -1,63 +0,0 @@
<?php
namespace FireflyIII\Helpers\Reminders;
use Carbon\Carbon;
use FireflyIII\Models\PiggyBank;
use FireflyIII\Models\Reminder;
/**
* Interface ReminderHelperInterface
*
* @package FireflyIII\Helpers\Reminders
*/
interface ReminderHelperInterface
{
/**
* Takes a reminder, finds the piggy bank and tells you what to do now.
* Aka how much money to put in.
*
* @param Reminder $reminder
*
* @return string
*/
public function getReminderText(Reminder $reminder);
/**
* This routine will return an array consisting of two dates which indicate the start
* and end date for each reminder that this piggy bank will have, if the piggy bank has
* any reminders. For example:
*
* [12 mar - 15 mar]
* [15 mar - 18 mar]
*
* etcetera.
*
* Array is filled with tiny arrays with Carbon objects in them.
*
* @param PiggyBank $piggyBank
*
* @return array
*/
public function getReminderRanges(PiggyBank $piggyBank);
/**
* @param PiggyBank $piggyBank
* @param Carbon $start
* @param Carbon $end
*
* @return Reminder
*/
public function createReminder(PiggyBank $piggyBank, Carbon $start, Carbon $end);
/**
* Create all reminders for a piggy bank for a given date.
*
* @param PiggyBank $piggyBank
*
* @param Carbon $date
*
* @return mixed
*/
public function createReminders(PiggyBank $piggyBank, Carbon $date);
}

View File

@ -142,8 +142,6 @@ class PiggyBankController extends Controller
'account_id' => $piggyBank->account_id,
'targetamount' => $piggyBank->targetamount,
'targetdate' => $targetDate,
'reminder' => $piggyBank->reminder,
'remind_me' => intval($piggyBank->remind_me) == 1 && !is_null($piggyBank->reminder) ? true : false
];
Session::flash('preFilled', $preFilled);
Session::flash('gaEventCategory', 'piggy-banks');
@ -300,11 +298,6 @@ class PiggyBankController extends Controller
public function show(PiggyBankRepositoryInterface $repository, PiggyBank $piggyBank)
{
$events = $repository->getEvents($piggyBank);
/*
* Number of reminders:
*/
$subTitle = e($piggyBank->name);
return view('piggy-banks.show', compact('piggyBank', 'events', 'subTitle'));
@ -326,8 +319,6 @@ class PiggyBankController extends Controller
'account_id' => intval($request->get('account_id')),
'targetamount' => floatval($request->get('targetamount')),
'targetdate' => strlen($request->get('targetdate')) > 0 ? new Carbon($request->get('targetdate')) : null,
'reminder' => $request->get('reminder'),
'remind_me' => $request->get('remind_me'),
];
$piggyBank = $repository->store($piggyBankData);
@ -361,8 +352,6 @@ class PiggyBankController extends Controller
'account_id' => intval($request->get('account_id')),
'targetamount' => floatval($request->get('targetamount')),
'targetdate' => strlen($request->get('targetdate')) > 0 ? new Carbon($request->get('targetdate')) : null,
'reminder' => $request->get('reminder'),
'remind_me' => $request->get('remind_me')
];
$piggyBank = $repository->update($piggyBank, $piggyBankData);

View File

@ -1,92 +0,0 @@
<?php namespace FireflyIII\Http\Controllers;
use FireflyIII\Models\Reminder;
use FireflyIII\Repositories\Reminder\ReminderRepositoryInterface;
use Redirect;
use Session;
use URL;
/**
* Class ReminderController
*
* @package FireflyIII\Http\Controllers
*/
class ReminderController extends Controller
{
/**
* @param Reminder $reminder
*
* @return \Illuminate\Http\RedirectResponse
*/
public function act(Reminder $reminder)
{
$data = [
'description' => 'Money for piggy bank "' . $reminder->remindersable->name . '"',
'amount' => round($reminder->metadata->perReminder, 2),
'account_to_id' => $reminder->remindersable->account_id,
'piggy_bank_id' => $reminder->remindersable_id,
'reminder_id' => $reminder->id,
];
Session::flash('_old_input', $data);
return Redirect::route('transactions.create', ['transfer']);
}
/**
* @param Reminder $reminder
*
* @return \Illuminate\Http\RedirectResponse
*/
public function dismiss(Reminder $reminder)
{
$reminder->notnow = true;
$reminder->save();
return Redirect::to(URL::previous());
}
/**
* @param ReminderRepositoryInterface $repository
*
* @return \Illuminate\View\View
*/
public function index(ReminderRepositoryInterface $repository)
{
$active = $repository->getActiveReminders();
$expired = $repository->getExpiredReminders();
$inactive = $repository->getInactiveReminders();
$dismissed = $repository->getDismissedReminders();
$title = 'Reminders';
$mainTitleIcon = 'fa-clock-o';
return view('reminders.index', compact('dismissed', 'expired', 'inactive', 'active', 'title', 'mainTitleIcon'));
}
/**
* @param Reminder $reminder
*
* @return \Illuminate\View\View
*/
public function show(Reminder $reminder)
{
$title = trans('firefly.reminder');
$mainTitleIcon = 'fa-clock-o';
if ($reminder->notnow === true) {
$subTitle = trans('firefly.dismissed_reminder_for_piggy', ['name' => $reminder->remindersable->name]);
} else {
$subTitle = trans('firefly.reminder_for_piggy', ['name' => $reminder->remindersable->name]);
}
return view('reminders.show', compact('reminder', 'title', 'subTitle', 'mainTitleIcon'));
}
}

View File

@ -296,8 +296,6 @@ class TransactionController extends Controller
event(new JournalCreated($journal, intval($request->get('piggy_bank_id'))));
}
$repository->deactivateReminder($request->get('reminder_id'));
Session::flash('success', 'New transaction "' . $journal->description . '" stored!');
Preferences::mark();

View File

@ -37,7 +37,6 @@ class Kernel extends HttpKernel
'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
'guest' => 'FireflyIII\Http\Middleware\RedirectIfAuthenticated',
'range' => 'FireflyIII\Http\Middleware\Range',
'reminders' => 'FireflyIII\Http\Middleware\Reminders',
];

View File

@ -1,96 +0,0 @@
<?php
namespace FireflyIII\Http\Middleware;
use App;
use Carbon\Carbon;
use Closure;
use FireflyIII\Models\PiggyBank;
use FireflyIII\Models\Reminder;
use FireflyIII\Support\CacheProperties;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Http\Request;
use View;
/**
* Class Reminders
*
* @package FireflyIII\Http\Middleware
*/
class Reminders
{
/**
* The Guard implementation.
*
* @var Guard
*/
protected $auth;
/**
* Create a new filter instance.
*
* @param Guard $auth
*
*/
public function __construct(Guard $auth)
{
$this->auth = $auth;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
*
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
$user = $this->auth->user();
if ($this->auth->check() && !$request->isXmlHttpRequest() && $user instanceof User) {
// do reminders stuff.
// abuse CacheProperties to find out if we need to do this:
$cache = new CacheProperties;
$cache->addProperty('reminders');
if ($cache->has()) {
$reminders = $cache->get();
View::share('reminders', $reminders);
return $next($request);
}
$piggyBanks = $user->piggyBanks()->where('remind_me', 1)->get();
/** @var \FireflyIII\Helpers\Reminders\ReminderHelperInterface $helper */
$helper = App::make('FireflyIII\Helpers\Reminders\ReminderHelperInterface');
/** @var PiggyBank $piggyBank */
foreach ($piggyBanks as $piggyBank) {
$helper->createReminders($piggyBank, new Carbon);
}
// delete invalid reminders
// this is a construction SQLITE cannot handle :(
if (env('DB_CONNECTION') != 'sqlite') {
Reminder::whereUserId($user->id)->leftJoin('piggy_banks', 'piggy_banks.id', '=', 'remindersable_id')->whereNull('piggy_banks.id')->delete();
}
// get and list active reminders:
$reminders = $user->reminders()->today()->get();
$reminders->each(
function (Reminder $reminder) use ($helper) {
$reminder->description = $helper->getReminderText($reminder);
}
);
$cache->store($reminders);
View::share('reminders', $reminders);
}
return $next($request);
}
}

View File

@ -61,7 +61,6 @@ class JournalFormRequest extends Request
'what' => 'required|in:withdrawal,deposit,transfer',
'amount' => 'numeric|required|min:0.01',
'date' => 'required|date',
'reminder_id' => 'numeric|exists:reminders,id',
'amount_currency_id' => 'required|exists:transaction_currencies,id',
];

View File

@ -42,9 +42,6 @@ class PiggyBankFormRequest extends Request
'amount_currency_id' => 'exists:transaction_currencies,id',
'startdate' => 'date',
'targetdate' => $targetDateRule,
'reminder' => 'in:day,week,quarter,month,year',
'reminder_skip' => 'integer|min:0|max:99',
'remind_me' => 'boolean|piggyBankReminder',
'order' => 'integer|min:1',
];

View File

@ -7,7 +7,6 @@ use FireflyIII\Models\Budget;
use FireflyIII\Models\Category;
use FireflyIII\Models\LimitRepetition;
use FireflyIII\Models\PiggyBank;
use FireflyIII\Models\Reminder;
use FireflyIII\Models\Tag;
use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Models\TransactionJournal;
@ -286,25 +285,6 @@ Breadcrumbs::register(
}
);
// reminders
Breadcrumbs::register(
'reminders.index', function (Generator $breadcrumbs) {
$breadcrumbs->parent('home');
$breadcrumbs->push(trans('breadcrumbs.reminders'), route('reminders.index'));
}
);
// reminders
Breadcrumbs::register(
'reminders.show', function (Generator $breadcrumbs, Reminder $reminder) {
$breadcrumbs->parent('reminders.index');
$breadcrumbs->push(trans('breadcrumbs.reminder', ['id' => e($reminder->id)]), route('reminders.show', [$reminder->id]));
}
);
// reports
Breadcrumbs::register(
'reports.index', function (Generator $breadcrumbs) {

View File

@ -5,7 +5,6 @@ use FireflyIII\Models\Budget;
use FireflyIII\Models\Category;
use FireflyIII\Models\LimitRepetition;
use FireflyIII\Models\PiggyBank;
use FireflyIII\Models\Reminder;
use FireflyIII\Models\Tag;
use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Models\TransactionJournal;
@ -81,19 +80,6 @@ Route::bind(
}
);
Route::bind(
'reminder', function ($value) {
if (Auth::check()) {
$object = Reminder::where('id', $value)->where('user_id', Auth::user()->id)->first();
if ($object) {
return $object;
}
}
throw new NotFoundHttpException;
}
);
Route::bind(
'limitrepetition', function ($value) {
if (Auth::check()) {
@ -140,23 +126,6 @@ Route::bind(
}
);
/** @noinspection PhpUnusedParameterInspection */
Route::bind(
'reminder', function ($value) {
if (Auth::check()) {
/** @var \FireflyIII\Models\Reminder $object */
$object = Reminder::find($value);
if ($object) {
if ($object->remindersable->account->user_id == Auth::user()->id) {
return $object;
}
}
}
throw new NotFoundHttpException;
}
);
Route::bind(
'tag', function ($value) {
if (Auth::check()) {
@ -185,7 +154,7 @@ Route::controllers(
Route::group(
['middleware' => ['auth', 'range', 'reminders']], function () {
['middleware' => ['auth', 'range']], function () {
/**
* Home Controller
@ -355,14 +324,6 @@ Route::group(
Route::post('/profile/delete-account', ['uses' => 'ProfileController@postDeleteAccount', 'as' => 'delete-account-post']);
Route::post('/profile/change-password', ['uses' => 'ProfileController@postChangePassword', 'as' => 'change-password-post']);
/**
* Reminder Controller
*/
Route::get('/reminders', ['uses' => 'ReminderController@index', 'as' => 'reminders.index']);
Route::get('/reminder/dismiss/{reminder}', ['uses' => 'ReminderController@dismiss', 'as' => 'reminders.dismiss']);
Route::get('/reminder/act/{reminder}', ['uses' => 'ReminderController@act', 'as' => 'reminders.act']);
Route::get('/reminder/{reminder}', ['uses' => 'ReminderController@show', 'as' => 'reminders.show']);
/**
* Report Controller
*/

View File

@ -19,15 +19,11 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @property string $targetamount_encrypted
* @property \Carbon\Carbon $startdate
* @property \Carbon\Carbon $targetdate
* @property string $reminder
* @property integer $reminder_skip
* @property boolean $remind_me
* @property integer $order
* @property boolean $encrypted
* @property-read \FireflyIII\Models\Account $account
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\PiggyBankRepetition[] $piggyBankRepetitions
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\PiggyBankEvent[] $piggyBankEvents
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Reminder[] $reminders
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\PiggyBank whereId($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\PiggyBank whereCreatedAt($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\PiggyBank whereUpdatedAt($value)
@ -38,9 +34,6 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\PiggyBank whereTargetamountEncrypted($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\PiggyBank whereStartdate($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\PiggyBank whereTargetdate($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\PiggyBank whereReminder($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\PiggyBank whereReminderSkip($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\PiggyBank whereRemindMe($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\PiggyBank whereOrder($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\PiggyBank whereEncrypted($value)
* @property PiggyBankRepetition currentRep
@ -50,7 +43,7 @@ class PiggyBank extends Model
use SoftDeletes;
protected $fillable
= ['name', 'account_id', 'order', 'reminder_skip', 'targetamount', 'startdate', 'targetdate', 'reminder', 'remind_me'];
= ['name', 'account_id', 'order', 'targetamount', 'startdate', 'targetdate'];
protected $hidden = ['targetamount_encrypted', 'encrypted'];
/**
@ -112,17 +105,6 @@ class PiggyBank extends Model
return $value;
}
/**
*
* @param $value
*
* @return boolean
*/
public function getRemindMeAttribute($value)
{
return intval($value) == 1;
}
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
@ -131,14 +113,6 @@ class PiggyBank extends Model
return $this->hasMany('FireflyIII\Models\PiggyBankEvent');
}
/**
* @return \Illuminate\Database\Eloquent\Relations\MorphMany
*/
public function reminders()
{
return $this->morphMany('FireflyIII\Models\Reminder', 'remindersable');
}
/**
*
* @param $value

View File

@ -1,148 +0,0 @@
<?php namespace FireflyIII\Models;
use Carbon\Carbon;
use Crypt;
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
use Illuminate\Database\Eloquent\Model;
/**
* Class Reminder
*
* @codeCoverageIgnore
* @package FireflyIII\Models
* @property integer $id
* @property \Carbon\Carbon $created_at
* @property \Carbon\Carbon $updated_at
* @property integer $user_id
* @property \Carbon\Carbon $startdate
* @property \Carbon\Carbon $enddate
* @property boolean $active
* @property boolean $notnow
* @property integer $remindersable_id
* @property string $remindersable_type
* @property string $metadata
* @property boolean $encrypted
* @property-read \ $remindersable
* @property-read \FireflyIII\User $user
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Reminder whereId($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Reminder whereCreatedAt($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Reminder whereUpdatedAt($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Reminder whereUserId($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Reminder whereStartdate($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Reminder whereEnddate($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Reminder whereActive($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Reminder whereNotnow($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Reminder whereRemindersableId($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Reminder whereRemindersableType($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Reminder whereMetadata($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Reminder whereEncrypted($value)
* @method static \FireflyIII\Models\Reminder onDates($start, $end)
* @method static \FireflyIII\Models\Reminder today()
* @property string description
*/
class Reminder extends Model
{
protected $fillable = ['user_id', 'startdate', 'metadata', 'enddate', 'active', 'notnow', 'remindersable_id', 'remindersable_type',];
protected $hidden = ['encrypted'];
/**
*
* @param $value
*
* @return int
*/
public function getActiveAttribute($value)
{
return intval($value) == 1;
}
/**
* @return array
*/
public function getDates()
{
return ['created_at', 'updated_at', 'startdate', 'enddate'];
}
/**
*
* @param $value
*
* @return mixed
*/
public function getMetadataAttribute($value)
{
if (intval($this->encrypted) == 1) {
return json_decode(Crypt::decrypt($value));
}
return json_decode($value);
}
/**
*
* @param $value
*
* @return bool
*/
public function getNotnowAttribute($value)
{
return intval($value) == 1;
}
/**
* @return \Illuminate\Database\Eloquent\Relations\MorphTo
*/
public function remindersable()
{
return $this->morphTo();
}
/**
*
* @param EloquentBuilder $query
* @param Carbon $start
* @param Carbon $end
*
* @return $this
*/
public function scopeOnDates(EloquentBuilder $query, Carbon $start, Carbon $end)
{
return $query->where('reminders.startdate', '=', $start->format('Y-m-d 00:00:00'))->where('reminders.enddate', '=', $end->format('Y-m-d 00:00:00'));
}
/**
*
* @param EloquentBuilder $query
*
* @return $this
*/
public function scopeToday(EloquentBuilder $query)
{
$today = new Carbon;
return $query->where('startdate', '<=', $today->format('Y-m-d 00:00:00'))->where('enddate', '>=', $today->format('Y-m-d 00:00:00'))->where('active', 1)
->where('notnow', 0);
}
/**
*
* @param $value
*/
public function setMetadataAttribute($value)
{
$this->attributes['encrypted'] = true;
$this->attributes['metadata'] = Crypt::encrypt(json_encode($value));
}
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function user()
{
return $this->belongsTo('FireflyIII\User');
}
}

View File

@ -5,7 +5,6 @@ use FireflyIII\Models\BudgetLimit;
use FireflyIII\Models\LimitRepetition;
use FireflyIII\Models\PiggyBank;
use FireflyIII\Models\PiggyBankRepetition;
use FireflyIII\Models\Reminder;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Support\Facades\Navigation;
@ -101,15 +100,6 @@ class EventServiceProvider extends ServiceProvider
}
}
);
PiggyBank::deleting(
function (PiggyBank $piggyBank) {
$reminders = $piggyBank->reminders()->get();
/** @var Reminder $reminder */
foreach ($reminders as $reminder) {
$reminder->delete();
}
}
);
Account::deleted(
function (Account $account) {

View File

@ -89,12 +89,10 @@ class FireflyServiceProvider extends ServiceProvider
$this->app->bind('FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface', 'FireflyIII\Repositories\PiggyBank\PiggyBankRepository');
$this->app->bind('FireflyIII\Repositories\Currency\CurrencyRepositoryInterface', 'FireflyIII\Repositories\Currency\CurrencyRepository');
$this->app->bind('FireflyIII\Repositories\Tag\TagRepositoryInterface', 'FireflyIII\Repositories\Tag\TagRepository');
$this->app->bind('FireflyIII\Repositories\Reminder\ReminderRepositoryInterface', 'FireflyIII\Repositories\Reminder\ReminderRepository');
$this->app->bind('FireflyIII\Support\Search\SearchInterface', 'FireflyIII\Support\Search\Search');
$this->app->bind('FireflyIII\Helpers\Help\HelpInterface', 'FireflyIII\Helpers\Help\Help');
$this->app->bind('FireflyIII\Helpers\Reminders\ReminderHelperInterface', 'FireflyIII\Helpers\Reminders\ReminderHelper');
$this->app->bind('FireflyIII\Helpers\Report\ReportHelperInterface', 'FireflyIII\Helpers\Report\ReportHelper');
$this->app->bind('FireflyIII\Helpers\Report\ReportQueryInterface', 'FireflyIII\Helpers\Report\ReportQuery');

View File

@ -26,21 +26,6 @@ use Log;
class JournalRepository implements JournalRepositoryInterface
{
/**
* @param int $reminderId
*
* @return boolean|null
*/
public function deactivateReminder($reminderId)
{
$reminder = Auth::user()->reminders()->find($reminderId);
if ($reminder) {
$reminder->active = 0;
$reminder->save();
}
}
/**
* @param TransactionJournal $journal
*

View File

@ -16,13 +16,6 @@ use Illuminate\Support\Collection;
*/
interface JournalRepositoryInterface
{
/**
* @param int $reminderId
*
* @return bool
*/
public function deactivateReminder($reminderId);
/**
* @param TransactionJournal $journal
*

View File

@ -116,7 +116,6 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
*/
public function store(array $data)
{
$data['remind_me'] = isset($data['remind_me']) && $data['remind_me'] == '1' ? true : false;
$piggyBank = PiggyBank::create($data);
return $piggyBank;
@ -130,21 +129,12 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
*/
public function update(PiggyBank $piggyBank, array $data)
{
/**
* 'rep_length' => $request->get('rep_length'),
* 'rep_every' => intval($request->get('rep_every')),
* 'rep_times' => intval($request->get('rep_times')),
* 'remind_me' => intval($request->get('remind_me')) == 1 ? true : false ,
* 'reminder' => $request->get('reminder'),
*/
$piggyBank->name = $data['name'];
$piggyBank->account_id = intval($data['account_id']);
$piggyBank->targetamount = floatval($data['targetamount']);
$piggyBank->targetdate = $data['targetdate'];
$piggyBank->reminder = $data['reminder'];
$piggyBank->startdate = $data['startdate'];
$piggyBank->remind_me = isset($data['remind_me']) && $data['remind_me'] == '1' ? 1 : 0;
$piggyBank->save();

View File

@ -4,7 +4,6 @@ namespace FireflyIII\Repositories\PiggyBank;
use Carbon\Carbon;
use FireflyIII\Models\PiggyBankRepetition;
use FireflyIII\Models\Reminder;
/**
* Class PiggyBankPart
@ -20,8 +19,6 @@ class PiggyBankPart
public $cumulativeAmount;
/** @var float */
public $currentamount;
/** @var Reminder */
public $reminder;
/** @var PiggyBankRepetition */
public $repetition;
@ -32,28 +29,6 @@ class PiggyBankPart
/** @var Carbon */
public $targetdate;
/**
* @return Reminder
*/
public function getReminder()
{
if (is_null($this->reminder)) {
$this->reminder = $this->repetition->piggyBank->reminders()->where('startdate', $this->getStartdate()->format('Y-m-d'))->where(
'enddate', $this->getTargetdate()->format('Y-m-d')
)->first();
}
return $this->reminder;
}
/**
* @param Reminder $reminder
*/
public function setReminder($reminder)
{
$this->reminder = $reminder;
}
/**
* @return Carbon
*/
@ -102,14 +77,6 @@ class PiggyBankPart
$this->repetition = $repetition;
}
/**
* @return bool
*/
public function hasReminder()
{
return !is_null($this->reminder);
}
/**
* @return float|int
*/

View File

@ -1,116 +0,0 @@
<?php
namespace FireflyIII\Repositories\Reminder;
use App;
use Auth;
use Carbon\Carbon;
use FireflyIII\Models\Reminder;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Collection;
/**
* Class ReminderRepository
*
* @package FireflyIII\Repositories\Reminder
*/
class ReminderRepository implements ReminderRepositoryInterface
{
/** @var \FireflyIII\Helpers\Reminders\ReminderHelperInterface */
protected $helper;
/**
* @codeCoverageIgnore
*/
public function __construct()
{
/** @var \FireflyIII\Helpers\Reminders\ReminderHelperInterface helper */
$this->helper = App::make('FireflyIII\Helpers\Reminders\ReminderHelperInterface');
}
/**
* @return Collection
*/
public function getActiveReminders()
{
$today = new Carbon;
// active reminders:
$active = Auth::user()->reminders()
->where('notnow', 0)
->where('active', 1)
->where('startdate', '<=', $today->format('Y-m-d 00:00:00'))
->where('enddate', '>=', $today->format('Y-m-d 00:00:00'))
->get();
$active->each(
function (Reminder $reminder) {
$reminder->description = $this->helper->getReminderText($reminder);
}
);
return $active;
}
/**
* @return Collection
*/
public function getDismissedReminders()
{
$dismissed = Auth::user()->reminders()
->where('notnow', 1)
->get();
$dismissed->each(
function (Reminder $reminder) {
$reminder->description = $this->helper->getReminderText($reminder);
}
);
return $dismissed;
}
/**
* @return Collection
*/
public function getExpiredReminders()
{
$expired = Auth::user()->reminders()
->where('notnow', 0)
->where('active', 1)
->where(
function (Builder $q) {
$today = new Carbon;
$q->where('startdate', '>', $today->format('Y-m-d 00:00:00'));
$q->orWhere('enddate', '<', $today->format('Y-m-d 00:00:00'));
}
)->get();
$expired->each(
function (Reminder $reminder) {
$reminder->description = $this->helper->getReminderText($reminder);
}
);
return $expired;
}
/**
* @return Collection
*/
public function getInactiveReminders()
{
$inactive = Auth::user()->reminders()
->where('active', 0)
->get();
$inactive->each(
function (Reminder $reminder) {
$reminder->description = $this->helper->getReminderText($reminder);
}
);
return $inactive;
}
}

View File

@ -1,35 +0,0 @@
<?php
namespace FireflyIII\Repositories\Reminder;
use Illuminate\Support\Collection;
/**
* Interface ReminderRepositoryInterface
*
* @package FireflyIII\Repositories\Reminder
*/
interface ReminderRepositoryInterface
{
/**
* @return Collection
*/
public function getActiveReminders();
/**
* @return Collection
*/
public function getDismissedReminders();
/**
* @return Collection
*/
public function getExpiredReminders();
/**
* @return Collection
*/
public function getInactiveReminders();
}

View File

@ -24,7 +24,6 @@ use Zizaco\Entrust\Traits\EntrustUserTrait;
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Budget[] $budgets
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Category[] $categories
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Preference[] $preferences
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Reminder[] $reminders
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\TransactionJournal[] $transactionjournals
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\User whereId($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\User whereCreatedAt($value)
@ -123,14 +122,6 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon
return $this->hasMany('FireflyIII\Models\Preference');
}
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function reminders()
{
return $this->hasMany('FireflyIII\Models\Reminder');
}
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/

View File

@ -55,35 +55,6 @@ class FireflyValidator extends Validator
}
/**
* @return bool
*/
public function validatePiggyBankReminder()
{
$array = $this->data;
// no reminder? dont care.
if (!isset($array['remind_me'])) {
return true;
}
// get or set start date & target date:
$startDate = isset($array['startdate']) ? new Carbon($array['startdate']) : new Carbon;
$targetDate = isset($array['targetdate']) && strlen($array['targetdate']) > 0 ? new Carbon($array['targetdate']) : null;
// target date is null? reminder period is always good.
if ($array['remind_me'] == '1' && is_null($targetDate)) {
return true;
}
$nextReminder = Navigation::addPeriod($startDate, $array['reminder'], 0);
// reminder is beyond target?
if ($nextReminder > $targetDate) {
return false;
}
return true;
}
/**
* @param $attribute
* @param $value

View File

@ -0,0 +1,41 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
/**
* Class ChangesForV3451
*/
class ChangesForV3451 extends Migration
{
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table(
'piggy_banks', function (Blueprint $table) {
$table->smallInteger('reminder_skip')->unsigned();
$table->boolean('remind_me');
}
);
}
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table(
'piggy_banks', function (Blueprint $table) {
//$table->dropColumn('reminder_skip');
$table->dropColumn('remind_me');
}
);
}
}

View File

@ -88,7 +88,6 @@ class TestDataSeeder extends Seeder
$this->createBudgets();
$this->createCategories();
$this->createPiggyBanks();
$this->createReminders();
$this->createBills();
$this->createExpenseAccounts();
$this->createRevenueAccounts();
@ -264,9 +263,6 @@ class TestDataSeeder extends Seeder
'targetamount' => 2000,
'startdate' => $this->som,
'targetdate' => null,
'reminder' => null,
'reminder_skip' => 0,
'remind_me' => 0,
'order' => 0,
]
);
@ -281,9 +277,6 @@ class TestDataSeeder extends Seeder
'targetamount' => 2000,
'startdate' => $this->som,
'targetdate' => $end,
'reminder' => null,
'reminder_skip' => 0,
'remind_me' => 0,
'order' => 0,
]
);
@ -292,7 +285,6 @@ class TestDataSeeder extends Seeder
/*
* New: create no less than eight piggy banks that
* create all sorts of reminders
*/
$list = ['week', 'quarter', 'month', 'year'];
$nextYear = clone $this->_startOfMonth;
@ -306,9 +298,6 @@ class TestDataSeeder extends Seeder
'targetamount' => 1000,
'startdate' => $this->som,
'targetdate' => $nextYear,
'reminder' => $entry,
'reminder_skip' => 0,
'remind_me' => 1,
'order' => 0,
]
);
@ -319,9 +308,6 @@ class TestDataSeeder extends Seeder
'targetamount' => 1000,
'startdate' => $this->som,
'targetdate' => null,
'reminder' => $entry,
'reminder_skip' => 0,
'remind_me' => 1,
'order' => 0,
]
);
@ -348,14 +334,6 @@ class TestDataSeeder extends Seeder
return null;
}
/**
*
*/
public function createReminders()
{
}
/**
*
*/

View File

@ -87,7 +87,7 @@ var defaultBarChartOptions = {
},
fontName: 'Roboto',
fontSize: 11,
colors: ["#4285f4", "#db4437", "#f4b400", "#0f9d58", "#ab47bc", "#00acc1", "#ff7043", "#9e9d24", "#5c6bc0", "#f06292", "#00796b", "#c2185b"],
colors: ["#357ca5", "#008d4c", "#db8b0b", "#ca195a", "#555299", "#4285f4", "#db4437", "#f4b400", "#0f9d58", "#ab47bc", "#00acc1", "#ff7043", "#9e9d24", "#5c6bc0", "#f06292", "#00796b", "#c2185b"],
vAxis: {
textStyle: {
color: '#838383'
@ -124,6 +124,7 @@ var defaultComboChartOptions = {
format: '\u20AC #'
},
fontName: 'Roboto',
colors: ["#357ca5", "#008d4c", "#db8b0b", "#ca195a", "#555299", "#4285f4", "#db4437", "#f4b400", "#0f9d58", "#ab47bc", "#00acc1", "#ff7043", "#9e9d24", "#5c6bc0", "#f06292", "#00796b", "#c2185b"],
fontSize: 11,
legend: {
position: 'none'

View File

@ -33,10 +33,6 @@ return [
'edit_bill' => 'Edit bill ":name"',
'delete_bill' => 'Delete bill ":name"',
// reminders
'reminders' => 'Reminders',
'reminder' => 'Reminder #:id',
// reports
'reports' => 'Reports',
'monthly_report' => 'Montly report for :date',

View File

@ -147,8 +147,6 @@ return [
// menu and titles, should be recycled as often as possible:
'toggleNavigation' => 'Toggle navigation',
'seeAllReminders' => 'See all reminders',
'reminders' => 'Reminders',
'currency' => 'Currency',
'preferences' => 'Preferences',
'logout' => 'Logout',
@ -272,10 +270,6 @@ return [
'start_date' => 'Start date',
'target_date' => 'Target date',
'no_target_date' => 'No target date',
'reminder' => 'Reminder',
'no_reminder' => 'No reminder',
'reminders_left' => 'Reminders left',
'expected_amount_per_reminder' => 'Expected amount per reminder',
'todo' => 'to do',
'table' => 'Table',
'piggy_bank_not_exists' => 'Piggy bank no longer exists.',
@ -293,9 +287,5 @@ return [
'tag_title_balancingAct' => 'Balancing act tags',
'tag_title_advancePayment' => 'Advance payment tags',
// reminders
'reminder_for_piggy' => 'Reminder for piggy bank ":name"',
'dismissed_reminder_for_piggy' => 'Dismissed reminder for piggy bank ":name"',
];

View File

@ -41,9 +41,7 @@ return [
'deletePermanently' => 'Delete permanently',
'cancel' => 'Cancel',
'targetdate' => 'Target date',
'remind_me' => 'Remind me',
'tag' => 'Tag',
'reminder' => 'Remind me every',
'under' => 'Under',
'symbol' => 'Symbol',
'code' => 'Code',

View File

@ -4,7 +4,6 @@ return [
/*
|--------------------------------------------------------------------------
| Password Reminder Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons

View File

@ -21,7 +21,6 @@ return [
"alpha_num" => "The :attribute may only contain letters and numbers.",
"array" => "The :attribute must be an array.",
"unique_for_user" => "There already is an entry with this :attribute.",
'piggy_bank_reminder' => 'The target date is too close to today to allow reminders.',
"before" => "The :attribute must be a date before :date.",
'unique_object_for_user' => 'This name is already in use',
"between" => [

View File

@ -33,10 +33,6 @@ return [
'edit_bill' => 'Wijzig contract ":name"',
'delete_bill' => 'Verwijder contract ":name"',
// reminders
'reminders' => 'Herinneringen',
'reminder' => 'Herinnering #:id',
// reports
'reports' => 'Overzichten',
'monthly_report' => 'Maandoverzicht :date',

View File

@ -156,8 +156,6 @@ return [
// menu and titles, should be recycled as often as possible:
'toggleNavigation' => 'Navigatie aan of uit',
'seeAllReminders' => 'Bekijk alle herinneringen',
'reminders' => 'Herinneringen',
'currency' => 'Munteenheden',
'preferences' => 'Voorkeuren',
'logout' => 'Uitloggen',
@ -281,10 +279,6 @@ return [
'start_date' => 'Startdatum',
'target_date' => 'Doeldatum',
'no_target_date' => 'Geen doeldatum',
'reminder' => 'Herinnering',
'no_reminder' => 'Geen herinnering',
'reminders_left' => 'Herinneringen te gaan',
'expected_amount_per_reminder' => 'Verwacht bedrag per herinnering',
'todo' => 'te doen',
'table' => 'Tabel',
'piggy_bank_not_exists' => 'Dit spaarpotje bestaat niet meer.',
@ -302,8 +296,4 @@ return [
'tag_title_balancingAct' => 'Balancing act tags',
'tag_title_advancePayment' => 'Advance payment tags',
// reminders
'reminder_for_piggy' => 'Herinnering voor spaarpotje ":name"',
'dismissed_reminder_for_piggy' => 'Genegeerde herinnering voor spaarpotje ":name"',
];

View File

@ -41,9 +41,7 @@ return [
'deletePermanently' => 'Verwijderen',
'cancel' => 'Annuleren',
'targetdate' => 'Doeldatum',
'remind_me' => 'Help me herinneren',
'tag' => 'Tag',
'reminder' => 'Herinner me elke',
'under' => 'Onder',
'symbol' => 'Symbool',
'code' => 'Code',

View File

@ -4,7 +4,6 @@ return [
/*
|--------------------------------------------------------------------------
| Password Reminder Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons

View File

@ -21,7 +21,6 @@ return [
"alpha_num" => "The :attribute may only contain letters and numbers.",
"array" => "The :attribute must be an array.",
"unique_for_user" => "There already is an entry with this :attribute.",
'piggy_bank_reminder' => 'The target date is too close to today to allow reminders.',
"before" => "The :attribute must be a date before :date.",
'unique_object_for_user' => 'Deze naam is al in gebruik',
"between" => [

View File

@ -140,5 +140,4 @@
</a>
</li>
<!-- reminders, again-->
</ul>

View File

@ -13,43 +13,6 @@
<!-- /.navbar-header -->
<ul class="nav navbar-top-links navbar-right hidden-xs">
<!-- reminders -->
{% if reminders|length > 0 %}
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#" aria-expanded="false">
<i class="fa fa-envelope fa-fw"></i> <i class="fa fa-caret-down"></i>
</a>
<ul class="dropdown-menu dropdown-messages">
{% for reminder in reminders %}
<li>
<a href="{{ route('reminders.show',reminder.id) }}">
<div>
<strong>
{{ reminder.remindersable.name }}
</strong>
<span class="pull-right text-muted">
<em>{{ reminder.startdate.diffForHumans }}</em>
</span>
</div>
<div>{{ reminder.description|raw }}</div>
</a>
</li>
<li class="divider"></li>
{% endfor %}
<li>
<a class="text-center" href="{{ route('reminders.index') }}">
<strong>{{ 'seeAllReminders'|_ }}</strong>
<i class="fa fa-angle-right"></i>
</a>
</li>
</ul>
<!-- /.dropdown-messages -->
</li>
{% endif %}
<!-- /.dropdown -->
<!-- new stuff create button -->
<li class="dropdown">
@ -80,7 +43,6 @@
<li><a href="{{ route('profile') }}"><i class="fa fa-user fa-fw"></i> {{ Auth.user.email }}</a></li>
<li><a href="{{ route('preferences') }}"><i class="fa fa-gear fa-fw"></i> {{ 'preferences'|_ }}</a></li>
<li><a href="{{ route('currency.index') }}"><i class="fa fa-usd fa-fw"></i> {{ 'currency'|_ }}</a></li>
<li><a href="{{ route('reminders.index') }}"><i class="fa fa-clock-o fa-fw"></i> {{ 'reminders'|_ }}</a></li>
<li class="divider"></li>
<li><a href="{{ route('logout') }}"><i class="fa fa-sign-out fa-fw"></i> {{ 'logout'|_ }}</a></li>
</ul>
@ -202,14 +164,10 @@
<li class="hidden-sm hidden-md hidden-lg">
<a class="{{ activeRoutePartial('currency') }}" href="{{ route('currency.index') }}"><i class="fa fa-usd fa-fw"></i> {{ 'currency'|_ }}</a>
</li>
<li class="hidden-sm hidden-md hidden-lg">
<a class="{{ activeRoutePartial('reminders') }}" href="{{ route('reminders.index') }}"><i class="fa fa-clock-o fa-fw"></i> {{ 'reminders'|_ }}</a>
</li>
<li class="hidden-sm hidden-md hidden-lg">
<a href="{{ route('logout') }}"><i class="fa fa-sign-out fa-fw"></i> {{ 'logout'|_ }}</a>
</li>
<!-- reminders, again-->
</ul>
</div>
<!-- /.sidebar-collapse -->

View File

@ -71,23 +71,6 @@
{% endif %}
</td>
</tr>
{% if piggyBank.reminder %}
<tr>
<td>{{ 'reminder'|_ }}</td>
<td>
{% if piggyBank.remind_me == 0 %}
<em>{{ 'no_reminder'|_ }}</em>
{% else %}
{{ 'every'|_ }}
{% if piggyBank.reminder_skip != 0 %}
{{ piggyBank.reminder_skip }}
{% else %}
{{ piggyBank.reminder }}(s)
{% endif %}
{% endif %}
</td>
</tr>
{% endif %}
</table>
</div>
</div>

View File

@ -6,7 +6,6 @@
{% block content %}
{{ Form.open({'class' : 'form-horizontal','id' : 'store','url' : route('transactions.store',what)}) }}
<input type="hidden" name="reminder_id" value="{{ Input.get('reminder_id') }}" />
<input type="hidden" name="what" value="{{ what }}" />
<div class="row">
<div class="col-lg-6 col-md-12 col-sm-12">

View File

@ -363,7 +363,6 @@ class PiggyBankControllerTest extends TestCase
'account_id' => $piggyBank->account_id,
'targetamount' => 100,
'targetdate' => '',
'reminder' => 'month',
'_token' => 'replaceMe'
];
@ -388,7 +387,6 @@ class PiggyBankControllerTest extends TestCase
'account_id' => $piggyBank->account_id,
'targetamount' => 100,
'targetdate' => '',
'reminder' => 'month',
'create_another' => 1,
'_token' => 'replaceMe'
];
@ -414,7 +412,6 @@ class PiggyBankControllerTest extends TestCase
'account_id' => $piggyBank->account_id,
'targetamount' => 200,
'targetdate' => '',
'reminder' => 'month',
'_token' => 'replaceMe'
];
@ -440,7 +437,6 @@ class PiggyBankControllerTest extends TestCase
'targetamount' => 200,
'targetdate' => '',
'return_to_edit' => 1,
'reminder' => 'month',
'_token' => 'replaceMe'
];

View File

@ -270,7 +270,6 @@ class TransactionControllerTest extends TestCase
$this->be($account->user);
$data = [
'reminder_id' => '',
'what' => 'withdrawal',
'description' => 'Bla bla bla',
'account_id' => $account->id,
@ -291,7 +290,6 @@ class TransactionControllerTest extends TestCase
// fake!
$repository->shouldReceive('store')->andReturn($journal);
$repository->shouldReceive('deactivateReminder')->andReturnNull();
$this->call('POST', '/transactions/store/withdrawal', $data);
@ -317,7 +315,6 @@ class TransactionControllerTest extends TestCase
$this->be($account->user);
$data = [
'reminder_id' => '',
'what' => 'withdrawal',
'description' => 'Bla bla bla',
'account_id' => $account->id,
@ -337,7 +334,6 @@ class TransactionControllerTest extends TestCase
// fake!
$repository->shouldReceive('store')->andReturn($journal);
$repository->shouldReceive('deactivateReminder')->andReturnNull();
$this->call('POST', '/transactions/store/withdrawal', $data);
@ -377,7 +373,6 @@ class TransactionControllerTest extends TestCase
$piggy->save();
$data = [
'reminder_id' => '',
'what' => 'transfer',
'description' => 'Bla bla bla',
'account_from_id' => $account->id,
@ -398,7 +393,6 @@ class TransactionControllerTest extends TestCase
// fake!
$repository->shouldReceive('store')->andReturn($journal);
$repository->shouldReceive('deactivateReminder')->andReturnNull();
$this->call('POST', '/transactions/store/withdrawal', $data);

View File

@ -124,28 +124,6 @@ FactoryMuffin::define(
]
);
FactoryMuffin::define(
'FireflyIII\Models\Reminder',
[
'user_id' => 'factory|FireflyIII\User',
'startdate' => 'date',
'enddate' => 'date',
'active' => 'boolean',
'notnow' => 'boolean',
'remindersable_id' => 'factory|FireflyIII\Models\Piggybank',
'remindersable_type' => 'FireflyIII\Models\Piggybank',
'metadata' => function () {
return [
'perReminder' => 100,
'rangesCount' => 0,
'ranges' => [],
'leftToSave' => 100,
];
},
'encrypted' => 1,
]
);
FactoryMuffin::define(
'FireflyIII\Models\Category',
@ -259,8 +237,6 @@ FactoryMuffin::define(
},
'startdate' => 'date',
'targetdate' => 'date',
'reminder_skip' => 0,
'remind_me' => 0,
'order' => 0,
]
);

View File

@ -1,218 +0,0 @@
<?php
use Carbon\Carbon;
use FireflyIII\Helpers\Reminders\ReminderHelper;
use FireflyIII\Models\PiggyBankRepetition;
use FireflyIII\Models\Transaction;
use League\FactoryMuffin\Facade as FactoryMuffin;
/**
* Class ReminderHelperTest
*
* @SuppressWarnings(PHPMD.TooManyMethods)
*/
class ReminderHelperTest extends TestCase
{
/**
* @var ReminderHelper
*/
protected $object;
/**
* Sets up the fixture, for example, opens a network connection.
* This method is called before a test is executed.
*/
public function setUp()
{
parent::setUp();
FactoryMuffin::create('FireflyIII\User');
$this->object = new ReminderHelper;
}
/**
* Tears down the fixture, for example, closes a network connection.
* This method is called after a test is executed.
*/
public function tearDown()
{
parent::tearDown();
}
/**
* @covers FireflyIII\Helpers\Reminders\ReminderHelper::createReminder
*/
public function testCreateReminder()
{
$account = FactoryMuffin::create('FireflyIII\Models\Account');
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
$piggyBank->account_id = $account->id;
$start = Carbon::now()->startOfMonth();
$end = Carbon::now()->endOfMonth()->startOfDay();
$piggyBank->save();
$this->be($account->user);
$result = $this->object->createReminder($piggyBank, $start, $end);
$this->assertEquals($piggyBank->targetamount, $result->metadata->leftToSave);
}
/**
* @covers FireflyIII\Helpers\Reminders\ReminderHelper::createReminder
*/
public function testCreateReminderHaveAlready()
{
$account = FactoryMuffin::create('FireflyIII\Models\Account');
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
$reminder = FactoryMuffin::create('FireflyIII\Models\Reminder');
$piggyBank->account_id = $account->id;
$start = Carbon::now()->startOfMonth();
$end = Carbon::now()->endOfMonth()->startOfDay();
$reminder->remindersable_id = $piggyBank->id;
$reminder->startdate = $start;
$reminder->enddate = $end;
$reminder->user_id = $account->user_id;
$reminder->save();
$piggyBank->save();
$this->be($account->user);
$result = $this->object->createReminder($piggyBank, $start, $end);
$this->assertEquals($reminder->id, $result->id);
}
/**
* @covers FireflyIII\Helpers\Reminders\ReminderHelper::createReminder
*/
public function testCreateReminderNoTarget()
{
$account = FactoryMuffin::create('FireflyIII\Models\Account');
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
$piggyBank->targetdate = null;
$piggyBank->account_id = $account->id;
$start = Carbon::now()->startOfMonth();
$end = Carbon::now()->endOfMonth()->startOfDay();
$piggyBank->save();
$this->be($account->user);
$result = $this->object->createReminder($piggyBank, $start, $end);
$this->assertEquals(0, $result->metadata->leftToSave);
}
/**
* @covers FireflyIII\Helpers\Reminders\ReminderHelper::createReminders
*/
public function testCreateReminders()
{
$account = FactoryMuffin::create('FireflyIII\Models\Account');
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
$piggyBank->account_id = $account->id;
$piggyBank->startdate = new Carbon('2015-01-01');
$piggyBank->targetdate = new Carbon('2015-12-31');
$piggyBank->reminder = 'monthly';
$piggyBank->remind_me = true;
$piggyBank->save();
$this->be($account->user);
$this->object->createReminders($piggyBank, new Carbon('2015-05-05'));
$this->assertCount(1, $piggyBank->reminders()->get());
}
/**
* @covers FireflyIII\Helpers\Reminders\ReminderHelper::getReminderRanges
*/
public function testGetReminderRangesNull()
{
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
$result = $this->object->getReminderRanges($piggyBank);
$this->assertEquals([], $result);
}
/**
* @covers FireflyIII\Helpers\Reminders\ReminderHelper::getReminderRanges
*/
public function testGetReminderRangesWithTargetDate()
{
/** @var \FireflyIII\Models\PiggyBank $piggyBank */
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
$piggyBank->startdate = new Carbon('2015-01-01');
$piggyBank->targetdate = new Carbon('2015-12-31');
$piggyBank->reminder = 'monthly';
$piggyBank->remind_me = true;
$piggyBank->save();
$result = $this->object->getReminderRanges($piggyBank, new Carbon('2015-04-01'));
// date is ignored, result should be 12:
$this->assertCount(12, $result);
}
/**
* @covers FireflyIII\Helpers\Reminders\ReminderHelper::getReminderRanges
*/
public function testGetReminderRangesWithoutTargetDate()
{
/** @var \FireflyIII\Models\PiggyBank $piggyBank */
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
$piggyBank->startdate = new Carbon('2015-01-01');
$piggyBank->targetdate = null;
$piggyBank->reminder = 'monthly';
$piggyBank->remind_me = true;
$piggyBank->save();
$result = $this->object->getReminderRanges($piggyBank, new Carbon('2015-12-31'));
// date is a year later, result should be 12:
$this->assertCount(12, $result);
}
/**
* @covers FireflyIII\Helpers\Reminders\ReminderHelper::getReminderText
*/
public function testGetReminderTextDate()
{
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
$reminder = FactoryMuffin::create('FireflyIII\Models\Reminder');
$piggyBank->targetdate = new Carbon;
$this->be($piggyBank->account->user);
$reminder->remindersable_id = $piggyBank->id;
Amount::shouldReceive('format')->andReturn('xx');
$result = $this->object->getReminderText($reminder);
$strpos = strpos($result, 'to fill this piggy bank on ');
$this->assertTrue(!($strpos === false));
}
/**
* @covers FireflyIII\Helpers\Reminders\ReminderHelper::getReminderText
*/
public function testGetReminderTextNoPiggy()
{
$reminder = FactoryMuffin::create('FireflyIII\Models\Reminder');
$reminder->remindersable_id = 2;
$this->assertEquals('Piggy bank no longer exists.', $this->object->getReminderText($reminder));
}
/**
* @covers FireflyIII\Helpers\Reminders\ReminderHelper::getReminderText
*/
public function testGetReminderTextNullDate()
{
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
$reminder = FactoryMuffin::create('FireflyIII\Models\Reminder');
$piggyBank->targetdate = null;
$piggyBank->save();
$reminder->remindersable_id = $piggyBank->id;
$reminder->save();
Amount::shouldReceive('format')->andReturn('xx');
$result = $this->object->getReminderText($reminder);
$strpos = strpos($result, 'Add money to this piggy bank to reach your target of');
$this->assertTrue(!($strpos === false));
}
}

View File

@ -1,6 +1,5 @@
<?php
use Carbon\Carbon;
use FireflyIII\Models\Reminder;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Journal\JournalRepository;
@ -37,21 +36,6 @@ class JournalRepositoryTest extends TestCase
parent::tearDown();
}
/**
* @covers FireflyIII\Repositories\Journal\JournalRepository::deactivateReminder
*/
public function testDeactivateReminder()
{
$reminder = FactoryMuffin::create('FireflyIII\Models\Reminder');
$reminder->active = 1;
$reminder->save();
$this->be($reminder->user);
$this->object->deactivateReminder($reminder->id);
$this->assertEquals(1, Reminder::where('id', $reminder->id)->where('active', 0)->count());
}
/**
* @covers FireflyIII\Repositories\Journal\JournalRepository::delete
* @covers FireflyIII\Providers\EventServiceProvider::boot

View File

@ -1,7 +1,6 @@
<?php
use Carbon\Carbon;
use FireflyIII\Models\PiggyBank;
use FireflyIII\Models\Reminder;
use FireflyIII\Repositories\PiggyBank\PiggyBankRepository;
use League\FactoryMuffin\Facade as FactoryMuffin;
@ -55,17 +54,10 @@ class PiggyBankRepositoryTest extends TestCase
public function testDestroy()
{
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
$reminder = FactoryMuffin::create('FireflyIII\Models\Reminder');
// attach reminders to the piggy bank:
$reminder->remindersable_id = $piggyBank->id;
$reminder->remindersable_type = 'FireflyIII\Models\PiggyBank';
$reminder->save();
$this->object->destroy($piggyBank);
$this->assertCount(0, PiggyBank::where('id', $piggyBank->id)->whereNull('deleted_at')->get());
$this->assertCount(0, Reminder::where('id', $reminder->id)->whereNull('deleted_at')->get());
}
@ -142,11 +134,9 @@ class PiggyBankRepositoryTest extends TestCase
$account = FactoryMuffin::create('FireflyIII\Models\Account');
$data = [
'remind_me' => 1,
'account_id' => $account->id,
'name' => 'Some piggy',
'targetamount' => 100,
'reminder_skip' => 0,
'order' => 1,
];
@ -166,12 +156,10 @@ class PiggyBankRepositoryTest extends TestCase
$account = FactoryMuffin::create('FireflyIII\Models\Account');
$data = [
'remind_me' => 1,
'account_id' => $account->id,
'name' => 'Some piggy',
'targetamount' => 100,
'create_another' => 1,
'reminder_skip' => 0,
'order' => 1,
];
@ -193,9 +181,7 @@ class PiggyBankRepositoryTest extends TestCase
'account_id' => $piggyBank->account_id,
'targetamount' => 101,
'targetdate' => new Carbon,
'reminder' => null,
'startdate' => new Carbon,
'remind_me' => '1'
];
$new = $this->object->update($piggyBank, $data);

View File

@ -1,152 +0,0 @@
<?php
use Carbon\Carbon;
use FireflyIII\Repositories\Reminder\ReminderRepository;
use League\FactoryMuffin\Facade as FactoryMuffin;
/**
* Generated by PHPUnit_SkeletonGenerator on 2015-05-05 at 19:19:32.
*/
class ReminderRepositoryTest extends TestCase
{
/**
* @var ReminderRepository
*/
protected $object;
/**
* Sets up the fixture, for example, opens a network connection.
* This method is called before a test is executed.
*/
public function setUp()
{
parent::setUp();
$helper = $this->mock('FireflyIII\Helpers\Reminders\ReminderHelperInterface');
$helper->shouldReceive('getReminderText')->andReturn('Hello!');
$this->object = new ReminderRepository;
}
/**
* Tears down the fixture, for example, closes a network connection.
* This method is called after a test is executed.
*/
public function tearDown()
{
parent::tearDown();
}
/**
* @covers FireflyIII\Repositories\Reminder\ReminderRepository::getActiveReminders
*/
public function testGetActiveReminders()
{
$yesterday = Carbon::now()->subDay();
$tomorrow = Carbon::now()->addDay();
$user = FactoryMuffin::create('FireflyIII\User');
for ($i = 0; $i < 3; $i++) {
$reminder = FactoryMuffin::create('FireflyIII\Models\Reminder');
$reminder->active = 1;
$reminder->notnow = 0;
$reminder->startdate = $yesterday;
$reminder->enddate = $tomorrow;
$reminder->user_id = $user->id;
$reminder->save();
}
$reminder = FactoryMuffin::create('FireflyIII\Models\Reminder');
$reminder->active = 0;
$reminder->notnow = 0;
$reminder->startdate = $yesterday;
$reminder->enddate = $tomorrow;
$reminder->user_id = $user->id;
$reminder->save();
$this->be($user);
$set = $this->object->getActiveReminders();
$this->assertCount(3, $set);
}
/**
* @covers FireflyIII\Repositories\Reminder\ReminderRepository::getDismissedReminders
*/
public function testGetDismissedReminders()
{
$user = FactoryMuffin::create('FireflyIII\User');
for ($i = 0; $i < 3; $i++) {
$reminder = FactoryMuffin::create('FireflyIII\Models\Reminder');
$reminder->notnow = 1;
$reminder->user_id = $user->id;
$reminder->save();
}
$reminder = FactoryMuffin::create('FireflyIII\Models\Reminder');
$reminder->notnow = 0;
$reminder->user_id = $user->id;
$reminder->save();
$this->be($user);
$set = $this->object->getDismissedReminders();
$this->assertCount(3, $set);
}
/**
* @covers FireflyIII\Repositories\Reminder\ReminderRepository::getExpiredReminders
*/
public function testGetExpiredReminders()
{
$yesterday = Carbon::now()->subDay();
$tomorrow = Carbon::now()->addDay();
$user = FactoryMuffin::create('FireflyIII\User');
for ($i = 0; $i < 3; $i++) {
$reminder = FactoryMuffin::create('FireflyIII\Models\Reminder');
$reminder->active = 1;
$reminder->notnow = 0;
$reminder->startdate = $tomorrow;
$reminder->enddate = $yesterday;
$reminder->user_id = $user->id;
$reminder->save();
}
$reminder = FactoryMuffin::create('FireflyIII\Models\Reminder');
$reminder->active = 0;
$reminder->notnow = 0;
$reminder->startdate = $tomorrow;
$reminder->enddate = $yesterday;
$reminder->user_id = $user->id;
$reminder->save();
$this->be($user);
$set = $this->object->getExpiredReminders();
$this->assertCount(3, $set);
}
/**
* @covers FireflyIII\Repositories\Reminder\ReminderRepository::getInactiveReminders
*/
public function testGetInactiveReminders()
{
$user = FactoryMuffin::create('FireflyIII\User');
for ($i = 0; $i < 3; $i++) {
$reminder = FactoryMuffin::create('FireflyIII\Models\Reminder');
$reminder->active = 0;
$reminder->user_id = $user->id;
$reminder->save();
}
$reminder = FactoryMuffin::create('FireflyIII\Models\Reminder');
$reminder->active = 1;
$reminder->user_id = $user->id;
$reminder->save();
$this->be($user);
$set = $this->object->getInactiveReminders();
$this->assertCount(3, $set);
}
}