mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Remove all references to reminders.
This commit is contained in:
parent
d00786c43f
commit
a465cb2191
@ -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))
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
@ -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);
|
||||
|
@ -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'));
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -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();
|
||||
|
||||
|
@ -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',
|
||||
|
||||
];
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
@ -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',
|
||||
|
||||
];
|
||||
|
@ -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',
|
||||
|
||||
];
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
|
@ -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');
|
||||
}
|
||||
|
||||
}
|
@ -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) {
|
||||
|
@ -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');
|
||||
|
||||
|
@ -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
|
||||
*
|
||||
|
@ -16,13 +16,6 @@ use Illuminate\Support\Collection;
|
||||
*/
|
||||
interface JournalRepositoryInterface
|
||||
{
|
||||
/**
|
||||
* @param int $reminderId
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function deactivateReminder($reminderId);
|
||||
|
||||
/**
|
||||
* @param TransactionJournal $journal
|
||||
*
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
@ -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();
|
||||
|
||||
}
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
|
41
database/migrations/2015_06_22_192411_changes_for_v3451.php
Normal file
41
database/migrations/2015_06_22_192411_changes_for_v3451.php
Normal 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');
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
@ -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()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
@ -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'
|
||||
|
@ -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',
|
||||
|
@ -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"',
|
||||
|
||||
|
||||
];
|
||||
|
@ -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',
|
||||
|
@ -4,7 +4,6 @@ return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reminder Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
|
@ -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" => [
|
||||
|
@ -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',
|
||||
|
@ -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"',
|
||||
|
||||
];
|
||||
|
@ -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',
|
||||
|
@ -4,7 +4,6 @@ return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reminder Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
|
@ -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" => [
|
||||
|
@ -140,5 +140,4 @@
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<!-- reminders, again-->
|
||||
</ul>
|
@ -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 -->
|
||||
|
@ -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>
|
||||
|
@ -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">
|
||||
|
@ -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'
|
||||
];
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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,
|
||||
]
|
||||
);
|
||||
|
@ -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));
|
||||
|
||||
}
|
||||
}
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user