mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-30 18:41:08 +00:00
Remove all references to reminders.
This commit is contained in:
@@ -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,
|
'account_id' => $piggyBank->account_id,
|
||||||
'targetamount' => $piggyBank->targetamount,
|
'targetamount' => $piggyBank->targetamount,
|
||||||
'targetdate' => $targetDate,
|
'targetdate' => $targetDate,
|
||||||
'reminder' => $piggyBank->reminder,
|
|
||||||
'remind_me' => intval($piggyBank->remind_me) == 1 && !is_null($piggyBank->reminder) ? true : false
|
|
||||||
];
|
];
|
||||||
Session::flash('preFilled', $preFilled);
|
Session::flash('preFilled', $preFilled);
|
||||||
Session::flash('gaEventCategory', 'piggy-banks');
|
Session::flash('gaEventCategory', 'piggy-banks');
|
||||||
@@ -300,11 +298,6 @@ class PiggyBankController extends Controller
|
|||||||
public function show(PiggyBankRepositoryInterface $repository, PiggyBank $piggyBank)
|
public function show(PiggyBankRepositoryInterface $repository, PiggyBank $piggyBank)
|
||||||
{
|
{
|
||||||
$events = $repository->getEvents($piggyBank);
|
$events = $repository->getEvents($piggyBank);
|
||||||
|
|
||||||
/*
|
|
||||||
* Number of reminders:
|
|
||||||
*/
|
|
||||||
|
|
||||||
$subTitle = e($piggyBank->name);
|
$subTitle = e($piggyBank->name);
|
||||||
|
|
||||||
return view('piggy-banks.show', compact('piggyBank', 'events', 'subTitle'));
|
return view('piggy-banks.show', compact('piggyBank', 'events', 'subTitle'));
|
||||||
@@ -326,8 +319,6 @@ class PiggyBankController extends Controller
|
|||||||
'account_id' => intval($request->get('account_id')),
|
'account_id' => intval($request->get('account_id')),
|
||||||
'targetamount' => floatval($request->get('targetamount')),
|
'targetamount' => floatval($request->get('targetamount')),
|
||||||
'targetdate' => strlen($request->get('targetdate')) > 0 ? new Carbon($request->get('targetdate')) : null,
|
'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);
|
$piggyBank = $repository->store($piggyBankData);
|
||||||
@@ -361,8 +352,6 @@ class PiggyBankController extends Controller
|
|||||||
'account_id' => intval($request->get('account_id')),
|
'account_id' => intval($request->get('account_id')),
|
||||||
'targetamount' => floatval($request->get('targetamount')),
|
'targetamount' => floatval($request->get('targetamount')),
|
||||||
'targetdate' => strlen($request->get('targetdate')) > 0 ? new Carbon($request->get('targetdate')) : null,
|
'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);
|
$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'))));
|
event(new JournalCreated($journal, intval($request->get('piggy_bank_id'))));
|
||||||
}
|
}
|
||||||
|
|
||||||
$repository->deactivateReminder($request->get('reminder_id'));
|
|
||||||
|
|
||||||
Session::flash('success', 'New transaction "' . $journal->description . '" stored!');
|
Session::flash('success', 'New transaction "' . $journal->description . '" stored!');
|
||||||
Preferences::mark();
|
Preferences::mark();
|
||||||
|
|
||||||
|
@@ -37,7 +37,6 @@ class Kernel extends HttpKernel
|
|||||||
'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
|
'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
|
||||||
'guest' => 'FireflyIII\Http\Middleware\RedirectIfAuthenticated',
|
'guest' => 'FireflyIII\Http\Middleware\RedirectIfAuthenticated',
|
||||||
'range' => 'FireflyIII\Http\Middleware\Range',
|
'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',
|
'what' => 'required|in:withdrawal,deposit,transfer',
|
||||||
'amount' => 'numeric|required|min:0.01',
|
'amount' => 'numeric|required|min:0.01',
|
||||||
'date' => 'required|date',
|
'date' => 'required|date',
|
||||||
'reminder_id' => 'numeric|exists:reminders,id',
|
|
||||||
'amount_currency_id' => 'required|exists:transaction_currencies,id',
|
'amount_currency_id' => 'required|exists:transaction_currencies,id',
|
||||||
|
|
||||||
];
|
];
|
||||||
|
@@ -42,9 +42,6 @@ class PiggyBankFormRequest extends Request
|
|||||||
'amount_currency_id' => 'exists:transaction_currencies,id',
|
'amount_currency_id' => 'exists:transaction_currencies,id',
|
||||||
'startdate' => 'date',
|
'startdate' => 'date',
|
||||||
'targetdate' => $targetDateRule,
|
'targetdate' => $targetDateRule,
|
||||||
'reminder' => 'in:day,week,quarter,month,year',
|
|
||||||
'reminder_skip' => 'integer|min:0|max:99',
|
|
||||||
'remind_me' => 'boolean|piggyBankReminder',
|
|
||||||
'order' => 'integer|min:1',
|
'order' => 'integer|min:1',
|
||||||
|
|
||||||
];
|
];
|
||||||
|
@@ -7,7 +7,6 @@ use FireflyIII\Models\Budget;
|
|||||||
use FireflyIII\Models\Category;
|
use FireflyIII\Models\Category;
|
||||||
use FireflyIII\Models\LimitRepetition;
|
use FireflyIII\Models\LimitRepetition;
|
||||||
use FireflyIII\Models\PiggyBank;
|
use FireflyIII\Models\PiggyBank;
|
||||||
use FireflyIII\Models\Reminder;
|
|
||||||
use FireflyIII\Models\Tag;
|
use FireflyIII\Models\Tag;
|
||||||
use FireflyIII\Models\TransactionCurrency;
|
use FireflyIII\Models\TransactionCurrency;
|
||||||
use FireflyIII\Models\TransactionJournal;
|
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
|
// reports
|
||||||
Breadcrumbs::register(
|
Breadcrumbs::register(
|
||||||
'reports.index', function (Generator $breadcrumbs) {
|
'reports.index', function (Generator $breadcrumbs) {
|
||||||
|
@@ -5,7 +5,6 @@ use FireflyIII\Models\Budget;
|
|||||||
use FireflyIII\Models\Category;
|
use FireflyIII\Models\Category;
|
||||||
use FireflyIII\Models\LimitRepetition;
|
use FireflyIII\Models\LimitRepetition;
|
||||||
use FireflyIII\Models\PiggyBank;
|
use FireflyIII\Models\PiggyBank;
|
||||||
use FireflyIII\Models\Reminder;
|
|
||||||
use FireflyIII\Models\Tag;
|
use FireflyIII\Models\Tag;
|
||||||
use FireflyIII\Models\TransactionCurrency;
|
use FireflyIII\Models\TransactionCurrency;
|
||||||
use FireflyIII\Models\TransactionJournal;
|
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(
|
Route::bind(
|
||||||
'limitrepetition', function ($value) {
|
'limitrepetition', function ($value) {
|
||||||
if (Auth::check()) {
|
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(
|
Route::bind(
|
||||||
'tag', function ($value) {
|
'tag', function ($value) {
|
||||||
if (Auth::check()) {
|
if (Auth::check()) {
|
||||||
@@ -185,7 +154,7 @@ Route::controllers(
|
|||||||
|
|
||||||
|
|
||||||
Route::group(
|
Route::group(
|
||||||
['middleware' => ['auth', 'range', 'reminders']], function () {
|
['middleware' => ['auth', 'range']], function () {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Home Controller
|
* Home Controller
|
||||||
@@ -355,14 +324,6 @@ Route::group(
|
|||||||
Route::post('/profile/delete-account', ['uses' => 'ProfileController@postDeleteAccount', 'as' => 'delete-account-post']);
|
Route::post('/profile/delete-account', ['uses' => 'ProfileController@postDeleteAccount', 'as' => 'delete-account-post']);
|
||||||
Route::post('/profile/change-password', ['uses' => 'ProfileController@postChangePassword', 'as' => 'change-password-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
|
* Report Controller
|
||||||
*/
|
*/
|
||||||
|
@@ -19,15 +19,11 @@ use Illuminate\Database\Eloquent\SoftDeletes;
|
|||||||
* @property string $targetamount_encrypted
|
* @property string $targetamount_encrypted
|
||||||
* @property \Carbon\Carbon $startdate
|
* @property \Carbon\Carbon $startdate
|
||||||
* @property \Carbon\Carbon $targetdate
|
* @property \Carbon\Carbon $targetdate
|
||||||
* @property string $reminder
|
|
||||||
* @property integer $reminder_skip
|
|
||||||
* @property boolean $remind_me
|
|
||||||
* @property integer $order
|
* @property integer $order
|
||||||
* @property boolean $encrypted
|
* @property boolean $encrypted
|
||||||
* @property-read \FireflyIII\Models\Account $account
|
* @property-read \FireflyIII\Models\Account $account
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\PiggyBankRepetition[] $piggyBankRepetitions
|
* @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\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 whereId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\PiggyBank whereCreatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\PiggyBank whereCreatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\PiggyBank whereUpdatedAt($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 whereTargetamountEncrypted($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\PiggyBank whereStartdate($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 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 whereOrder($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\PiggyBank whereEncrypted($value)
|
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\PiggyBank whereEncrypted($value)
|
||||||
* @property PiggyBankRepetition currentRep
|
* @property PiggyBankRepetition currentRep
|
||||||
@@ -50,7 +43,7 @@ class PiggyBank extends Model
|
|||||||
use SoftDeletes;
|
use SoftDeletes;
|
||||||
|
|
||||||
protected $fillable
|
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'];
|
protected $hidden = ['targetamount_encrypted', 'encrypted'];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -112,17 +105,6 @@ class PiggyBank extends Model
|
|||||||
return $value;
|
return $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param $value
|
|
||||||
*
|
|
||||||
* @return boolean
|
|
||||||
*/
|
|
||||||
public function getRemindMeAttribute($value)
|
|
||||||
{
|
|
||||||
return intval($value) == 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||||
*/
|
*/
|
||||||
@@ -131,14 +113,6 @@ class PiggyBank extends Model
|
|||||||
return $this->hasMany('FireflyIII\Models\PiggyBankEvent');
|
return $this->hasMany('FireflyIII\Models\PiggyBankEvent');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return \Illuminate\Database\Eloquent\Relations\MorphMany
|
|
||||||
*/
|
|
||||||
public function reminders()
|
|
||||||
{
|
|
||||||
return $this->morphMany('FireflyIII\Models\Reminder', 'remindersable');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param $value
|
* @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\LimitRepetition;
|
||||||
use FireflyIII\Models\PiggyBank;
|
use FireflyIII\Models\PiggyBank;
|
||||||
use FireflyIII\Models\PiggyBankRepetition;
|
use FireflyIII\Models\PiggyBankRepetition;
|
||||||
use FireflyIII\Models\Reminder;
|
|
||||||
use FireflyIII\Models\Transaction;
|
use FireflyIII\Models\Transaction;
|
||||||
use FireflyIII\Models\TransactionJournal;
|
use FireflyIII\Models\TransactionJournal;
|
||||||
use FireflyIII\Support\Facades\Navigation;
|
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(
|
Account::deleted(
|
||||||
function (Account $account) {
|
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\PiggyBank\PiggyBankRepositoryInterface', 'FireflyIII\Repositories\PiggyBank\PiggyBankRepository');
|
||||||
$this->app->bind('FireflyIII\Repositories\Currency\CurrencyRepositoryInterface', 'FireflyIII\Repositories\Currency\CurrencyRepository');
|
$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\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\Support\Search\SearchInterface', 'FireflyIII\Support\Search\Search');
|
||||||
|
|
||||||
|
|
||||||
$this->app->bind('FireflyIII\Helpers\Help\HelpInterface', 'FireflyIII\Helpers\Help\Help');
|
$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\ReportHelperInterface', 'FireflyIII\Helpers\Report\ReportHelper');
|
||||||
$this->app->bind('FireflyIII\Helpers\Report\ReportQueryInterface', 'FireflyIII\Helpers\Report\ReportQuery');
|
$this->app->bind('FireflyIII\Helpers\Report\ReportQueryInterface', 'FireflyIII\Helpers\Report\ReportQuery');
|
||||||
|
|
||||||
|
@@ -26,21 +26,6 @@ use Log;
|
|||||||
class JournalRepository implements JournalRepositoryInterface
|
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
|
* @param TransactionJournal $journal
|
||||||
*
|
*
|
||||||
|
@@ -16,13 +16,6 @@ use Illuminate\Support\Collection;
|
|||||||
*/
|
*/
|
||||||
interface JournalRepositoryInterface
|
interface JournalRepositoryInterface
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @param int $reminderId
|
|
||||||
*
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function deactivateReminder($reminderId);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param TransactionJournal $journal
|
* @param TransactionJournal $journal
|
||||||
*
|
*
|
||||||
|
@@ -116,7 +116,6 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
|
|||||||
*/
|
*/
|
||||||
public function store(array $data)
|
public function store(array $data)
|
||||||
{
|
{
|
||||||
$data['remind_me'] = isset($data['remind_me']) && $data['remind_me'] == '1' ? true : false;
|
|
||||||
$piggyBank = PiggyBank::create($data);
|
$piggyBank = PiggyBank::create($data);
|
||||||
|
|
||||||
return $piggyBank;
|
return $piggyBank;
|
||||||
@@ -130,21 +129,12 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
|
|||||||
*/
|
*/
|
||||||
public function update(PiggyBank $piggyBank, array $data)
|
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->name = $data['name'];
|
||||||
$piggyBank->account_id = intval($data['account_id']);
|
$piggyBank->account_id = intval($data['account_id']);
|
||||||
$piggyBank->targetamount = floatval($data['targetamount']);
|
$piggyBank->targetamount = floatval($data['targetamount']);
|
||||||
$piggyBank->targetdate = $data['targetdate'];
|
$piggyBank->targetdate = $data['targetdate'];
|
||||||
$piggyBank->reminder = $data['reminder'];
|
|
||||||
$piggyBank->startdate = $data['startdate'];
|
$piggyBank->startdate = $data['startdate'];
|
||||||
$piggyBank->remind_me = isset($data['remind_me']) && $data['remind_me'] == '1' ? 1 : 0;
|
|
||||||
|
|
||||||
$piggyBank->save();
|
$piggyBank->save();
|
||||||
|
|
||||||
|
@@ -4,7 +4,6 @@ namespace FireflyIII\Repositories\PiggyBank;
|
|||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use FireflyIII\Models\PiggyBankRepetition;
|
use FireflyIII\Models\PiggyBankRepetition;
|
||||||
use FireflyIII\Models\Reminder;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class PiggyBankPart
|
* Class PiggyBankPart
|
||||||
@@ -20,8 +19,6 @@ class PiggyBankPart
|
|||||||
public $cumulativeAmount;
|
public $cumulativeAmount;
|
||||||
/** @var float */
|
/** @var float */
|
||||||
public $currentamount;
|
public $currentamount;
|
||||||
/** @var Reminder */
|
|
||||||
public $reminder;
|
|
||||||
|
|
||||||
/** @var PiggyBankRepetition */
|
/** @var PiggyBankRepetition */
|
||||||
public $repetition;
|
public $repetition;
|
||||||
@@ -32,28 +29,6 @@ class PiggyBankPart
|
|||||||
/** @var Carbon */
|
/** @var Carbon */
|
||||||
public $targetdate;
|
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
|
* @return Carbon
|
||||||
*/
|
*/
|
||||||
@@ -102,14 +77,6 @@ class PiggyBankPart
|
|||||||
$this->repetition = $repetition;
|
$this->repetition = $repetition;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function hasReminder()
|
|
||||||
{
|
|
||||||
return !is_null($this->reminder);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return float|int
|
* @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\Budget[] $budgets
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Category[] $categories
|
* @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\Preference[] $preferences
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Reminder[] $reminders
|
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\TransactionJournal[] $transactionjournals
|
* @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 whereId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\User whereCreatedAt($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 $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
|
* @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 $attribute
|
||||||
* @param $value
|
* @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->createBudgets();
|
||||||
$this->createCategories();
|
$this->createCategories();
|
||||||
$this->createPiggyBanks();
|
$this->createPiggyBanks();
|
||||||
$this->createReminders();
|
|
||||||
$this->createBills();
|
$this->createBills();
|
||||||
$this->createExpenseAccounts();
|
$this->createExpenseAccounts();
|
||||||
$this->createRevenueAccounts();
|
$this->createRevenueAccounts();
|
||||||
@@ -264,9 +263,6 @@ class TestDataSeeder extends Seeder
|
|||||||
'targetamount' => 2000,
|
'targetamount' => 2000,
|
||||||
'startdate' => $this->som,
|
'startdate' => $this->som,
|
||||||
'targetdate' => null,
|
'targetdate' => null,
|
||||||
'reminder' => null,
|
|
||||||
'reminder_skip' => 0,
|
|
||||||
'remind_me' => 0,
|
|
||||||
'order' => 0,
|
'order' => 0,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
@@ -281,9 +277,6 @@ class TestDataSeeder extends Seeder
|
|||||||
'targetamount' => 2000,
|
'targetamount' => 2000,
|
||||||
'startdate' => $this->som,
|
'startdate' => $this->som,
|
||||||
'targetdate' => $end,
|
'targetdate' => $end,
|
||||||
'reminder' => null,
|
|
||||||
'reminder_skip' => 0,
|
|
||||||
'remind_me' => 0,
|
|
||||||
'order' => 0,
|
'order' => 0,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
@@ -292,7 +285,6 @@ class TestDataSeeder extends Seeder
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* New: create no less than eight piggy banks that
|
* New: create no less than eight piggy banks that
|
||||||
* create all sorts of reminders
|
|
||||||
*/
|
*/
|
||||||
$list = ['week', 'quarter', 'month', 'year'];
|
$list = ['week', 'quarter', 'month', 'year'];
|
||||||
$nextYear = clone $this->_startOfMonth;
|
$nextYear = clone $this->_startOfMonth;
|
||||||
@@ -306,9 +298,6 @@ class TestDataSeeder extends Seeder
|
|||||||
'targetamount' => 1000,
|
'targetamount' => 1000,
|
||||||
'startdate' => $this->som,
|
'startdate' => $this->som,
|
||||||
'targetdate' => $nextYear,
|
'targetdate' => $nextYear,
|
||||||
'reminder' => $entry,
|
|
||||||
'reminder_skip' => 0,
|
|
||||||
'remind_me' => 1,
|
|
||||||
'order' => 0,
|
'order' => 0,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
@@ -319,9 +308,6 @@ class TestDataSeeder extends Seeder
|
|||||||
'targetamount' => 1000,
|
'targetamount' => 1000,
|
||||||
'startdate' => $this->som,
|
'startdate' => $this->som,
|
||||||
'targetdate' => null,
|
'targetdate' => null,
|
||||||
'reminder' => $entry,
|
|
||||||
'reminder_skip' => 0,
|
|
||||||
'remind_me' => 1,
|
|
||||||
'order' => 0,
|
'order' => 0,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
@@ -348,14 +334,6 @@ class TestDataSeeder extends Seeder
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public function createReminders()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@@ -87,7 +87,7 @@ var defaultBarChartOptions = {
|
|||||||
},
|
},
|
||||||
fontName: 'Roboto',
|
fontName: 'Roboto',
|
||||||
fontSize: 11,
|
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: {
|
vAxis: {
|
||||||
textStyle: {
|
textStyle: {
|
||||||
color: '#838383'
|
color: '#838383'
|
||||||
@@ -124,6 +124,7 @@ var defaultComboChartOptions = {
|
|||||||
format: '\u20AC #'
|
format: '\u20AC #'
|
||||||
},
|
},
|
||||||
fontName: 'Roboto',
|
fontName: 'Roboto',
|
||||||
|
colors: ["#357ca5", "#008d4c", "#db8b0b", "#ca195a", "#555299", "#4285f4", "#db4437", "#f4b400", "#0f9d58", "#ab47bc", "#00acc1", "#ff7043", "#9e9d24", "#5c6bc0", "#f06292", "#00796b", "#c2185b"],
|
||||||
fontSize: 11,
|
fontSize: 11,
|
||||||
legend: {
|
legend: {
|
||||||
position: 'none'
|
position: 'none'
|
||||||
|
@@ -33,10 +33,6 @@ return [
|
|||||||
'edit_bill' => 'Edit bill ":name"',
|
'edit_bill' => 'Edit bill ":name"',
|
||||||
'delete_bill' => 'Delete bill ":name"',
|
'delete_bill' => 'Delete bill ":name"',
|
||||||
|
|
||||||
// reminders
|
|
||||||
'reminders' => 'Reminders',
|
|
||||||
'reminder' => 'Reminder #:id',
|
|
||||||
|
|
||||||
// reports
|
// reports
|
||||||
'reports' => 'Reports',
|
'reports' => 'Reports',
|
||||||
'monthly_report' => 'Montly report for :date',
|
'monthly_report' => 'Montly report for :date',
|
||||||
|
@@ -147,8 +147,6 @@ return [
|
|||||||
|
|
||||||
// menu and titles, should be recycled as often as possible:
|
// menu and titles, should be recycled as often as possible:
|
||||||
'toggleNavigation' => 'Toggle navigation',
|
'toggleNavigation' => 'Toggle navigation',
|
||||||
'seeAllReminders' => 'See all reminders',
|
|
||||||
'reminders' => 'Reminders',
|
|
||||||
'currency' => 'Currency',
|
'currency' => 'Currency',
|
||||||
'preferences' => 'Preferences',
|
'preferences' => 'Preferences',
|
||||||
'logout' => 'Logout',
|
'logout' => 'Logout',
|
||||||
@@ -272,10 +270,6 @@ return [
|
|||||||
'start_date' => 'Start date',
|
'start_date' => 'Start date',
|
||||||
'target_date' => 'Target date',
|
'target_date' => 'Target date',
|
||||||
'no_target_date' => 'No 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',
|
'todo' => 'to do',
|
||||||
'table' => 'Table',
|
'table' => 'Table',
|
||||||
'piggy_bank_not_exists' => 'Piggy bank no longer exists.',
|
'piggy_bank_not_exists' => 'Piggy bank no longer exists.',
|
||||||
@@ -293,9 +287,5 @@ return [
|
|||||||
'tag_title_balancingAct' => 'Balancing act tags',
|
'tag_title_balancingAct' => 'Balancing act tags',
|
||||||
'tag_title_advancePayment' => 'Advance payment 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',
|
'deletePermanently' => 'Delete permanently',
|
||||||
'cancel' => 'Cancel',
|
'cancel' => 'Cancel',
|
||||||
'targetdate' => 'Target date',
|
'targetdate' => 'Target date',
|
||||||
'remind_me' => 'Remind me',
|
|
||||||
'tag' => 'Tag',
|
'tag' => 'Tag',
|
||||||
'reminder' => 'Remind me every',
|
|
||||||
'under' => 'Under',
|
'under' => 'Under',
|
||||||
'symbol' => 'Symbol',
|
'symbol' => 'Symbol',
|
||||||
'code' => 'Code',
|
'code' => 'Code',
|
||||||
|
@@ -4,7 +4,6 @@ return [
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Password Reminder Language Lines
|
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
|
||||||
| The following language lines are the default lines which match reasons
|
| 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.",
|
"alpha_num" => "The :attribute may only contain letters and numbers.",
|
||||||
"array" => "The :attribute must be an array.",
|
"array" => "The :attribute must be an array.",
|
||||||
"unique_for_user" => "There already is an entry with this :attribute.",
|
"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.",
|
"before" => "The :attribute must be a date before :date.",
|
||||||
'unique_object_for_user' => 'This name is already in use',
|
'unique_object_for_user' => 'This name is already in use',
|
||||||
"between" => [
|
"between" => [
|
||||||
|
@@ -33,10 +33,6 @@ return [
|
|||||||
'edit_bill' => 'Wijzig contract ":name"',
|
'edit_bill' => 'Wijzig contract ":name"',
|
||||||
'delete_bill' => 'Verwijder contract ":name"',
|
'delete_bill' => 'Verwijder contract ":name"',
|
||||||
|
|
||||||
// reminders
|
|
||||||
'reminders' => 'Herinneringen',
|
|
||||||
'reminder' => 'Herinnering #:id',
|
|
||||||
|
|
||||||
// reports
|
// reports
|
||||||
'reports' => 'Overzichten',
|
'reports' => 'Overzichten',
|
||||||
'monthly_report' => 'Maandoverzicht :date',
|
'monthly_report' => 'Maandoverzicht :date',
|
||||||
|
@@ -156,8 +156,6 @@ return [
|
|||||||
|
|
||||||
// menu and titles, should be recycled as often as possible:
|
// menu and titles, should be recycled as often as possible:
|
||||||
'toggleNavigation' => 'Navigatie aan of uit',
|
'toggleNavigation' => 'Navigatie aan of uit',
|
||||||
'seeAllReminders' => 'Bekijk alle herinneringen',
|
|
||||||
'reminders' => 'Herinneringen',
|
|
||||||
'currency' => 'Munteenheden',
|
'currency' => 'Munteenheden',
|
||||||
'preferences' => 'Voorkeuren',
|
'preferences' => 'Voorkeuren',
|
||||||
'logout' => 'Uitloggen',
|
'logout' => 'Uitloggen',
|
||||||
@@ -281,10 +279,6 @@ return [
|
|||||||
'start_date' => 'Startdatum',
|
'start_date' => 'Startdatum',
|
||||||
'target_date' => 'Doeldatum',
|
'target_date' => 'Doeldatum',
|
||||||
'no_target_date' => 'Geen 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',
|
'todo' => 'te doen',
|
||||||
'table' => 'Tabel',
|
'table' => 'Tabel',
|
||||||
'piggy_bank_not_exists' => 'Dit spaarpotje bestaat niet meer.',
|
'piggy_bank_not_exists' => 'Dit spaarpotje bestaat niet meer.',
|
||||||
@@ -302,8 +296,4 @@ return [
|
|||||||
'tag_title_balancingAct' => 'Balancing act tags',
|
'tag_title_balancingAct' => 'Balancing act tags',
|
||||||
'tag_title_advancePayment' => 'Advance payment 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',
|
'deletePermanently' => 'Verwijderen',
|
||||||
'cancel' => 'Annuleren',
|
'cancel' => 'Annuleren',
|
||||||
'targetdate' => 'Doeldatum',
|
'targetdate' => 'Doeldatum',
|
||||||
'remind_me' => 'Help me herinneren',
|
|
||||||
'tag' => 'Tag',
|
'tag' => 'Tag',
|
||||||
'reminder' => 'Herinner me elke',
|
|
||||||
'under' => 'Onder',
|
'under' => 'Onder',
|
||||||
'symbol' => 'Symbool',
|
'symbol' => 'Symbool',
|
||||||
'code' => 'Code',
|
'code' => 'Code',
|
||||||
|
@@ -4,7 +4,6 @@ return [
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Password Reminder Language Lines
|
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
|
||||||
| The following language lines are the default lines which match reasons
|
| 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.",
|
"alpha_num" => "The :attribute may only contain letters and numbers.",
|
||||||
"array" => "The :attribute must be an array.",
|
"array" => "The :attribute must be an array.",
|
||||||
"unique_for_user" => "There already is an entry with this :attribute.",
|
"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.",
|
"before" => "The :attribute must be a date before :date.",
|
||||||
'unique_object_for_user' => 'Deze naam is al in gebruik',
|
'unique_object_for_user' => 'Deze naam is al in gebruik',
|
||||||
"between" => [
|
"between" => [
|
||||||
|
@@ -140,5 +140,4 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<!-- reminders, again-->
|
|
||||||
</ul>
|
</ul>
|
@@ -13,43 +13,6 @@
|
|||||||
|
|
||||||
<!-- /.navbar-header -->
|
<!-- /.navbar-header -->
|
||||||
<ul class="nav navbar-top-links navbar-right hidden-xs">
|
<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 -->
|
<!-- /.dropdown -->
|
||||||
<!-- new stuff create button -->
|
<!-- new stuff create button -->
|
||||||
<li class="dropdown">
|
<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('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('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('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 class="divider"></li>
|
||||||
<li><a href="{{ route('logout') }}"><i class="fa fa-sign-out fa-fw"></i> {{ 'logout'|_ }}</a></li>
|
<li><a href="{{ route('logout') }}"><i class="fa fa-sign-out fa-fw"></i> {{ 'logout'|_ }}</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -202,14 +164,10 @@
|
|||||||
<li class="hidden-sm hidden-md hidden-lg">
|
<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>
|
<a class="{{ activeRoutePartial('currency') }}" href="{{ route('currency.index') }}"><i class="fa fa-usd fa-fw"></i> {{ 'currency'|_ }}</a>
|
||||||
</li>
|
</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">
|
<li class="hidden-sm hidden-md hidden-lg">
|
||||||
<a href="{{ route('logout') }}"><i class="fa fa-sign-out fa-fw"></i> {{ 'logout'|_ }}</a>
|
<a href="{{ route('logout') }}"><i class="fa fa-sign-out fa-fw"></i> {{ 'logout'|_ }}</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<!-- reminders, again-->
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<!-- /.sidebar-collapse -->
|
<!-- /.sidebar-collapse -->
|
||||||
|
@@ -71,23 +71,6 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</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>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -6,7 +6,6 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{{ Form.open({'class' : 'form-horizontal','id' : 'store','url' : route('transactions.store',what)}) }}
|
{{ 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 }}" />
|
<input type="hidden" name="what" value="{{ what }}" />
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-6 col-md-12 col-sm-12">
|
<div class="col-lg-6 col-md-12 col-sm-12">
|
||||||
|
@@ -363,7 +363,6 @@ class PiggyBankControllerTest extends TestCase
|
|||||||
'account_id' => $piggyBank->account_id,
|
'account_id' => $piggyBank->account_id,
|
||||||
'targetamount' => 100,
|
'targetamount' => 100,
|
||||||
'targetdate' => '',
|
'targetdate' => '',
|
||||||
'reminder' => 'month',
|
|
||||||
'_token' => 'replaceMe'
|
'_token' => 'replaceMe'
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -388,7 +387,6 @@ class PiggyBankControllerTest extends TestCase
|
|||||||
'account_id' => $piggyBank->account_id,
|
'account_id' => $piggyBank->account_id,
|
||||||
'targetamount' => 100,
|
'targetamount' => 100,
|
||||||
'targetdate' => '',
|
'targetdate' => '',
|
||||||
'reminder' => 'month',
|
|
||||||
'create_another' => 1,
|
'create_another' => 1,
|
||||||
'_token' => 'replaceMe'
|
'_token' => 'replaceMe'
|
||||||
];
|
];
|
||||||
@@ -414,7 +412,6 @@ class PiggyBankControllerTest extends TestCase
|
|||||||
'account_id' => $piggyBank->account_id,
|
'account_id' => $piggyBank->account_id,
|
||||||
'targetamount' => 200,
|
'targetamount' => 200,
|
||||||
'targetdate' => '',
|
'targetdate' => '',
|
||||||
'reminder' => 'month',
|
|
||||||
'_token' => 'replaceMe'
|
'_token' => 'replaceMe'
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -440,7 +437,6 @@ class PiggyBankControllerTest extends TestCase
|
|||||||
'targetamount' => 200,
|
'targetamount' => 200,
|
||||||
'targetdate' => '',
|
'targetdate' => '',
|
||||||
'return_to_edit' => 1,
|
'return_to_edit' => 1,
|
||||||
'reminder' => 'month',
|
|
||||||
'_token' => 'replaceMe'
|
'_token' => 'replaceMe'
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@@ -270,7 +270,6 @@ class TransactionControllerTest extends TestCase
|
|||||||
$this->be($account->user);
|
$this->be($account->user);
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'reminder_id' => '',
|
|
||||||
'what' => 'withdrawal',
|
'what' => 'withdrawal',
|
||||||
'description' => 'Bla bla bla',
|
'description' => 'Bla bla bla',
|
||||||
'account_id' => $account->id,
|
'account_id' => $account->id,
|
||||||
@@ -291,7 +290,6 @@ class TransactionControllerTest extends TestCase
|
|||||||
|
|
||||||
// fake!
|
// fake!
|
||||||
$repository->shouldReceive('store')->andReturn($journal);
|
$repository->shouldReceive('store')->andReturn($journal);
|
||||||
$repository->shouldReceive('deactivateReminder')->andReturnNull();
|
|
||||||
|
|
||||||
|
|
||||||
$this->call('POST', '/transactions/store/withdrawal', $data);
|
$this->call('POST', '/transactions/store/withdrawal', $data);
|
||||||
@@ -317,7 +315,6 @@ class TransactionControllerTest extends TestCase
|
|||||||
$this->be($account->user);
|
$this->be($account->user);
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'reminder_id' => '',
|
|
||||||
'what' => 'withdrawal',
|
'what' => 'withdrawal',
|
||||||
'description' => 'Bla bla bla',
|
'description' => 'Bla bla bla',
|
||||||
'account_id' => $account->id,
|
'account_id' => $account->id,
|
||||||
@@ -337,7 +334,6 @@ class TransactionControllerTest extends TestCase
|
|||||||
|
|
||||||
// fake!
|
// fake!
|
||||||
$repository->shouldReceive('store')->andReturn($journal);
|
$repository->shouldReceive('store')->andReturn($journal);
|
||||||
$repository->shouldReceive('deactivateReminder')->andReturnNull();
|
|
||||||
|
|
||||||
|
|
||||||
$this->call('POST', '/transactions/store/withdrawal', $data);
|
$this->call('POST', '/transactions/store/withdrawal', $data);
|
||||||
@@ -377,7 +373,6 @@ class TransactionControllerTest extends TestCase
|
|||||||
$piggy->save();
|
$piggy->save();
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'reminder_id' => '',
|
|
||||||
'what' => 'transfer',
|
'what' => 'transfer',
|
||||||
'description' => 'Bla bla bla',
|
'description' => 'Bla bla bla',
|
||||||
'account_from_id' => $account->id,
|
'account_from_id' => $account->id,
|
||||||
@@ -398,7 +393,6 @@ class TransactionControllerTest extends TestCase
|
|||||||
|
|
||||||
// fake!
|
// fake!
|
||||||
$repository->shouldReceive('store')->andReturn($journal);
|
$repository->shouldReceive('store')->andReturn($journal);
|
||||||
$repository->shouldReceive('deactivateReminder')->andReturnNull();
|
|
||||||
|
|
||||||
|
|
||||||
$this->call('POST', '/transactions/store/withdrawal', $data);
|
$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(
|
FactoryMuffin::define(
|
||||||
'FireflyIII\Models\Category',
|
'FireflyIII\Models\Category',
|
||||||
@@ -259,8 +237,6 @@ FactoryMuffin::define(
|
|||||||
},
|
},
|
||||||
'startdate' => 'date',
|
'startdate' => 'date',
|
||||||
'targetdate' => 'date',
|
'targetdate' => 'date',
|
||||||
'reminder_skip' => 0,
|
|
||||||
'remind_me' => 0,
|
|
||||||
'order' => 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
|
<?php
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use FireflyIII\Models\Reminder;
|
|
||||||
use FireflyIII\Models\Transaction;
|
use FireflyIII\Models\Transaction;
|
||||||
use FireflyIII\Models\TransactionJournal;
|
use FireflyIII\Models\TransactionJournal;
|
||||||
use FireflyIII\Repositories\Journal\JournalRepository;
|
use FireflyIII\Repositories\Journal\JournalRepository;
|
||||||
@@ -37,21 +36,6 @@ class JournalRepositoryTest extends TestCase
|
|||||||
parent::tearDown();
|
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\Repositories\Journal\JournalRepository::delete
|
||||||
* @covers FireflyIII\Providers\EventServiceProvider::boot
|
* @covers FireflyIII\Providers\EventServiceProvider::boot
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use FireflyIII\Models\PiggyBank;
|
use FireflyIII\Models\PiggyBank;
|
||||||
use FireflyIII\Models\Reminder;
|
|
||||||
use FireflyIII\Repositories\PiggyBank\PiggyBankRepository;
|
use FireflyIII\Repositories\PiggyBank\PiggyBankRepository;
|
||||||
use League\FactoryMuffin\Facade as FactoryMuffin;
|
use League\FactoryMuffin\Facade as FactoryMuffin;
|
||||||
|
|
||||||
@@ -55,17 +54,10 @@ class PiggyBankRepositoryTest extends TestCase
|
|||||||
public function testDestroy()
|
public function testDestroy()
|
||||||
{
|
{
|
||||||
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
$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->object->destroy($piggyBank);
|
||||||
|
|
||||||
$this->assertCount(0, PiggyBank::where('id', $piggyBank->id)->whereNull('deleted_at')->get());
|
$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');
|
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'remind_me' => 1,
|
|
||||||
'account_id' => $account->id,
|
'account_id' => $account->id,
|
||||||
'name' => 'Some piggy',
|
'name' => 'Some piggy',
|
||||||
'targetamount' => 100,
|
'targetamount' => 100,
|
||||||
'reminder_skip' => 0,
|
|
||||||
'order' => 1,
|
'order' => 1,
|
||||||
|
|
||||||
];
|
];
|
||||||
@@ -166,12 +156,10 @@ class PiggyBankRepositoryTest extends TestCase
|
|||||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'remind_me' => 1,
|
|
||||||
'account_id' => $account->id,
|
'account_id' => $account->id,
|
||||||
'name' => 'Some piggy',
|
'name' => 'Some piggy',
|
||||||
'targetamount' => 100,
|
'targetamount' => 100,
|
||||||
'create_another' => 1,
|
'create_another' => 1,
|
||||||
'reminder_skip' => 0,
|
|
||||||
'order' => 1,
|
'order' => 1,
|
||||||
|
|
||||||
];
|
];
|
||||||
@@ -193,9 +181,7 @@ class PiggyBankRepositoryTest extends TestCase
|
|||||||
'account_id' => $piggyBank->account_id,
|
'account_id' => $piggyBank->account_id,
|
||||||
'targetamount' => 101,
|
'targetamount' => 101,
|
||||||
'targetdate' => new Carbon,
|
'targetdate' => new Carbon,
|
||||||
'reminder' => null,
|
|
||||||
'startdate' => new Carbon,
|
'startdate' => new Carbon,
|
||||||
'remind_me' => '1'
|
|
||||||
];
|
];
|
||||||
|
|
||||||
$new = $this->object->update($piggyBank, $data);
|
$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);
|
|
||||||
}
|
|
||||||
}
|
|
Reference in New Issue
Block a user