mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
This will be the first release!
This commit is contained in:
parent
c7f070a2d1
commit
c4f42a604f
@ -14,7 +14,7 @@ class AccountController extends \BaseController
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param ARI $repository
|
* @param ARI $repository
|
||||||
* @param AI $accounts
|
* @param AI $accounts
|
||||||
*/
|
*/
|
||||||
public function __construct(ARI $repository, AI $accounts)
|
public function __construct(ARI $repository, AI $accounts)
|
||||||
{
|
{
|
||||||
@ -40,7 +40,9 @@ class AccountController extends \BaseController
|
|||||||
$accountType = $account->accountType()->first();
|
$accountType = $account->accountType()->first();
|
||||||
|
|
||||||
if ($accountType->description == 'Initial balance account' || $accountType->description == 'Cash account') {
|
if ($accountType->description == 'Initial balance account' || $accountType->description == 'Cash account') {
|
||||||
return \View::make('error')->with('message', 'Cannot edit this account type (' . $accountType->description . ').');
|
return \View::make('error')->with(
|
||||||
|
'message', 'Cannot edit this account type (' . $accountType->description . ').'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return View::make('accounts.delete')->with('account', $account);
|
return View::make('accounts.delete')->with('account', $account);
|
||||||
@ -56,7 +58,9 @@ class AccountController extends \BaseController
|
|||||||
$accountType = $account->accountType()->first();
|
$accountType = $account->accountType()->first();
|
||||||
|
|
||||||
if ($accountType->description == 'Initial balance account' || $accountType->description == 'Cash account') {
|
if ($accountType->description == 'Initial balance account' || $accountType->description == 'Cash account') {
|
||||||
return View::make('error')->with('message', 'Cannot edit this account type (' . $accountType->description . ').');
|
return View::make('error')->with(
|
||||||
|
'message', 'Cannot edit this account type (' . $accountType->description . ').'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
$result = $this->_repository->destroy($account);
|
$result = $this->_repository->destroy($account);
|
||||||
if ($result === true) {
|
if ($result === true) {
|
||||||
@ -79,7 +83,9 @@ class AccountController extends \BaseController
|
|||||||
$accountType = $account->accountType()->first();
|
$accountType = $account->accountType()->first();
|
||||||
|
|
||||||
if ($accountType->description == 'Initial balance account' || $accountType->description == 'Cash account') {
|
if ($accountType->description == 'Initial balance account' || $accountType->description == 'Cash account') {
|
||||||
return View::make('error')->with('message', 'Cannot edit this account type (' . $accountType->description . ').');
|
return View::make('error')->with(
|
||||||
|
'message', 'Cannot edit this account type (' . $accountType->description . ').'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
$openingBalance = $this->_accounts->openingBalanceTransaction($account);
|
$openingBalance = $this->_accounts->openingBalanceTransaction($account);
|
||||||
|
|
||||||
@ -106,7 +112,9 @@ class AccountController extends \BaseController
|
|||||||
{
|
{
|
||||||
$accountType = $account->accountType()->first();
|
$accountType = $account->accountType()->first();
|
||||||
if ($accountType->description == 'Initial balance account' || $accountType->description == 'Cash account') {
|
if ($accountType->description == 'Initial balance account' || $accountType->description == 'Cash account') {
|
||||||
return View::make('error')->with('message', 'Cannot show this account type (' . $accountType->description . ').');
|
return View::make('error')->with(
|
||||||
|
'message', 'Cannot show this account type (' . $accountType->description . ').'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$show = $this->_accounts->show($account, 40);
|
$show = $this->_accounts->show($account, 40);
|
||||||
@ -148,7 +156,9 @@ class AccountController extends \BaseController
|
|||||||
{
|
{
|
||||||
$accountType = $account->accountType()->first();
|
$accountType = $account->accountType()->first();
|
||||||
if ($accountType->description == 'Initial balance account' || $accountType->description == 'Cash account') {
|
if ($accountType->description == 'Initial balance account' || $accountType->description == 'Cash account') {
|
||||||
return View::make('error')->with('message', 'Cannot show this account type (' . $accountType->description . ').');
|
return View::make('error')->with(
|
||||||
|
'message', 'Cannot show this account type (' . $accountType->description . ').'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
$account = $this->_repository->update($account, Input::all());
|
$account = $this->_repository->update($account, Input::all());
|
||||||
if ($account->validate()) {
|
if ($account->validate()) {
|
||||||
|
@ -9,10 +9,12 @@ class BaseController extends Controller
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public function __construct() {
|
public function __construct()
|
||||||
|
{
|
||||||
\Event::fire('limits.check');
|
\Event::fire('limits.check');
|
||||||
\Event::fire('piggybanks.check');
|
\Event::fire('piggybanks.check');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setup the layout used by the controller.
|
* Setup the layout used by the controller.
|
||||||
*
|
*
|
||||||
|
@ -50,7 +50,7 @@ class BudgetController extends BaseController
|
|||||||
*/
|
*/
|
||||||
public function destroy(Budget $budget)
|
public function destroy(Budget $budget)
|
||||||
{
|
{
|
||||||
Event::fire('budgets.destroy',[$budget]); // just before deletion.
|
Event::fire('budgets.destroy', [$budget]); // just before deletion.
|
||||||
$result = $this->_repository->destroy($budget);
|
$result = $this->_repository->destroy($budget);
|
||||||
if ($result === true) {
|
if ($result === true) {
|
||||||
Session::flash('success', 'The budget was deleted.');
|
Session::flash('success', 'The budget was deleted.');
|
||||||
@ -133,13 +133,13 @@ class BudgetController extends BaseController
|
|||||||
$filters[] = 'no_envelope';
|
$filters[] = 'no_envelope';
|
||||||
} else {
|
} else {
|
||||||
// grab all limit repetitions, order them, show them:
|
// grab all limit repetitions, order them, show them:
|
||||||
$repetitions = $this->_budgets->organizeRepetitions($budget,$useSessionDates);
|
$repetitions = $this->_budgets->organizeRepetitions($budget, $useSessionDates);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return View::make('budgets.show')->with('budget', $budget)->with('repetitions', $repetitions)->with(
|
return View::make('budgets.show')->with('budget', $budget)->with('repetitions', $repetitions)->with(
|
||||||
'filters', $filters
|
'filters', $filters
|
||||||
)->with('highlight', Input::get('highlight'))->with('useSessionDates',$useSessionDates);
|
)->with('highlight', Input::get('highlight'))->with('useSessionDates', $useSessionDates);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -150,7 +150,7 @@ class BudgetController extends BaseController
|
|||||||
|
|
||||||
$budget = $this->_repository->store(Input::all());
|
$budget = $this->_repository->store(Input::all());
|
||||||
if ($budget->validate()) {
|
if ($budget->validate()) {
|
||||||
Event::fire('budgets.store',[$budget]);
|
Event::fire('budgets.store', [$budget]);
|
||||||
Session::flash('success', 'Budget created!');
|
Session::flash('success', 'Budget created!');
|
||||||
|
|
||||||
if (Input::get('create') == '1') {
|
if (Input::get('create') == '1') {
|
||||||
@ -179,7 +179,7 @@ class BudgetController extends BaseController
|
|||||||
{
|
{
|
||||||
$budget = $this->_repository->update($budget, Input::all());
|
$budget = $this->_repository->update($budget, Input::all());
|
||||||
if ($budget->validate()) {
|
if ($budget->validate()) {
|
||||||
Event::fire('budgets.update',[$budget]);
|
Event::fire('budgets.update', [$budget]);
|
||||||
Session::flash('success', 'Budget "' . $budget->name . '" updated.');
|
Session::flash('success', 'Budget "' . $budget->name . '" updated.');
|
||||||
|
|
||||||
if (Input::get('from') == 'date') {
|
if (Input::get('from') == 'date') {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Firefly\Helper\Preferences\PreferencesHelperInterface as PHI;
|
use Firefly\Helper\Preferences\PreferencesHelperInterface as PHI;
|
||||||
use Firefly\Storage\Account\AccountRepositoryInterface as ARI;
|
use Firefly\Storage\Account\AccountRepositoryInterface as ARI;
|
||||||
use Firefly\Storage\Budget\BudgetRepositoryInterface as BRI;
|
use Firefly\Storage\Reminder\ReminderRepositoryInterface as RRI;
|
||||||
use Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface as TJRI;
|
use Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface as TJRI;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -13,20 +13,14 @@ class HomeController extends BaseController
|
|||||||
protected $_accounts;
|
protected $_accounts;
|
||||||
protected $_preferences;
|
protected $_preferences;
|
||||||
protected $_journal;
|
protected $_journal;
|
||||||
protected $_budgets;
|
protected $_reminders;
|
||||||
|
|
||||||
/**
|
public function __construct(ARI $accounts, PHI $preferences, TJRI $journal, RRI $reminders)
|
||||||
* @param ARI $accounts
|
|
||||||
* @param PHI $preferences
|
|
||||||
* @param TJRI $journal
|
|
||||||
* @param BRI $budgets
|
|
||||||
*/
|
|
||||||
public function __construct(ARI $accounts, PHI $preferences, TJRI $journal, BRI $budgets)
|
|
||||||
{
|
{
|
||||||
$this->_accounts = $accounts;
|
$this->_accounts = $accounts;
|
||||||
$this->_preferences = $preferences;
|
$this->_preferences = $preferences;
|
||||||
$this->_journal = $journal;
|
$this->_journal = $journal;
|
||||||
$this->_budgets = $budgets;
|
$this->_reminders = $reminders;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -47,7 +41,7 @@ class HomeController extends BaseController
|
|||||||
|
|
||||||
\Event::fire('limits.check');
|
\Event::fire('limits.check');
|
||||||
\Event::fire('piggybanks.check');
|
\Event::fire('piggybanks.check');
|
||||||
|
\Event::fire('recurring.check');
|
||||||
|
|
||||||
|
|
||||||
// count, maybe we need some introducing text to show:
|
// count, maybe we need some introducing text to show:
|
||||||
@ -64,10 +58,9 @@ class HomeController extends BaseController
|
|||||||
$accounts = $this->_accounts->getByIds($frontpage->data);
|
$accounts = $this->_accounts->getByIds($frontpage->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$transactions = [];
|
$transactions = [];
|
||||||
foreach ($accounts as $account) {
|
foreach ($accounts as $account) {
|
||||||
$set = $this->_journal->getByAccountInDateRange($account, 15, $start, $end);
|
$set = $this->_journal->getByAccountInDateRange($account, 10, $start, $end);
|
||||||
if (count($set) > 0) {
|
if (count($set) > 0) {
|
||||||
$transactions[] = [$set, $account];
|
$transactions[] = [$set, $account];
|
||||||
}
|
}
|
||||||
@ -81,7 +74,13 @@ class HomeController extends BaseController
|
|||||||
$transactions = array_chunk($transactions, 3);
|
$transactions = array_chunk($transactions, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// get the users reminders:
|
||||||
|
|
||||||
|
$reminders = $this->_reminders->getCurrentRecurringReminders();
|
||||||
|
|
||||||
// build the home screen:
|
// build the home screen:
|
||||||
return View::make('index')->with('count', $count)->with('transactions', $transactions);
|
return View::make('index')->with('count', $count)->with('transactions', $transactions)->with(
|
||||||
|
'reminders', $reminders
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,6 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Carbon\Carbon;
|
|
||||||
use Firefly\Storage\Account\AccountRepositoryInterface as ARI;
|
use Firefly\Storage\Account\AccountRepositoryInterface as ARI;
|
||||||
use Firefly\Storage\Budget\BudgetRepositoryInterface as Bud;
|
use Firefly\Storage\Budget\BudgetRepositoryInterface as Bud;
|
||||||
use Firefly\Storage\Category\CategoryRepositoryInterface as Cat;
|
use Firefly\Storage\Category\CategoryRepositoryInterface as Cat;
|
||||||
|
@ -60,7 +60,7 @@ class LimitController extends BaseController
|
|||||||
*/
|
*/
|
||||||
public function destroy(\Limit $limit)
|
public function destroy(\Limit $limit)
|
||||||
{
|
{
|
||||||
Event::fire('limits.destroy',[$limit]); // before
|
Event::fire('limits.destroy', [$limit]); // before
|
||||||
$success = $this->_limits->destroy($limit);
|
$success = $this->_limits->destroy($limit);
|
||||||
|
|
||||||
if ($success) {
|
if ($success) {
|
||||||
@ -102,7 +102,7 @@ class LimitController extends BaseController
|
|||||||
$limit = $this->_limits->store(Input::all());
|
$limit = $this->_limits->store(Input::all());
|
||||||
if ($limit->validate()) {
|
if ($limit->validate()) {
|
||||||
Session::flash('success', 'Envelope created!');
|
Session::flash('success', 'Envelope created!');
|
||||||
Event::fire('limits.store',[$limit]);
|
Event::fire('limits.store', [$limit]);
|
||||||
if (Input::get('from') == 'date') {
|
if (Input::get('from') == 'date') {
|
||||||
return Redirect::route('budgets.index');
|
return Redirect::route('budgets.index');
|
||||||
} else {
|
} else {
|
||||||
@ -127,10 +127,10 @@ class LimitController extends BaseController
|
|||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
$limit = $this->_limits->update($limit,Input::all());
|
$limit = $this->_limits->update($limit, Input::all());
|
||||||
|
|
||||||
if ($limit->validate()) {
|
if ($limit->validate()) {
|
||||||
Event::fire('limits.update',[$limit]);
|
Event::fire('limits.update', [$limit]);
|
||||||
Session::flash('success', 'Limit saved!');
|
Session::flash('success', 'Limit saved!');
|
||||||
if (Input::get('from') == 'date') {
|
if (Input::get('from') == 'date') {
|
||||||
return Redirect::route('budgets.index');
|
return Redirect::route('budgets.index');
|
||||||
|
@ -192,7 +192,11 @@ class PiggybankController extends BaseController
|
|||||||
*/
|
*/
|
||||||
public function show(Piggybank $piggyBank)
|
public function show(Piggybank $piggyBank)
|
||||||
{
|
{
|
||||||
return View::make('piggybanks.show')->with('piggyBank', $piggyBank);
|
$leftOnAccount = $this->_repository->leftOnAccount($piggyBank->account);
|
||||||
|
$balance = $piggyBank->account->balance();
|
||||||
|
|
||||||
|
return View::make('piggybanks.show')->with('piggyBank', $piggyBank)->with('leftOnAccount', $leftOnAccount)
|
||||||
|
->with('balance', $balance);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -212,7 +216,7 @@ class PiggybankController extends BaseController
|
|||||||
$piggyBank = $this->_repository->store($data);
|
$piggyBank = $this->_repository->store($data);
|
||||||
if (!is_null($piggyBank->id)) {
|
if (!is_null($piggyBank->id)) {
|
||||||
Session::flash('success', 'New piggy bank "' . $piggyBank->name . '" created!');
|
Session::flash('success', 'New piggy bank "' . $piggyBank->name . '" created!');
|
||||||
Event::fire('piggybanks.store',[$piggyBank]);
|
Event::fire('piggybanks.store', [$piggyBank]);
|
||||||
|
|
||||||
return Redirect::route('piggybanks.index');
|
return Redirect::route('piggybanks.index');
|
||||||
|
|
||||||
@ -241,7 +245,7 @@ class PiggybankController extends BaseController
|
|||||||
$piggyBank = $this->_repository->store($data);
|
$piggyBank = $this->_repository->store($data);
|
||||||
if ($piggyBank->id) {
|
if ($piggyBank->id) {
|
||||||
Session::flash('success', 'New piggy bank "' . $piggyBank->name . '" created!');
|
Session::flash('success', 'New piggy bank "' . $piggyBank->name . '" created!');
|
||||||
Event::fire('piggybanks.store',[$piggyBank]);
|
Event::fire('piggybanks.store', [$piggyBank]);
|
||||||
|
|
||||||
return Redirect::route('piggybanks.index');
|
return Redirect::route('piggybanks.index');
|
||||||
|
|
||||||
@ -261,7 +265,7 @@ class PiggybankController extends BaseController
|
|||||||
$piggyBank = $this->_repository->update($piggyBank, Input::all());
|
$piggyBank = $this->_repository->update($piggyBank, Input::all());
|
||||||
if ($piggyBank->validate()) {
|
if ($piggyBank->validate()) {
|
||||||
Session::flash('success', 'Piggy bank "' . $piggyBank->name . '" updated.');
|
Session::flash('success', 'Piggy bank "' . $piggyBank->name . '" updated.');
|
||||||
Event::fire('piggybanks.update',[$piggyBank]);
|
Event::fire('piggybanks.update', [$piggyBank]);
|
||||||
|
|
||||||
return Redirect::route('piggybanks.index');
|
return Redirect::route('piggybanks.index');
|
||||||
} else {
|
} else {
|
||||||
|
@ -44,6 +44,7 @@ class RecurringController extends BaseController
|
|||||||
*/
|
*/
|
||||||
public function destroy(RecurringTransaction $recurringTransaction)
|
public function destroy(RecurringTransaction $recurringTransaction)
|
||||||
{
|
{
|
||||||
|
Event::fire('recurring.destroy', [$recurringTransaction]);
|
||||||
$result = $this->_repository->destroy($recurringTransaction);
|
$result = $this->_repository->destroy($recurringTransaction);
|
||||||
if ($result === true) {
|
if ($result === true) {
|
||||||
Session::flash('success', 'The recurring transaction was deleted.');
|
Session::flash('success', 'The recurring transaction was deleted.');
|
||||||
@ -96,6 +97,7 @@ class RecurringController extends BaseController
|
|||||||
$recurringTransaction = $this->_repository->store(Input::all());
|
$recurringTransaction = $this->_repository->store(Input::all());
|
||||||
if ($recurringTransaction->validate()) {
|
if ($recurringTransaction->validate()) {
|
||||||
Session::flash('success', 'Recurring transaction "' . $recurringTransaction->name . '" saved!');
|
Session::flash('success', 'Recurring transaction "' . $recurringTransaction->name . '" saved!');
|
||||||
|
Event::fire('recurring.store', [$recurringTransaction]);
|
||||||
if (Input::get('create') == '1') {
|
if (Input::get('create') == '1') {
|
||||||
return Redirect::route('recurring.create')->withInput();
|
return Redirect::route('recurring.create')->withInput();
|
||||||
} else {
|
} else {
|
||||||
@ -119,6 +121,7 @@ class RecurringController extends BaseController
|
|||||||
$recurringTransaction = $this->_repository->update($recurringTransaction, Input::all());
|
$recurringTransaction = $this->_repository->update($recurringTransaction, Input::all());
|
||||||
if ($recurringTransaction->errors()->count() == 0) {
|
if ($recurringTransaction->errors()->count() == 0) {
|
||||||
Session::flash('success', 'The recurring transaction has been updated.');
|
Session::flash('success', 'The recurring transaction has been updated.');
|
||||||
|
Event::fire('recurring.update', [$recurringTransaction]);
|
||||||
|
|
||||||
return Redirect::route('recurring.index');
|
return Redirect::route('recurring.index');
|
||||||
} else {
|
} else {
|
||||||
|
@ -189,14 +189,15 @@ class TransactionController extends BaseController
|
|||||||
Session::flash('success', 'Transaction "' . $journal->description . '" saved!');
|
Session::flash('success', 'Transaction "' . $journal->description . '" saved!');
|
||||||
|
|
||||||
// if reminder present, deactivate it:
|
// if reminder present, deactivate it:
|
||||||
if(Input::get('reminder')) {
|
if (Input::get('reminder')) {
|
||||||
/** @var \Firefly\Storage\Reminder\ReminderRepositoryInterface $reminders */
|
/** @var \Firefly\Storage\Reminder\ReminderRepositoryInterface $reminders */
|
||||||
$reminders = App::make('Firefly\Storage\Reminder\ReminderRepositoryInterface');
|
$reminders = App::make('Firefly\Storage\Reminder\ReminderRepositoryInterface');
|
||||||
$reminder = $reminders->find(Input::get('reminder'));
|
$reminder = $reminders->find(Input::get('reminder'));
|
||||||
$reminders->deactivate($reminder);
|
$reminders->deactivate($reminder);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// trigger the creation for recurring transactions.
|
||||||
|
|
||||||
if (Input::get('create') == '1') {
|
if (Input::get('create') == '1') {
|
||||||
return Redirect::route('transactions.create', [$what])->withInput();
|
return Redirect::route('transactions.create', [$what])->withInput();
|
||||||
} else {
|
} else {
|
||||||
|
@ -1,40 +1,42 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
|
||||||
class CreatePiggyEvents extends Migration {
|
class CreatePiggyEvents extends Migration
|
||||||
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function up()
|
public function up()
|
||||||
{
|
{
|
||||||
Schema::create('piggybank_events', function(Blueprint $table)
|
Schema::create(
|
||||||
{
|
'piggybank_events', function (Blueprint $table) {
|
||||||
$table->increments('id');
|
$table->increments('id');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
$table->integer('piggybank_id')->unsigned();
|
$table->integer('piggybank_id')->unsigned();
|
||||||
$table->date('date');
|
$table->date('date');
|
||||||
$table->decimal('amount', 10, 2);
|
$table->decimal('amount', 10, 2);
|
||||||
|
|
||||||
// connect instance to piggybank.
|
// connect instance to piggybank.
|
||||||
$table->foreign('piggybank_id')
|
$table->foreign('piggybank_id')
|
||||||
->references('id')->on('piggybanks')
|
->references('id')->on('piggybanks')
|
||||||
->onDelete('cascade');
|
->onDelete('cascade');
|
||||||
});
|
}
|
||||||
}
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reverse the migrations.
|
* Reverse the migrations.
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function down()
|
public function down()
|
||||||
{
|
{
|
||||||
Schema::drop('piggybank_events');
|
Schema::drop('piggybank_events');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,20 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
|
||||||
class CreateRemindersTable extends Migration {
|
class CreateRemindersTable extends Migration
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::drop('reminders');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
@ -16,8 +27,9 @@ class CreateRemindersTable extends Migration {
|
|||||||
'reminders', function (Blueprint $table) {
|
'reminders', function (Blueprint $table) {
|
||||||
$table->increments('id');
|
$table->increments('id');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
$table->string('class', 30);
|
$table->string('class', 40);
|
||||||
$table->integer('piggybank_id')->unsigned()->nullable();
|
$table->integer('piggybank_id')->unsigned()->nullable();
|
||||||
|
$table->integer('recurring_transaction_id')->unsigned()->nullable();
|
||||||
$table->integer('user_id')->unsigned();
|
$table->integer('user_id')->unsigned();
|
||||||
$table->date('startdate');
|
$table->date('startdate');
|
||||||
$table->date('enddate');
|
$table->date('enddate');
|
||||||
@ -29,6 +41,12 @@ class CreateRemindersTable extends Migration {
|
|||||||
->references('id')->on('piggybanks')
|
->references('id')->on('piggybanks')
|
||||||
->onDelete('set null');
|
->onDelete('set null');
|
||||||
|
|
||||||
|
// connect reminders to recurring transactions.
|
||||||
|
$table->foreign('recurring_transaction_id')
|
||||||
|
->references('id')->on('recurring_transactions')
|
||||||
|
->onDelete('set null');
|
||||||
|
|
||||||
|
|
||||||
// connect reminders to users
|
// connect reminders to users
|
||||||
$table->foreign('user_id')
|
$table->foreign('user_id')
|
||||||
->references('id')->on('users')
|
->references('id')->on('users')
|
||||||
@ -37,14 +55,4 @@ class CreateRemindersTable extends Migration {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Reverse the migrations.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
Schema::drop('reminders');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -110,8 +110,8 @@ class Budget implements BudgetInterface
|
|||||||
// get the limits:
|
// get the limits:
|
||||||
if ($useSessionDates) {
|
if ($useSessionDates) {
|
||||||
$limits = $budget->limits()->where('startdate', '>=', $sessionStart->format('Y-m-d'))->where(
|
$limits = $budget->limits()->where('startdate', '>=', $sessionStart->format('Y-m-d'))->where(
|
||||||
'startdate', '<=', $sessionEnd->format('Y-m-d')
|
'startdate', '<=', $sessionEnd->format('Y-m-d')
|
||||||
)->get();
|
)->get();
|
||||||
} else {
|
} else {
|
||||||
$limits = $budget->limits;
|
$limits = $budget->limits;
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,8 @@ interface BudgetInterface
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \Budget $budget
|
* @param \Budget $budget
|
||||||
* @param bool $useSessionDates
|
* @param bool $useSessionDates
|
||||||
|
*
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function organizeRepetitions(\Budget $budget, $useSessionDates = false);
|
public function organizeRepetitions(\Budget $budget, $useSessionDates = false);
|
||||||
|
@ -169,8 +169,8 @@ class Chart implements ChartInterface
|
|||||||
$amount = floatval($rep->amount);
|
$amount = floatval($rep->amount);
|
||||||
$spent = $rep->spent;
|
$spent = $rep->spent;
|
||||||
$color = $spent > $amount ? '#FF0000' : null;
|
$color = $spent > $amount ? '#FF0000' : null;
|
||||||
$data['series'][0]['data'][] = ['y' => $amount, 'id' => 'def'];
|
$data['series'][0]['data'][] = ['y' => $amount, 'id' => 'amount-' . $rep->id];
|
||||||
$data['series'][1]['data'][] = ['y' => $rep->spent, 'color' => $color, 'id' => 'abc'];
|
$data['series'][1]['data'][] = ['y' => $rep->spent, 'color' => $color, 'id' => 'spent-' . $rep->id];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,6 +64,29 @@ class Toolkit implements ToolkitInterface
|
|||||||
return [\Session::get('start'), \Session::get('end')];
|
return [\Session::get('start'), \Session::get('end')];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function getReminders()
|
||||||
|
{
|
||||||
|
// get reminders, for menu, mumble mumble:
|
||||||
|
$today = new Carbon;
|
||||||
|
$reminders = \Auth::user()->reminders()->where('class', 'PiggybankReminder')->validOn($today)->get();
|
||||||
|
|
||||||
|
/** @var \Reminder $reminder */
|
||||||
|
foreach ($reminders as $index => $reminder) {
|
||||||
|
if (\Session::has('dismissal-' . $reminder->id)) {
|
||||||
|
$time = \Session::get('dismissal-' . $reminder->id);
|
||||||
|
if ($time >= $today) {
|
||||||
|
unset($reminders[$index]);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\Session::put('reminderCount', count($reminders));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
@ -302,26 +325,4 @@ class Toolkit implements ToolkitInterface
|
|||||||
return $end;
|
return $end;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public function getReminders() {
|
|
||||||
// get reminders, for menu, mumble mumble:
|
|
||||||
$today = new Carbon;
|
|
||||||
$reminders = \Auth::user()->reminders()->validOn($today)->get();
|
|
||||||
|
|
||||||
/** @var \Reminder $reminder */
|
|
||||||
foreach($reminders as $index => $reminder) {
|
|
||||||
if(\Session::has('dismissal-' . $reminder->id)) {
|
|
||||||
$time = \Session::get('dismissal-' . $reminder->id);
|
|
||||||
if($time >= $today) {
|
|
||||||
unset($reminders[$index]);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
\Session::put('reminderCount',count($reminders));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
@ -40,7 +40,7 @@ class EloquentAccountRepository implements AccountRepositoryInterface
|
|||||||
$account = $this->findByName($name, $type);
|
$account = $this->findByName($name, $type);
|
||||||
if (!$account) {
|
if (!$account) {
|
||||||
$data = [
|
$data = [
|
||||||
'name' => $name,
|
'name' => $name,
|
||||||
'account_type' => $type
|
'account_type' => $type
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ class EloquentAccountRepository implements AccountRepositoryInterface
|
|||||||
{
|
{
|
||||||
// find the oldest transaction which also is a "Opening balance"
|
// find the oldest transaction which also is a "Opening balance"
|
||||||
$first = \Transaction::
|
$first = \Transaction::
|
||||||
leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
|
leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
|
||||||
->leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id')
|
->leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id')
|
||||||
->where('transaction_journals.user_id', \Auth::user()->id)
|
->where('transaction_journals.user_id', \Auth::user()->id)
|
||||||
->where('transaction_types.type', 'Opening balance')
|
->where('transaction_types.type', 'Opening balance')
|
||||||
@ -101,7 +101,7 @@ class EloquentAccountRepository implements AccountRepositoryInterface
|
|||||||
$journal->delete();
|
$journal->delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!is_null($initialbalanceAccount)) {
|
if (!is_null($initialbalanceAccount)) {
|
||||||
$initialbalanceAccount->delete();
|
$initialbalanceAccount->delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -306,8 +306,8 @@ class EloquentAccountRepository implements AccountRepositoryInterface
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \Account $account
|
* @param \Account $account
|
||||||
* @param int $amount
|
* @param int $amount
|
||||||
* @param Carbon $date
|
* @param Carbon $date
|
||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
* @SuppressWarnings(PHPMD.CamelCaseMethodName)
|
* @SuppressWarnings(PHPMD.CamelCaseMethodName)
|
||||||
|
@ -121,7 +121,7 @@ class EloquentBudgetRepository implements BudgetRepositoryInterface
|
|||||||
$limit->repeat_freq = $data['repeat_freq'];
|
$limit->repeat_freq = $data['repeat_freq'];
|
||||||
if ($limit->validate()) {
|
if ($limit->validate()) {
|
||||||
$limit->save();
|
$limit->save();
|
||||||
\Event::fire('limits.store',[$limit]);
|
\Event::fire('limits.store', [$limit]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($budget->validate()) {
|
if ($budget->validate()) {
|
||||||
|
@ -16,7 +16,7 @@ class EloquentCategoryRepository implements CategoryRepositoryInterface
|
|||||||
*/
|
*/
|
||||||
public function createOrFind($name)
|
public function createOrFind($name)
|
||||||
{
|
{
|
||||||
if(strlen($name) == 0) {
|
if (strlen($name) == 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
$category = $this->findByName($name);
|
$category = $this->findByName($name);
|
||||||
|
@ -28,7 +28,8 @@ class EloquentLimitRepository implements LimitRepositoryInterface
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \Limit $limit
|
* @param \Limit $limit
|
||||||
* @param $data
|
* @param $data
|
||||||
|
*
|
||||||
* @return mixed|void
|
* @return mixed|void
|
||||||
*/
|
*/
|
||||||
public function update(\Limit $limit, $data)
|
public function update(\Limit $limit, $data)
|
||||||
@ -39,6 +40,7 @@ class EloquentLimitRepository implements LimitRepositoryInterface
|
|||||||
$limit->amount = floatval($data['amount']);
|
$limit->amount = floatval($data['amount']);
|
||||||
|
|
||||||
$limit->save();
|
$limit->save();
|
||||||
|
|
||||||
return $limit;
|
return $limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,8 +59,8 @@ class EloquentLimitRepository implements LimitRepositoryInterface
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \Budget $budget
|
* @param \Budget $budget
|
||||||
* @param Carbon $start
|
* @param Carbon $start
|
||||||
* @param Carbon $end
|
* @param Carbon $end
|
||||||
*
|
*
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
@ -113,11 +115,11 @@ class EloquentLimitRepository implements LimitRepositoryInterface
|
|||||||
}
|
}
|
||||||
// find existing:
|
// find existing:
|
||||||
$count = \Limit::
|
$count = \Limit::
|
||||||
leftJoin('components', 'components.id', '=', 'limits.component_id')->where(
|
leftJoin('components', 'components.id', '=', 'limits.component_id')->where(
|
||||||
'components.user_id', \Auth::user()->id
|
'components.user_id', \Auth::user()->id
|
||||||
)->where('startdate', $date->format('Y-m-d'))->where('component_id', $data['budget_id'])->where(
|
)->where('startdate', $date->format('Y-m-d'))->where('component_id', $data['budget_id'])->where(
|
||||||
'repeat_freq', $data['period']
|
'repeat_freq', $data['period']
|
||||||
)->count();
|
)->count();
|
||||||
if ($count > 0) {
|
if ($count > 0) {
|
||||||
\Session::flash('error', 'There already is an entry for these parameters.');
|
\Session::flash('error', 'There already is an entry for these parameters.');
|
||||||
|
|
||||||
|
@ -21,7 +21,8 @@ interface LimitRepositoryInterface
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \Limit $limit
|
* @param \Limit $limit
|
||||||
* @param $data
|
* @param $data
|
||||||
|
*
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function update(\Limit $limit, $data);
|
public function update(\Limit $limit, $data);
|
||||||
|
@ -225,7 +225,6 @@ class EloquentPiggybankRepository implements PiggybankRepositoryInterface
|
|||||||
= isset($data['startdate']) && strlen($data['startdate']) > 0 ? new Carbon($data['startdate']) : null;
|
= isset($data['startdate']) && strlen($data['startdate']) > 0 ? new Carbon($data['startdate']) : null;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
foreach ($piggy->piggybankrepetitions()->get() as $rep) {
|
foreach ($piggy->piggybankrepetitions()->get() as $rep) {
|
||||||
$rep->delete();
|
$rep->delete();
|
||||||
}
|
}
|
||||||
|
@ -68,10 +68,12 @@ class EloquentRecurringTransactionRepository implements RecurringTransactionRepo
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \RecurringTransaction $recurringTransaction
|
* @param \RecurringTransaction $recurringTransaction
|
||||||
* @param $data
|
* @param $data
|
||||||
|
*
|
||||||
* @return mixed|void
|
* @return mixed|void
|
||||||
*/
|
*/
|
||||||
public function update(\RecurringTransaction $recurringTransaction, $data) {
|
public function update(\RecurringTransaction $recurringTransaction, $data)
|
||||||
|
{
|
||||||
$recurringTransaction->name = $data['name'];
|
$recurringTransaction->name = $data['name'];
|
||||||
$recurringTransaction->match = join(' ', explode(',', $data['match']));
|
$recurringTransaction->match = join(' ', explode(',', $data['match']));
|
||||||
$recurringTransaction->amount_max = floatval($data['amount_max']);
|
$recurringTransaction->amount_max = floatval($data['amount_max']);
|
||||||
|
@ -32,7 +32,8 @@ interface RecurringTransactionRepositoryInterface
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \RecurringTransaction $recurringTransaction
|
* @param \RecurringTransaction $recurringTransaction
|
||||||
* @param $data
|
* @param $data
|
||||||
|
*
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function update(\RecurringTransaction $recurringTransaction, $data);
|
public function update(\RecurringTransaction $recurringTransaction, $data);
|
||||||
|
@ -45,4 +45,17 @@ class EloquentReminderRepository implements ReminderRepositoryInterface
|
|||||||
return \Auth::user()->reminders()->validOn($today)->get();
|
return \Auth::user()->reminders()->validOn($today)->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function getCurrentRecurringReminders()
|
||||||
|
{
|
||||||
|
$today = new Carbon;
|
||||||
|
|
||||||
|
return \Auth::user()->reminders()->with('recurringtransaction')->validOn($today)->where(
|
||||||
|
'class', 'RecurringTransactionReminder'
|
||||||
|
)->get();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -14,7 +14,8 @@ namespace Firefly\Storage\Reminder;
|
|||||||
*
|
*
|
||||||
* @package Firefly\Storage\Reminder
|
* @package Firefly\Storage\Reminder
|
||||||
*/
|
*/
|
||||||
interface ReminderRepositoryInterface {
|
interface ReminderRepositoryInterface
|
||||||
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \Reminder $reminder
|
* @param \Reminder $reminder
|
||||||
@ -35,4 +36,7 @@ interface ReminderRepositoryInterface {
|
|||||||
*/
|
*/
|
||||||
public function find($id);
|
public function find($id);
|
||||||
|
|
||||||
|
|
||||||
|
public function getCurrentRecurringReminders();
|
||||||
|
|
||||||
}
|
}
|
@ -34,8 +34,8 @@ class EloquentTransactionJournalRepository implements TransactionJournalReposito
|
|||||||
* A gains 200 (200). * -1
|
* A gains 200 (200). * -1
|
||||||
* B loses 200 (-200). * 1
|
* B loses 200 (-200). * 1
|
||||||
*
|
*
|
||||||
* @param \Account $from
|
* @param \Account $from
|
||||||
* @param \Account $toAccount
|
* @param \Account $toAccount
|
||||||
* @param $description
|
* @param $description
|
||||||
* @param $amount
|
* @param $amount
|
||||||
* @param \Carbon\Carbon $date
|
* @param \Carbon\Carbon $date
|
||||||
@ -122,7 +122,7 @@ class EloquentTransactionJournalRepository implements TransactionJournalReposito
|
|||||||
$fromTransaction->amount = $amountFrom;
|
$fromTransaction->amount = $amountFrom;
|
||||||
if (!$fromTransaction->validate()) {
|
if (!$fromTransaction->validate()) {
|
||||||
throw new FireflyException('Cannot create valid transaction (from): ' . $fromTransaction->errors()->first(
|
throw new FireflyException('Cannot create valid transaction (from): ' . $fromTransaction->errors()->first(
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
$fromTransaction->save();
|
$fromTransaction->save();
|
||||||
|
|
||||||
|
127
app/lib/Firefly/Trigger/Recurring/EloquentRecurringTrigger.php
Normal file
127
app/lib/Firefly/Trigger/Recurring/EloquentRecurringTrigger.php
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Firefly\Trigger\Recurring;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use Illuminate\Events\Dispatcher;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class EloquentRecurringTrigger
|
||||||
|
*
|
||||||
|
* @package Firefly\Trigger\Recurring
|
||||||
|
*/
|
||||||
|
class EloquentRecurringTrigger
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param \RecurringTransaction $recurring
|
||||||
|
*/
|
||||||
|
public function destroy(\RecurringTransaction $recurring)
|
||||||
|
{
|
||||||
|
$reminders = $recurring->recurringtransactionreminders()->get();
|
||||||
|
/** @var \RecurringTransactionReminder $reminder */
|
||||||
|
foreach ($reminders as $reminder) {
|
||||||
|
$reminder->delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param \RecurringTransaction $recurring
|
||||||
|
*/
|
||||||
|
public function store(\RecurringTransaction $recurring)
|
||||||
|
{
|
||||||
|
$this->createReminders();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function createReminders()
|
||||||
|
{
|
||||||
|
$entries = \Auth::user()->recurringtransactions()->where('active', 1)->get();
|
||||||
|
|
||||||
|
// for each entry, check for existing reminders during their period:
|
||||||
|
/** @var \RecurringTransaction $entry */
|
||||||
|
foreach ($entries as $entry) {
|
||||||
|
|
||||||
|
$start = clone $entry->date;
|
||||||
|
$end = clone $entry->date;
|
||||||
|
switch ($entry->repeat_freq) {
|
||||||
|
case 'weekly':
|
||||||
|
$start->startOfWeek();
|
||||||
|
$end->endOfWeek();
|
||||||
|
break;
|
||||||
|
case 'monthly':
|
||||||
|
$start->startOfMonth();
|
||||||
|
$end->endOfMonth();
|
||||||
|
break;
|
||||||
|
case 'quarterly':
|
||||||
|
$start->firstOfQuarter();
|
||||||
|
$end->lastOfQuarter();
|
||||||
|
break;
|
||||||
|
case 'half-year':
|
||||||
|
// start of half-year:
|
||||||
|
if (intval($start->format('m')) >= 7) {
|
||||||
|
$start->startOfYear();
|
||||||
|
$start->addMonths(6);
|
||||||
|
} else {
|
||||||
|
$start->startOfYear();
|
||||||
|
}
|
||||||
|
$end = clone $start;
|
||||||
|
$end->addMonths(6);
|
||||||
|
break;
|
||||||
|
case 'yearly':
|
||||||
|
$start->startOfYear();
|
||||||
|
$end->endOfYear();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// check if exists.
|
||||||
|
$count = $entry->reminders()->where('startdate', $start->format('Y-m-d'))->where(
|
||||||
|
'enddate', $end->format('Y-m-d')
|
||||||
|
)->count();
|
||||||
|
if ($count == 0) {
|
||||||
|
// create reminder:
|
||||||
|
$reminder = new \RecurringTransactionReminder;
|
||||||
|
$reminder->recurringtransaction()->associate($entry);
|
||||||
|
$reminder->startdate = $start;
|
||||||
|
$reminder->enddate = $end;
|
||||||
|
$reminder->active = 1;
|
||||||
|
$reminder->user()->associate(\Auth::user());
|
||||||
|
$reminder->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Trigger!
|
||||||
|
*
|
||||||
|
* @param Dispatcher $events
|
||||||
|
*/
|
||||||
|
public function subscribe(Dispatcher $events)
|
||||||
|
{
|
||||||
|
$events->listen('recurring.destroy', 'Firefly\Trigger\Recurring\EloquentRecurringTrigger@destroy');
|
||||||
|
$events->listen('recurring.store', 'Firefly\Trigger\Recurring\EloquentRecurringTrigger@store');
|
||||||
|
$events->listen('recurring.update', 'Firefly\Trigger\Recurring\EloquentRecurringTrigger@update');
|
||||||
|
$events->listen('recurring.check', 'Firefly\Trigger\Recurring\EloquentRecurringTrigger@createReminders');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param \RecurringTransaction $recurring
|
||||||
|
*/
|
||||||
|
public function update(\RecurringTransaction $recurring)
|
||||||
|
{
|
||||||
|
// remove old active reminders
|
||||||
|
$reminders = $recurring->reminders()->validOnOrAfter(new Carbon)->get();
|
||||||
|
foreach ($reminders as $r) {
|
||||||
|
$r->delete();
|
||||||
|
}
|
||||||
|
$this->createReminders();
|
||||||
|
// create new reminder for the current period.
|
||||||
|
|
||||||
|
// and now create new one(s)!
|
||||||
|
}
|
||||||
|
}
|
@ -4,24 +4,24 @@ use LaravelBook\Ardent\Ardent as Ardent;
|
|||||||
/**
|
/**
|
||||||
* Account
|
* Account
|
||||||
*
|
*
|
||||||
* @property integer $id
|
* @property integer $id
|
||||||
* @property \Carbon\Carbon $created_at
|
* @property \Carbon\Carbon $created_at
|
||||||
* @property \Carbon\Carbon $updated_at
|
* @property \Carbon\Carbon $updated_at
|
||||||
* @property integer $user_id
|
* @property integer $user_id
|
||||||
* @property integer $account_type_id
|
* @property integer $account_type_id
|
||||||
* @property string $name
|
* @property string $name
|
||||||
* @property boolean $active
|
* @property boolean $active
|
||||||
* @property-read \AccountType $accountType
|
* @property-read \AccountType $accountType
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\Transaction[] $transactions
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Transaction[] $transactions
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\Piggybank[] $piggybanks
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Piggybank[] $piggybanks
|
||||||
* @property-read \User $user
|
* @property-read \User $user
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Account whereId($value)
|
* @method static \Illuminate\Database\Query\Builder|\Account whereId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Account whereCreatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\Account whereCreatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Account whereUpdatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\Account whereUpdatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Account whereUserId($value)
|
* @method static \Illuminate\Database\Query\Builder|\Account whereUserId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Account whereAccountTypeId($value)
|
* @method static \Illuminate\Database\Query\Builder|\Account whereAccountTypeId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Account whereName($value)
|
* @method static \Illuminate\Database\Query\Builder|\Account whereName($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Account whereActive($value)
|
* @method static \Illuminate\Database\Query\Builder|\Account whereActive($value)
|
||||||
*/
|
*/
|
||||||
class Account extends Ardent
|
class Account extends Ardent
|
||||||
{
|
{
|
||||||
|
@ -4,15 +4,15 @@
|
|||||||
/**
|
/**
|
||||||
* AccountType
|
* AccountType
|
||||||
*
|
*
|
||||||
* @property integer $id
|
* @property integer $id
|
||||||
* @property \Carbon\Carbon $created_at
|
* @property \Carbon\Carbon $created_at
|
||||||
* @property \Carbon\Carbon $updated_at
|
* @property \Carbon\Carbon $updated_at
|
||||||
* @property string $description
|
* @property string $description
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\Account[] $accounts
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Account[] $accounts
|
||||||
* @method static \Illuminate\Database\Query\Builder|\AccountType whereId($value)
|
* @method static \Illuminate\Database\Query\Builder|\AccountType whereId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\AccountType whereCreatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\AccountType whereCreatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\AccountType whereUpdatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\AccountType whereUpdatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\AccountType whereDescription($value)
|
* @method static \Illuminate\Database\Query\Builder|\AccountType whereDescription($value)
|
||||||
*/
|
*/
|
||||||
class AccountType extends Eloquent
|
class AccountType extends Eloquent
|
||||||
{
|
{
|
||||||
|
@ -3,22 +3,22 @@
|
|||||||
/**
|
/**
|
||||||
* Budget
|
* Budget
|
||||||
*
|
*
|
||||||
* @property integer $id
|
* @property integer $id
|
||||||
* @property \Carbon\Carbon $created_at
|
* @property \Carbon\Carbon $created_at
|
||||||
* @property \Carbon\Carbon $updated_at
|
* @property \Carbon\Carbon $updated_at
|
||||||
* @property string $name
|
* @property string $name
|
||||||
* @property integer $user_id
|
* @property integer $user_id
|
||||||
* @property string $class
|
* @property string $class
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\Limit[] $limits
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Limit[] $limits
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\TransactionJournal[] $transactionjournals
|
* @property-read \Illuminate\Database\Eloquent\Collection|\TransactionJournal[] $transactionjournals
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\Transaction[] $transactions
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Transaction[] $transactions
|
||||||
* @property-read \User $user
|
* @property-read \User $user
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Budget whereId($value)
|
* @method static \Illuminate\Database\Query\Builder|\Budget whereId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Budget whereCreatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\Budget whereCreatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Budget whereUpdatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\Budget whereUpdatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Budget whereName($value)
|
* @method static \Illuminate\Database\Query\Builder|\Budget whereName($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Budget whereUserId($value)
|
* @method static \Illuminate\Database\Query\Builder|\Budget whereUserId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Budget whereClass($value)
|
* @method static \Illuminate\Database\Query\Builder|\Budget whereClass($value)
|
||||||
*/
|
*/
|
||||||
class Budget extends Component
|
class Budget extends Component
|
||||||
{
|
{
|
||||||
|
@ -3,22 +3,22 @@
|
|||||||
/**
|
/**
|
||||||
* Category
|
* Category
|
||||||
*
|
*
|
||||||
* @property integer $id
|
* @property integer $id
|
||||||
* @property \Carbon\Carbon $created_at
|
* @property \Carbon\Carbon $created_at
|
||||||
* @property \Carbon\Carbon $updated_at
|
* @property \Carbon\Carbon $updated_at
|
||||||
* @property string $name
|
* @property string $name
|
||||||
* @property integer $user_id
|
* @property integer $user_id
|
||||||
* @property string $class
|
* @property string $class
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\TransactionJournal[] $transactionjournals
|
* @property-read \Illuminate\Database\Eloquent\Collection|\TransactionJournal[] $transactionjournals
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\Limit[] $limits
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Limit[] $limits
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\Transaction[] $transactions
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Transaction[] $transactions
|
||||||
* @property-read \User $user
|
* @property-read \User $user
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Category whereId($value)
|
* @method static \Illuminate\Database\Query\Builder|\Category whereId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Category whereCreatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\Category whereCreatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Category whereUpdatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\Category whereUpdatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Category whereName($value)
|
* @method static \Illuminate\Database\Query\Builder|\Category whereName($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Category whereUserId($value)
|
* @method static \Illuminate\Database\Query\Builder|\Category whereUserId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Category whereClass($value)
|
* @method static \Illuminate\Database\Query\Builder|\Category whereClass($value)
|
||||||
*/
|
*/
|
||||||
class Category extends Component
|
class Category extends Component
|
||||||
{
|
{
|
||||||
|
@ -4,22 +4,22 @@ use Firefly\Database\SingleTableInheritanceEntity;
|
|||||||
/**
|
/**
|
||||||
* Component
|
* Component
|
||||||
*
|
*
|
||||||
* @property integer $id
|
* @property integer $id
|
||||||
* @property \Carbon\Carbon $created_at
|
* @property \Carbon\Carbon $created_at
|
||||||
* @property \Carbon\Carbon $updated_at
|
* @property \Carbon\Carbon $updated_at
|
||||||
* @property string $name
|
* @property string $name
|
||||||
* @property integer $user_id
|
* @property integer $user_id
|
||||||
* @property string $class
|
* @property string $class
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\Limit[] $limits
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Limit[] $limits
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\TransactionJournal[] $transactionjournals
|
* @property-read \Illuminate\Database\Eloquent\Collection|\TransactionJournal[] $transactionjournals
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\Transaction[] $transactions
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Transaction[] $transactions
|
||||||
* @property-read \User $user
|
* @property-read \User $user
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Component whereId($value)
|
* @method static \Illuminate\Database\Query\Builder|\Component whereId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Component whereCreatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\Component whereCreatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Component whereUpdatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\Component whereUpdatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Component whereName($value)
|
* @method static \Illuminate\Database\Query\Builder|\Component whereName($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Component whereUserId($value)
|
* @method static \Illuminate\Database\Query\Builder|\Component whereUserId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Component whereClass($value)
|
* @method static \Illuminate\Database\Query\Builder|\Component whereClass($value)
|
||||||
*/
|
*/
|
||||||
class Component extends SingleTableInheritanceEntity
|
class Component extends SingleTableInheritanceEntity
|
||||||
{
|
{
|
||||||
|
@ -7,25 +7,25 @@ use LaravelBook\Ardent\Ardent as Ardent;
|
|||||||
/**
|
/**
|
||||||
* Limit
|
* Limit
|
||||||
*
|
*
|
||||||
* @property integer $id
|
* @property integer $id
|
||||||
* @property \Carbon\Carbon $created_at
|
* @property \Carbon\Carbon $created_at
|
||||||
* @property \Carbon\Carbon $updated_at
|
* @property \Carbon\Carbon $updated_at
|
||||||
* @property integer $component_id
|
* @property integer $component_id
|
||||||
* @property \Carbon\Carbon $startdate
|
* @property \Carbon\Carbon $startdate
|
||||||
* @property float $amount
|
* @property float $amount
|
||||||
* @property boolean $repeats
|
* @property boolean $repeats
|
||||||
* @property string $repeat_freq
|
* @property string $repeat_freq
|
||||||
* @property-read \Budget $budget
|
* @property-read \Budget $budget
|
||||||
* @property-read \Component $component
|
* @property-read \Component $component
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\LimitRepetition[] $limitrepetitions
|
* @property-read \Illuminate\Database\Eloquent\Collection|\LimitRepetition[] $limitrepetitions
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Limit whereId($value)
|
* @method static \Illuminate\Database\Query\Builder|\Limit whereId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Limit whereCreatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\Limit whereCreatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Limit whereUpdatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\Limit whereUpdatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Limit whereComponentId($value)
|
* @method static \Illuminate\Database\Query\Builder|\Limit whereComponentId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Limit whereStartdate($value)
|
* @method static \Illuminate\Database\Query\Builder|\Limit whereStartdate($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Limit whereAmount($value)
|
* @method static \Illuminate\Database\Query\Builder|\Limit whereAmount($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Limit whereRepeats($value)
|
* @method static \Illuminate\Database\Query\Builder|\Limit whereRepeats($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Limit whereRepeatFreq($value)
|
* @method static \Illuminate\Database\Query\Builder|\Limit whereRepeatFreq($value)
|
||||||
*/
|
*/
|
||||||
class Limit extends Ardent
|
class Limit extends Ardent
|
||||||
{
|
{
|
||||||
@ -112,7 +112,7 @@ class Limit extends Ardent
|
|||||||
\Log::error($e->getMessage());
|
\Log::error($e->getMessage());
|
||||||
}
|
}
|
||||||
// @codeCoverageIgnoreEnd
|
// @codeCoverageIgnoreEnd
|
||||||
if(isset($repetition->id)) {
|
if (isset($repetition->id)) {
|
||||||
\Event::fire('limits.repetition', [$repetition]);
|
\Event::fire('limits.repetition', [$repetition]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,21 +5,21 @@ use LaravelBook\Ardent\Ardent as Ardent;
|
|||||||
/**
|
/**
|
||||||
* LimitRepetition
|
* LimitRepetition
|
||||||
*
|
*
|
||||||
* @property integer $id
|
* @property integer $id
|
||||||
* @property \Carbon\Carbon $created_at
|
* @property \Carbon\Carbon $created_at
|
||||||
* @property \Carbon\Carbon $updated_at
|
* @property \Carbon\Carbon $updated_at
|
||||||
* @property integer $limit_id
|
* @property integer $limit_id
|
||||||
* @property \Carbon\Carbon $startdate
|
* @property \Carbon\Carbon $startdate
|
||||||
* @property \Carbon\Carbon $enddate
|
* @property \Carbon\Carbon $enddate
|
||||||
* @property float $amount
|
* @property float $amount
|
||||||
* @property-read \Limit $limit
|
* @property-read \Limit $limit
|
||||||
* @method static \Illuminate\Database\Query\Builder|\LimitRepetition whereId($value)
|
* @method static \Illuminate\Database\Query\Builder|\LimitRepetition whereId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\LimitRepetition whereCreatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\LimitRepetition whereCreatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\LimitRepetition whereUpdatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\LimitRepetition whereUpdatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\LimitRepetition whereLimitId($value)
|
* @method static \Illuminate\Database\Query\Builder|\LimitRepetition whereLimitId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\LimitRepetition whereStartdate($value)
|
* @method static \Illuminate\Database\Query\Builder|\LimitRepetition whereStartdate($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\LimitRepetition whereEnddate($value)
|
* @method static \Illuminate\Database\Query\Builder|\LimitRepetition whereEnddate($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\LimitRepetition whereAmount($value)
|
* @method static \Illuminate\Database\Query\Builder|\LimitRepetition whereAmount($value)
|
||||||
*/
|
*/
|
||||||
class LimitRepetition extends Ardent
|
class LimitRepetition extends Ardent
|
||||||
{
|
{
|
||||||
|
@ -5,40 +5,41 @@ use LaravelBook\Ardent\Ardent as Ardent;
|
|||||||
/**
|
/**
|
||||||
* Piggybank
|
* Piggybank
|
||||||
*
|
*
|
||||||
* @property integer $id
|
* @property integer $id
|
||||||
* @property \Carbon\Carbon $created_at
|
* @property \Carbon\Carbon $created_at
|
||||||
* @property \Carbon\Carbon $updated_at
|
* @property \Carbon\Carbon $updated_at
|
||||||
* @property integer $account_id
|
* @property integer $account_id
|
||||||
* @property string $name
|
* @property string $name
|
||||||
* @property float $targetamount
|
* @property float $targetamount
|
||||||
* @property \Carbon\Carbon $startdate
|
* @property \Carbon\Carbon $startdate
|
||||||
* @property \Carbon\Carbon $targetdate
|
* @property \Carbon\Carbon $targetdate
|
||||||
* @property boolean $repeats
|
* @property boolean $repeats
|
||||||
* @property string $rep_length
|
* @property string $rep_length
|
||||||
* @property integer $rep_every
|
* @property integer $rep_every
|
||||||
* @property integer $rep_times
|
* @property integer $rep_times
|
||||||
* @property string $reminder
|
* @property string $reminder
|
||||||
* @property integer $reminder_skip
|
* @property integer $reminder_skip
|
||||||
* @property integer $order
|
* @property integer $order
|
||||||
* @property-read \Account $account
|
* @property-read \Account $account
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\PiggybankRepetition[] $piggybankrepetitions
|
* @property-read \Illuminate\Database\Eloquent\Collection|\PiggybankRepetition[] $piggybankrepetitions
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\PiggybankEvent[] $piggybankevents
|
* @property-read \Illuminate\Database\Eloquent\Collection|\PiggybankEvent[] $piggybankevents
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\Transaction[] $transactions
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Transaction[] $transactions
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereId($value)
|
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereCreatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereCreatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereUpdatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereUpdatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereAccountId($value)
|
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereAccountId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereName($value)
|
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereName($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereTargetamount($value)
|
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereTargetamount($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereStartdate($value)
|
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereStartdate($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereTargetdate($value)
|
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereTargetdate($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereRepeats($value)
|
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereRepeats($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereRepLength($value)
|
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereRepLength($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereRepEvery($value)
|
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereRepEvery($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereRepTimes($value)
|
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereRepTimes($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereReminder($value)
|
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereReminder($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereReminderSkip($value)
|
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereReminderSkip($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereOrder($value)
|
* @method static \Illuminate\Database\Query\Builder|\Piggybank whereOrder($value)
|
||||||
|
* @property-read \Illuminate\Database\Eloquent\Collection|\PiggybankReminder[] $piggybankreminders
|
||||||
*/
|
*/
|
||||||
class Piggybank extends Ardent
|
class Piggybank extends Ardent
|
||||||
{
|
{
|
||||||
|
@ -5,19 +5,19 @@ use LaravelBook\Ardent\Ardent as Ardent;
|
|||||||
/**
|
/**
|
||||||
* PiggybankEvent
|
* PiggybankEvent
|
||||||
*
|
*
|
||||||
* @property integer $id
|
* @property integer $id
|
||||||
* @property \Carbon\Carbon $created_at
|
* @property \Carbon\Carbon $created_at
|
||||||
* @property \Carbon\Carbon $updated_at
|
* @property \Carbon\Carbon $updated_at
|
||||||
* @property integer $piggybank_id
|
* @property integer $piggybank_id
|
||||||
* @property \Carbon\Carbon $date
|
* @property \Carbon\Carbon $date
|
||||||
* @property float $amount
|
* @property float $amount
|
||||||
* @property-read \Piggybank $piggybank
|
* @property-read \Piggybank $piggybank
|
||||||
* @method static \Illuminate\Database\Query\Builder|\PiggybankEvent whereId($value)
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankEvent whereId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\PiggybankEvent whereCreatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankEvent whereCreatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\PiggybankEvent whereUpdatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankEvent whereUpdatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\PiggybankEvent wherePiggybankId($value)
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankEvent wherePiggybankId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\PiggybankEvent whereDate($value)
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankEvent whereDate($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\PiggybankEvent whereAmount($value)
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankEvent whereAmount($value)
|
||||||
*/
|
*/
|
||||||
class PiggybankEvent extends Ardent
|
class PiggybankEvent extends Ardent
|
||||||
{
|
{
|
||||||
|
@ -3,6 +3,32 @@ use Carbon\Carbon;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Class PiggybankReminder
|
* Class PiggybankReminder
|
||||||
|
*
|
||||||
|
* @property integer $id
|
||||||
|
* @property \Carbon\Carbon $created_at
|
||||||
|
* @property \Carbon\Carbon $updated_at
|
||||||
|
* @property string $class
|
||||||
|
* @property integer $piggybank_id
|
||||||
|
* @property integer $recurring_transaction_id
|
||||||
|
* @property integer $user_id
|
||||||
|
* @property \Carbon\Carbon $startdate
|
||||||
|
* @property \Carbon\Carbon $enddate
|
||||||
|
* @property boolean $active
|
||||||
|
* @property-read \Piggybank $piggybank
|
||||||
|
* @property-read \RecurringTransaction $recurringTransaction
|
||||||
|
* @property-read \User $user
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankReminder whereId($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankReminder whereCreatedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankReminder whereUpdatedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankReminder whereClass($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankReminder wherePiggybankId($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankReminder whereRecurringTransactionId($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankReminder whereUserId($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankReminder whereStartdate($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankReminder whereEnddate($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankReminder whereActive($value)
|
||||||
|
* @method static \Reminder validOn($date)
|
||||||
|
* @method static \Reminder validOnOrAfter($date)
|
||||||
*/
|
*/
|
||||||
class PiggybankReminder extends Reminder
|
class PiggybankReminder extends Reminder
|
||||||
{
|
{
|
||||||
|
@ -5,21 +5,21 @@ use LaravelBook\Ardent\Ardent as Ardent;
|
|||||||
/**
|
/**
|
||||||
* PiggybankRepetition
|
* PiggybankRepetition
|
||||||
*
|
*
|
||||||
* @property integer $id
|
* @property integer $id
|
||||||
* @property \Carbon\Carbon $created_at
|
* @property \Carbon\Carbon $created_at
|
||||||
* @property \Carbon\Carbon $updated_at
|
* @property \Carbon\Carbon $updated_at
|
||||||
* @property integer $piggybank_id
|
* @property integer $piggybank_id
|
||||||
* @property \Carbon\Carbon $startdate
|
* @property \Carbon\Carbon $startdate
|
||||||
* @property \Carbon\Carbon $targetdate
|
* @property \Carbon\Carbon $targetdate
|
||||||
* @property float $currentamount
|
* @property float $currentamount
|
||||||
* @property-read \Piggybank $piggybank
|
* @property-read \Piggybank $piggybank
|
||||||
* @method static \Illuminate\Database\Query\Builder|\PiggybankRepetition whereId($value)
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankRepetition whereId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\PiggybankRepetition whereCreatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankRepetition whereCreatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\PiggybankRepetition whereUpdatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankRepetition whereUpdatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\PiggybankRepetition wherePiggybankId($value)
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankRepetition wherePiggybankId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\PiggybankRepetition whereStartdate($value)
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankRepetition whereStartdate($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\PiggybankRepetition whereTargetdate($value)
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankRepetition whereTargetdate($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\PiggybankRepetition whereCurrentamount($value)
|
* @method static \Illuminate\Database\Query\Builder|\PiggybankRepetition whereCurrentamount($value)
|
||||||
*/
|
*/
|
||||||
class PiggybankRepetition extends Ardent
|
class PiggybankRepetition extends Ardent
|
||||||
{
|
{
|
||||||
|
@ -6,19 +6,19 @@ use LaravelBook\Ardent\Ardent;
|
|||||||
/**
|
/**
|
||||||
* Preference
|
* Preference
|
||||||
*
|
*
|
||||||
* @property integer $id
|
* @property integer $id
|
||||||
* @property \Carbon\Carbon $created_at
|
* @property \Carbon\Carbon $created_at
|
||||||
* @property \Carbon\Carbon $updated_at
|
* @property \Carbon\Carbon $updated_at
|
||||||
* @property integer $user_id
|
* @property integer $user_id
|
||||||
* @property string $name
|
* @property string $name
|
||||||
* @property string $data
|
* @property string $data
|
||||||
* @property-read \User $user
|
* @property-read \User $user
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Preference whereId($value)
|
* @method static \Illuminate\Database\Query\Builder|\Preference whereId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Preference whereCreatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\Preference whereCreatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Preference whereUpdatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\Preference whereUpdatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Preference whereUserId($value)
|
* @method static \Illuminate\Database\Query\Builder|\Preference whereUserId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Preference whereName($value)
|
* @method static \Illuminate\Database\Query\Builder|\Preference whereName($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Preference whereData($value)
|
* @method static \Illuminate\Database\Query\Builder|\Preference whereData($value)
|
||||||
*/
|
*/
|
||||||
class Preference extends Ardent
|
class Preference extends Ardent
|
||||||
{
|
{
|
||||||
|
@ -5,33 +5,34 @@ use LaravelBook\Ardent\Ardent;
|
|||||||
/**
|
/**
|
||||||
* RecurringTransaction
|
* RecurringTransaction
|
||||||
*
|
*
|
||||||
* @property integer $id
|
* @property integer $id
|
||||||
* @property \Carbon\Carbon $created_at
|
* @property \Carbon\Carbon $created_at
|
||||||
* @property \Carbon\Carbon $updated_at
|
* @property \Carbon\Carbon $updated_at
|
||||||
* @property integer $user_id
|
* @property integer $user_id
|
||||||
* @property string $name
|
* @property string $name
|
||||||
* @property string $match
|
* @property string $match
|
||||||
* @property float $amount_max
|
* @property float $amount_max
|
||||||
* @property float $amount_min
|
* @property float $amount_min
|
||||||
* @property \Carbon\Carbon $date
|
* @property \Carbon\Carbon $date
|
||||||
* @property boolean $active
|
* @property boolean $active
|
||||||
* @property boolean $automatch
|
* @property boolean $automatch
|
||||||
* @property string $repeat_freq
|
* @property string $repeat_freq
|
||||||
* @property integer $skip
|
* @property integer $skip
|
||||||
* @property-read \User $user
|
* @property-read \User $user
|
||||||
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereId($value)
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereCreatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereCreatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereUpdatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereUpdatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereUserId($value)
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereUserId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereName($value)
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereName($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereMatch($value)
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereMatch($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereAmountMax($value)
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereAmountMax($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereAmountMin($value)
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereAmountMin($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereDate($value)
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereDate($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereActive($value)
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereActive($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereAutomatch($value)
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereAutomatch($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereRepeatFreq($value)
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereRepeatFreq($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereSkip($value)
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransaction whereSkip($value)
|
||||||
|
* @property-read \Illuminate\Database\Eloquent\Collection|\RecurringTransactionReminder[] $reminders
|
||||||
*/
|
*/
|
||||||
class RecurringTransaction extends Ardent
|
class RecurringTransaction extends Ardent
|
||||||
{
|
{
|
||||||
@ -59,13 +60,27 @@ class RecurringTransaction extends Ardent
|
|||||||
return ['created_at', 'updated_at', 'date'];
|
return ['created_at', 'updated_at', 'date'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||||
|
*/
|
||||||
|
public function reminders()
|
||||||
|
{
|
||||||
|
return $this->hasMany('RecurringTransactionReminder');
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Carbon
|
* @return Carbon
|
||||||
*/
|
*/
|
||||||
public function next()
|
public function next()
|
||||||
{
|
{
|
||||||
|
$today = new Carbon;
|
||||||
$start = clone $this->date;
|
$start = clone $this->date;
|
||||||
$skip = $this->skip == 0 ? 1 : $this->skip;
|
$skip = $this->skip == 0 ? 1 : $this->skip;
|
||||||
|
if ($today < $start) {
|
||||||
|
return $start;
|
||||||
|
}
|
||||||
|
|
||||||
while ($start <= $this->date) {
|
while ($start <= $this->date) {
|
||||||
switch ($this->repeat_freq) {
|
switch ($this->repeat_freq) {
|
||||||
|
37
app/models/RecurringTransactionReminder.php
Normal file
37
app/models/RecurringTransactionReminder.php
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class RecurringTransactionReminder
|
||||||
|
*
|
||||||
|
* @property integer $id
|
||||||
|
* @property \Carbon\Carbon $created_at
|
||||||
|
* @property \Carbon\Carbon $updated_at
|
||||||
|
* @property string $class
|
||||||
|
* @property integer $piggybank_id
|
||||||
|
* @property integer $recurring_transaction_id
|
||||||
|
* @property integer $user_id
|
||||||
|
* @property \Carbon\Carbon $startdate
|
||||||
|
* @property \Carbon\Carbon $enddate
|
||||||
|
* @property boolean $active
|
||||||
|
* @property-read \Piggybank $piggybank
|
||||||
|
* @property-read \RecurringTransaction $recurringTransaction
|
||||||
|
* @property-read \User $user
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransactionReminder whereId($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransactionReminder whereCreatedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransactionReminder whereUpdatedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransactionReminder whereClass($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransactionReminder wherePiggybankId($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransactionReminder whereRecurringTransactionId($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransactionReminder whereUserId($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransactionReminder whereStartdate($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransactionReminder whereEnddate($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\RecurringTransactionReminder whereActive($value)
|
||||||
|
* @method static \Reminder validOn($date)
|
||||||
|
* @method static \Reminder validOnOrAfter($date)
|
||||||
|
*/
|
||||||
|
class RecurringTransactionReminder extends Reminder
|
||||||
|
{
|
||||||
|
protected $isSubclass = true;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -7,6 +7,32 @@ use Firefly\Database\SingleTableInheritanceEntity;
|
|||||||
/**
|
/**
|
||||||
* Class Reminder
|
* Class Reminder
|
||||||
* // reminder for: recurring, piggybank.
|
* // reminder for: recurring, piggybank.
|
||||||
|
*
|
||||||
|
* @property integer $id
|
||||||
|
* @property \Carbon\Carbon $created_at
|
||||||
|
* @property \Carbon\Carbon $updated_at
|
||||||
|
* @property string $class
|
||||||
|
* @property integer $piggybank_id
|
||||||
|
* @property integer $recurring_transaction_id
|
||||||
|
* @property integer $user_id
|
||||||
|
* @property \Carbon\Carbon $startdate
|
||||||
|
* @property \Carbon\Carbon $enddate
|
||||||
|
* @property boolean $active
|
||||||
|
* @property-read \Piggybank $piggybank
|
||||||
|
* @property-read \RecurringTransaction $recurringTransaction
|
||||||
|
* @property-read \User $user
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\Reminder whereId($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\Reminder whereCreatedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\Reminder whereUpdatedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\Reminder whereClass($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\Reminder wherePiggybankId($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\Reminder whereRecurringTransactionId($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\Reminder whereUserId($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\Reminder whereStartdate($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\Reminder whereEnddate($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\Reminder whereActive($value)
|
||||||
|
* @method static \Reminder validOn($date)
|
||||||
|
* @method static \Reminder validOnOrAfter($date)
|
||||||
*/
|
*/
|
||||||
class Reminder extends SingleTableInheritanceEntity
|
class Reminder extends SingleTableInheritanceEntity
|
||||||
{
|
{
|
||||||
@ -31,9 +57,14 @@ class Reminder extends SingleTableInheritanceEntity
|
|||||||
return $this->belongsTo('Piggybank');
|
return $this->belongsTo('Piggybank');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function render() {
|
public function recurringTransaction()
|
||||||
return '';
|
{
|
||||||
|
return $this->belongsTo('RecurringTransaction');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function render()
|
||||||
|
{
|
||||||
|
return '';
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -44,6 +75,23 @@ class Reminder extends SingleTableInheritanceEntity
|
|||||||
->where('active', 1);
|
->where('active', 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function scopeValidOnOrAfter($query, Carbon $date)
|
||||||
|
{
|
||||||
|
return $query->where(
|
||||||
|
function ($q) use ($date) {
|
||||||
|
$q->where('startdate', '<=', $date->format('Y-m-d'))->where(
|
||||||
|
'enddate', '>=', $date->format('Y-m-d')
|
||||||
|
);
|
||||||
|
$q->orWhere(
|
||||||
|
function ($q) use ($date) {
|
||||||
|
$q->where('startdate', '>=', $date);
|
||||||
|
$q->where('enddate', '>=', $date);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
)->where('active', 1);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* User
|
* User
|
||||||
*
|
*
|
||||||
|
@ -6,28 +6,28 @@ use LaravelBook\Ardent\Ardent;
|
|||||||
/**
|
/**
|
||||||
* Transaction
|
* Transaction
|
||||||
*
|
*
|
||||||
* @property integer $id
|
* @property integer $id
|
||||||
* @property \Carbon\Carbon $created_at
|
* @property \Carbon\Carbon $created_at
|
||||||
* @property \Carbon\Carbon $updated_at
|
* @property \Carbon\Carbon $updated_at
|
||||||
* @property integer $account_id
|
* @property integer $account_id
|
||||||
* @property integer $piggybank_id
|
* @property integer $piggybank_id
|
||||||
* @property integer $transaction_journal_id
|
* @property integer $transaction_journal_id
|
||||||
* @property string $description
|
* @property string $description
|
||||||
* @property float $amount
|
* @property float $amount
|
||||||
* @property-read \Account $account
|
* @property-read \Account $account
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\Budget[] $budgets
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Budget[] $budgets
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\Category[] $categories
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Category[] $categories
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\Component[] $components
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Component[] $components
|
||||||
* @property-read \Piggybank $piggybank
|
* @property-read \Piggybank $piggybank
|
||||||
* @property-read \TransactionJournal $transactionJournal
|
* @property-read \TransactionJournal $transactionJournal
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Transaction whereId($value)
|
* @method static \Illuminate\Database\Query\Builder|\Transaction whereId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Transaction whereCreatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\Transaction whereCreatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Transaction whereUpdatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\Transaction whereUpdatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Transaction whereAccountId($value)
|
* @method static \Illuminate\Database\Query\Builder|\Transaction whereAccountId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Transaction wherePiggybankId($value)
|
* @method static \Illuminate\Database\Query\Builder|\Transaction wherePiggybankId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Transaction whereTransactionJournalId($value)
|
* @method static \Illuminate\Database\Query\Builder|\Transaction whereTransactionJournalId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Transaction whereDescription($value)
|
* @method static \Illuminate\Database\Query\Builder|\Transaction whereDescription($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\Transaction whereAmount($value)
|
* @method static \Illuminate\Database\Query\Builder|\Transaction whereAmount($value)
|
||||||
*/
|
*/
|
||||||
class Transaction extends Ardent
|
class Transaction extends Ardent
|
||||||
{
|
{
|
||||||
|
@ -3,15 +3,15 @@
|
|||||||
/**
|
/**
|
||||||
* TransactionCurrency
|
* TransactionCurrency
|
||||||
*
|
*
|
||||||
* @property integer $id
|
* @property integer $id
|
||||||
* @property \Carbon\Carbon $created_at
|
* @property \Carbon\Carbon $created_at
|
||||||
* @property \Carbon\Carbon $updated_at
|
* @property \Carbon\Carbon $updated_at
|
||||||
* @property string $code
|
* @property string $code
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\TransactionJournal[] $transactionjournals
|
* @property-read \Illuminate\Database\Eloquent\Collection|\TransactionJournal[] $transactionjournals
|
||||||
* @method static \Illuminate\Database\Query\Builder|\TransactionCurrency whereId($value)
|
* @method static \Illuminate\Database\Query\Builder|\TransactionCurrency whereId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\TransactionCurrency whereCreatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\TransactionCurrency whereCreatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\TransactionCurrency whereUpdatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\TransactionCurrency whereUpdatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\TransactionCurrency whereCode($value)
|
* @method static \Illuminate\Database\Query\Builder|\TransactionCurrency whereCode($value)
|
||||||
*/
|
*/
|
||||||
class TransactionCurrency extends Eloquent
|
class TransactionCurrency extends Eloquent
|
||||||
{
|
{
|
||||||
|
@ -36,6 +36,11 @@ use LaravelBook\Ardent\Ardent;
|
|||||||
* @method static \Illuminate\Database\Query\Builder|\TransactionJournal whereDate($value)
|
* @method static \Illuminate\Database\Query\Builder|\TransactionJournal whereDate($value)
|
||||||
* @method static \TransactionJournal after($date)
|
* @method static \TransactionJournal after($date)
|
||||||
* @method static \TransactionJournal before($date)
|
* @method static \TransactionJournal before($date)
|
||||||
|
* @property-read \Illuminate\Database\Eloquent\Collection|\
|
||||||
|
* 'Budget[] $budgets
|
||||||
|
* @property-read \Illuminate\Database\Eloquent\Collection|\
|
||||||
|
* 'Category[] $categories
|
||||||
|
* @method static \TransactionJournal onDate($date)
|
||||||
*/
|
*/
|
||||||
class TransactionJournal extends Ardent
|
class TransactionJournal extends Ardent
|
||||||
{
|
{
|
||||||
|
@ -5,15 +5,15 @@ use LaravelBook\Ardent\Ardent;
|
|||||||
/**
|
/**
|
||||||
* TransactionType
|
* TransactionType
|
||||||
*
|
*
|
||||||
* @property integer $id
|
* @property integer $id
|
||||||
* @property \Carbon\Carbon $created_at
|
* @property \Carbon\Carbon $created_at
|
||||||
* @property \Carbon\Carbon $updated_at
|
* @property \Carbon\Carbon $updated_at
|
||||||
* @property string $type
|
* @property string $type
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\TransactionJournal[] $transactionJournals
|
* @property-read \Illuminate\Database\Eloquent\Collection|\TransactionJournal[] $transactionJournals
|
||||||
* @method static \Illuminate\Database\Query\Builder|\TransactionType whereId($value)
|
* @method static \Illuminate\Database\Query\Builder|\TransactionType whereId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\TransactionType whereCreatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\TransactionType whereCreatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\TransactionType whereUpdatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\TransactionType whereUpdatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\TransactionType whereType($value)
|
* @method static \Illuminate\Database\Query\Builder|\TransactionType whereType($value)
|
||||||
*/
|
*/
|
||||||
class TransactionType extends Ardent
|
class TransactionType extends Ardent
|
||||||
{
|
{
|
||||||
|
@ -10,29 +10,31 @@ use LaravelBook\Ardent\Ardent;
|
|||||||
/**
|
/**
|
||||||
* User
|
* User
|
||||||
*
|
*
|
||||||
* @property integer $id
|
* @property integer $id
|
||||||
* @property \Carbon\Carbon $created_at
|
* @property \Carbon\Carbon $created_at
|
||||||
* @property \Carbon\Carbon $updated_at
|
* @property \Carbon\Carbon $updated_at
|
||||||
* @property string $email
|
* @property string $email
|
||||||
* @property string $password
|
* @property string $password
|
||||||
* @property string $reset
|
* @property string $reset
|
||||||
* @property string $remember_token
|
* @property string $remember_token
|
||||||
* @property boolean $migrated
|
* @property boolean $migrated
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\Account[] $accounts
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Account[] $accounts
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\Budget[] $budgets
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Budget[] $budgets
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\Category[] $categories
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Category[] $categories
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\Component[] $components
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Component[] $components
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\Preference[] $preferences
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Preference[] $preferences
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\RecurringTransaction[] $recurringtransactions
|
* @property-read \Illuminate\Database\Eloquent\Collection|\RecurringTransaction[] $recurringtransactions
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\TransactionJournal[] $transactionjournals
|
* @property-read \Illuminate\Database\Eloquent\Collection|\TransactionJournal[] $transactionjournals
|
||||||
* @method static \Illuminate\Database\Query\Builder|\User whereId($value)
|
* @method static \Illuminate\Database\Query\Builder|\User whereId($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\User whereCreatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\User whereCreatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\User whereUpdatedAt($value)
|
* @method static \Illuminate\Database\Query\Builder|\User whereUpdatedAt($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\User whereEmail($value)
|
* @method static \Illuminate\Database\Query\Builder|\User whereEmail($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\User wherePassword($value)
|
* @method static \Illuminate\Database\Query\Builder|\User wherePassword($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\User whereReset($value)
|
* @method static \Illuminate\Database\Query\Builder|\User whereReset($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\User whereRememberToken($value)
|
* @method static \Illuminate\Database\Query\Builder|\User whereRememberToken($value)
|
||||||
* @method static \Illuminate\Database\Query\Builder|\User whereMigrated($value)
|
* @method static \Illuminate\Database\Query\Builder|\User whereMigrated($value)
|
||||||
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Reminder[] $reminders
|
||||||
|
* @property-read \Illuminate\Database\Eloquent\Collection|\PiggybankReminder[] $piggybankreminders
|
||||||
*/
|
*/
|
||||||
class User extends Ardent implements UserInterface, RemindableInterface
|
class User extends Ardent implements UserInterface, RemindableInterface
|
||||||
{
|
{
|
||||||
|
@ -11,14 +11,16 @@
|
|||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ClassLoader::addDirectories(array(
|
ClassLoader::addDirectories(
|
||||||
|
array(
|
||||||
|
|
||||||
app_path().'/commands',
|
app_path() . '/commands',
|
||||||
app_path().'/controllers',
|
app_path() . '/controllers',
|
||||||
app_path().'/models',
|
app_path() . '/models',
|
||||||
app_path().'/database/seeds',
|
app_path() . '/database/seeds',
|
||||||
|
|
||||||
));
|
)
|
||||||
|
);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
@ -31,7 +33,7 @@ ClassLoader::addDirectories(array(
|
|||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Log::useFiles(storage_path().'/logs/laravel.log');
|
Log::useFiles(storage_path() . '/logs/laravel.log');
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
@ -46,10 +48,11 @@ Log::useFiles(storage_path().'/logs/laravel.log');
|
|||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
App::error(function(Exception $exception, $code)
|
App::error(
|
||||||
{
|
function (Exception $exception, $code) {
|
||||||
Log::error($exception);
|
Log::error($exception);
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
@ -62,10 +65,11 @@ App::error(function(Exception $exception, $code)
|
|||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
App::down(function()
|
App::down(
|
||||||
{
|
function () {
|
||||||
return Response::make("Be right back!", 503);
|
return Response::make("Be right back!", 503);
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
@ -78,4 +82,4 @@ App::down(function()
|
|||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require app_path().'/filters.php';
|
require app_path() . '/filters.php';
|
||||||
|
@ -247,10 +247,10 @@ class AccountControllerTest extends TestCase
|
|||||||
$collection->add($account);
|
$collection->add($account);
|
||||||
|
|
||||||
$list = [
|
$list = [
|
||||||
'personal' => [],
|
'personal' => [],
|
||||||
'beneficiaries' => [],
|
'beneficiaries' => [],
|
||||||
'initial' => [],
|
'initial' => [],
|
||||||
'cash' => []
|
'cash' => []
|
||||||
];
|
];
|
||||||
|
|
||||||
$this->_repository->shouldReceive('get')->once()->andReturn($collection);
|
$this->_repository->shouldReceive('get')->once()->andReturn($collection);
|
||||||
@ -283,19 +283,19 @@ class AccountControllerTest extends TestCase
|
|||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'statistics' => [
|
'statistics' => [
|
||||||
'period' => [
|
'period' => [
|
||||||
'in' => 0,
|
'in' => 0,
|
||||||
'out' => 0,
|
'out' => 0,
|
||||||
'diff' => 0,
|
'diff' => 0,
|
||||||
't_in' => 0,
|
't_in' => 0,
|
||||||
't_out' => 0,
|
't_out' => 0,
|
||||||
't_diff' => 0
|
't_diff' => 0
|
||||||
],
|
],
|
||||||
'categories' => [],
|
'categories' => [],
|
||||||
'budgets' => [],
|
'budgets' => [],
|
||||||
'accounts' => []
|
'accounts' => []
|
||||||
],
|
],
|
||||||
'journals' => $paginator,
|
'journals' => $paginator,
|
||||||
];
|
];
|
||||||
|
|
||||||
$this->_accounts->shouldReceive('show')->once()->andReturn($data);
|
$this->_accounts->shouldReceive('show')->once()->andReturn($data);
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Database\Eloquent\Collection;
|
use Illuminate\Database\Eloquent\Collection;
|
||||||
use Mockery as m;
|
|
||||||
use League\FactoryMuffin\Facade as f;
|
use League\FactoryMuffin\Facade as f;
|
||||||
|
use Mockery as m;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class BudgetControllerTest
|
* Class BudgetControllerTest
|
||||||
@ -65,7 +65,7 @@ class BudgetControllerTest extends TestCase
|
|||||||
Auth::shouldReceive('user')->andReturn($this->_user);
|
Auth::shouldReceive('user')->andReturn($this->_user);
|
||||||
Auth::shouldReceive('check')->andReturn(true);
|
Auth::shouldReceive('check')->andReturn(true);
|
||||||
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($budget->user_id);
|
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($budget->user_id);
|
||||||
Event::shouldReceive('fire')->once()->with('budgets.destroy',[$budget]);
|
Event::shouldReceive('fire')->once()->with('budgets.destroy', [$budget]);
|
||||||
$this->_repository->shouldReceive('destroy')->once()->andReturn(true);
|
$this->_repository->shouldReceive('destroy')->once()->andReturn(true);
|
||||||
|
|
||||||
$this->action('POST', 'BudgetController@destroy', $budget->id);
|
$this->action('POST', 'BudgetController@destroy', $budget->id);
|
||||||
@ -81,7 +81,7 @@ class BudgetControllerTest extends TestCase
|
|||||||
Auth::shouldReceive('user')->andReturn($this->_user);
|
Auth::shouldReceive('user')->andReturn($this->_user);
|
||||||
Auth::shouldReceive('check')->andReturn(true);
|
Auth::shouldReceive('check')->andReturn(true);
|
||||||
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($budget->user_id);
|
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($budget->user_id);
|
||||||
Event::shouldReceive('fire')->once()->with('budgets.destroy',[$budget]);
|
Event::shouldReceive('fire')->once()->with('budgets.destroy', [$budget]);
|
||||||
$this->_repository->shouldReceive('destroy')->once()->andReturn(true);
|
$this->_repository->shouldReceive('destroy')->once()->andReturn(true);
|
||||||
|
|
||||||
$this->action('POST', 'BudgetController@destroy', [$budget->id, 'from' => 'date']);
|
$this->action('POST', 'BudgetController@destroy', [$budget->id, 'from' => 'date']);
|
||||||
@ -97,7 +97,7 @@ class BudgetControllerTest extends TestCase
|
|||||||
Auth::shouldReceive('user')->andReturn($this->_user);
|
Auth::shouldReceive('user')->andReturn($this->_user);
|
||||||
Auth::shouldReceive('check')->andReturn(true);
|
Auth::shouldReceive('check')->andReturn(true);
|
||||||
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($budget->user_id);
|
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($budget->user_id);
|
||||||
Event::shouldReceive('fire')->once()->with('budgets.destroy',[$budget]);
|
Event::shouldReceive('fire')->once()->with('budgets.destroy', [$budget]);
|
||||||
$this->_repository->shouldReceive('destroy')->once()->andReturn(false);
|
$this->_repository->shouldReceive('destroy')->once()->andReturn(false);
|
||||||
|
|
||||||
|
|
||||||
@ -233,7 +233,7 @@ class BudgetControllerTest extends TestCase
|
|||||||
Auth::shouldReceive('check')->andReturn(true);
|
Auth::shouldReceive('check')->andReturn(true);
|
||||||
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($budget->user_id);
|
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($budget->user_id);
|
||||||
$this->_repository->shouldReceive('update')->andReturn($budget);
|
$this->_repository->shouldReceive('update')->andReturn($budget);
|
||||||
Event::shouldReceive('fire')->with('budgets.update',[$budget]);
|
Event::shouldReceive('fire')->with('budgets.update', [$budget]);
|
||||||
|
|
||||||
$this->action('POST', 'BudgetController@update', $budget->id);
|
$this->action('POST', 'BudgetController@update', $budget->id);
|
||||||
$this->assertRedirectedToRoute('budgets.index.budget');
|
$this->assertRedirectedToRoute('budgets.index.budget');
|
||||||
@ -248,7 +248,7 @@ class BudgetControllerTest extends TestCase
|
|||||||
Auth::shouldReceive('check')->andReturn(true);
|
Auth::shouldReceive('check')->andReturn(true);
|
||||||
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($budget->user_id);
|
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($budget->user_id);
|
||||||
$this->_repository->shouldReceive('update')->andReturn($budget);
|
$this->_repository->shouldReceive('update')->andReturn($budget);
|
||||||
Event::shouldReceive('fire')->with('budgets.update',[$budget]);
|
Event::shouldReceive('fire')->with('budgets.update', [$budget]);
|
||||||
//$this->_user->shouldReceive('budgets')->andReturn([]); // trigger
|
//$this->_user->shouldReceive('budgets')->andReturn([]); // trigger
|
||||||
|
|
||||||
$this->action('POST', 'BudgetController@update', [$budget->id, 'from' => 'date']);
|
$this->action('POST', 'BudgetController@update', [$budget->id, 'from' => 'date']);
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Database\Eloquent\Collection;
|
use Illuminate\Database\Eloquent\Collection;
|
||||||
use Mockery as m;
|
|
||||||
use League\FactoryMuffin\Facade as f;
|
use League\FactoryMuffin\Facade as f;
|
||||||
|
use Mockery as m;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class CategoryControllerTest
|
* Class CategoryControllerTest
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Database\Eloquent\Collection;
|
use Illuminate\Database\Eloquent\Collection;
|
||||||
use Mockery as m;
|
|
||||||
use League\FactoryMuffin\Facade as f;
|
use League\FactoryMuffin\Facade as f;
|
||||||
|
use Mockery as m;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
use Carbon\Carbon as Carbon;
|
use Carbon\Carbon as Carbon;
|
||||||
use Mockery as m;
|
|
||||||
use League\FactoryMuffin\Facade as f;
|
use League\FactoryMuffin\Facade as f;
|
||||||
|
use Mockery as m;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class HomeControllerTest
|
* Class HomeControllerTest
|
||||||
@ -15,6 +15,7 @@ class HomeControllerTest extends TestCase
|
|||||||
protected $_repository;
|
protected $_repository;
|
||||||
protected $_preferences;
|
protected $_preferences;
|
||||||
protected $_journals;
|
protected $_journals;
|
||||||
|
protected $_reminders;
|
||||||
|
|
||||||
public function setUp()
|
public function setUp()
|
||||||
{
|
{
|
||||||
@ -25,6 +26,7 @@ class HomeControllerTest extends TestCase
|
|||||||
$this->_repository = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
$this->_repository = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||||
$this->_preferences = $this->mock('Firefly\Helper\Preferences\PreferencesHelperInterface');
|
$this->_preferences = $this->mock('Firefly\Helper\Preferences\PreferencesHelperInterface');
|
||||||
$this->_journals = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
|
$this->_journals = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
|
||||||
|
$this->_reminders = $this->mock('Firefly\Storage\Reminder\ReminderRepositoryInterface');
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -47,6 +49,11 @@ class HomeControllerTest extends TestCase
|
|||||||
$preference = $this->mock('Preference');
|
$preference = $this->mock('Preference');
|
||||||
$preference->shouldReceive('getAttribute')->with('data')->andReturn([]);
|
$preference->shouldReceive('getAttribute')->with('data')->andReturn([]);
|
||||||
|
|
||||||
|
Event::shouldReceive('fire')->with('limits.check');
|
||||||
|
Event::shouldReceive('fire')->with('piggybanks.check');
|
||||||
|
Event::shouldReceive('fire')->with('recurring.check');
|
||||||
|
|
||||||
|
$this->_reminders->shouldReceive('getCurrentRecurringReminders')->once()->andReturn([]);
|
||||||
|
|
||||||
// mock accounts:
|
// mock accounts:
|
||||||
$this->_repository->shouldReceive('count')->once()->andReturn(0);
|
$this->_repository->shouldReceive('count')->once()->andReturn(0);
|
||||||
@ -71,6 +78,12 @@ class HomeControllerTest extends TestCase
|
|||||||
$preference = $this->mock('Preference');
|
$preference = $this->mock('Preference');
|
||||||
$preference->shouldReceive('getAttribute')->with('data')->andReturn([$account->id]);
|
$preference->shouldReceive('getAttribute')->with('data')->andReturn([$account->id]);
|
||||||
|
|
||||||
|
Event::shouldReceive('fire')->with('limits.check');
|
||||||
|
Event::shouldReceive('fire')->with('piggybanks.check');
|
||||||
|
Event::shouldReceive('fire')->with('recurring.check');
|
||||||
|
|
||||||
|
$this->_reminders->shouldReceive('getCurrentRecurringReminders')->once()->andReturn([]);
|
||||||
|
|
||||||
|
|
||||||
// mock accounts:
|
// mock accounts:
|
||||||
$this->_repository->shouldReceive('count')->once()->andReturn(0);
|
$this->_repository->shouldReceive('count')->once()->andReturn(0);
|
||||||
@ -80,7 +93,7 @@ class HomeControllerTest extends TestCase
|
|||||||
$this->_preferences->shouldReceive('get')->with('frontpageAccounts', [])->andReturn($preference);
|
$this->_preferences->shouldReceive('get')->with('frontpageAccounts', [])->andReturn($preference);
|
||||||
|
|
||||||
// mock journals:
|
// mock journals:
|
||||||
$this->_journals->shouldReceive('getByAccountInDateRange')->once()->with($account, 15, $start, $end)->andReturn(
|
$this->_journals->shouldReceive('getByAccountInDateRange')->once()->with($account, 10, $start, $end)->andReturn(
|
||||||
[1, 2]
|
[1, 2]
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -104,6 +117,12 @@ class HomeControllerTest extends TestCase
|
|||||||
$preference = $this->mock('Preference');
|
$preference = $this->mock('Preference');
|
||||||
$preference->shouldReceive('getAttribute')->with('data')->andReturn($ids);
|
$preference->shouldReceive('getAttribute')->with('data')->andReturn($ids);
|
||||||
|
|
||||||
|
Event::shouldReceive('fire')->with('limits.check');
|
||||||
|
Event::shouldReceive('fire')->with('piggybanks.check');
|
||||||
|
Event::shouldReceive('fire')->with('recurring.check');
|
||||||
|
|
||||||
|
$this->_reminders->shouldReceive('getCurrentRecurringReminders')->once()->andReturn([]);
|
||||||
|
|
||||||
|
|
||||||
// mock accounts:
|
// mock accounts:
|
||||||
$this->_repository->shouldReceive('count')->once()->andReturn(0);
|
$this->_repository->shouldReceive('count')->once()->andReturn(0);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
use Mockery as m;
|
|
||||||
use League\FactoryMuffin\Facade as f;
|
use League\FactoryMuffin\Facade as f;
|
||||||
|
use Mockery as m;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class LimitControllerTest
|
* Class LimitControllerTest
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Mockery as m;
|
|
||||||
use League\FactoryMuffin\Facade as f;
|
use League\FactoryMuffin\Facade as f;
|
||||||
|
use Mockery as m;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -171,7 +171,7 @@ class PiggybankControllerTest extends TestCase
|
|||||||
$input = [
|
$input = [
|
||||||
$piggyBank->id,
|
$piggyBank->id,
|
||||||
'amount' => 10.0,
|
'amount' => 10.0,
|
||||||
'what' => 'add'
|
'what' => 'add'
|
||||||
];
|
];
|
||||||
|
|
||||||
// for binding
|
// for binding
|
||||||
@ -181,7 +181,7 @@ class PiggybankControllerTest extends TestCase
|
|||||||
$piggyBank->account()->first()->user_id
|
$piggyBank->account()->first()->user_id
|
||||||
);
|
);
|
||||||
$this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email');
|
$this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email');
|
||||||
Event::shouldReceive('fire');//->with('piggybanks.modifyAmountAdd', [$piggyBank, 10.0]);
|
Event::shouldReceive('fire'); //->with('piggybanks.modifyAmountAdd', [$piggyBank, 10.0]);
|
||||||
$this->_piggybanks->shouldReceive('modifyAmount')->once();
|
$this->_piggybanks->shouldReceive('modifyAmount')->once();
|
||||||
|
|
||||||
$this->_piggybanks->shouldReceive('leftOnAccount')->once()->andReturn(200);
|
$this->_piggybanks->shouldReceive('leftOnAccount')->once()->andReturn(200);
|
||||||
@ -201,7 +201,7 @@ class PiggybankControllerTest extends TestCase
|
|||||||
$input = [
|
$input = [
|
||||||
$piggyBank->id,
|
$piggyBank->id,
|
||||||
'amount' => 10.0,
|
'amount' => 10.0,
|
||||||
'what' => 'add'
|
'what' => 'add'
|
||||||
];
|
];
|
||||||
|
|
||||||
// for binding
|
// for binding
|
||||||
@ -230,7 +230,7 @@ class PiggybankControllerTest extends TestCase
|
|||||||
$input = [
|
$input = [
|
||||||
$piggyBank->id,
|
$piggyBank->id,
|
||||||
'amount' => 10.0,
|
'amount' => 10.0,
|
||||||
'what' => 'yomoma'
|
'what' => 'yomoma'
|
||||||
];
|
];
|
||||||
|
|
||||||
// for binding
|
// for binding
|
||||||
@ -269,7 +269,7 @@ class PiggybankControllerTest extends TestCase
|
|||||||
$input = [
|
$input = [
|
||||||
$rep->piggybank()->first()->id,
|
$rep->piggybank()->first()->id,
|
||||||
'amount' => 10.0,
|
'amount' => 10.0,
|
||||||
'what' => 'remove'
|
'what' => 'remove'
|
||||||
];
|
];
|
||||||
|
|
||||||
$this->action('POST', 'PiggybankController@modMoney', $input);
|
$this->action('POST', 'PiggybankController@modMoney', $input);
|
||||||
@ -299,7 +299,7 @@ class PiggybankControllerTest extends TestCase
|
|||||||
$input = [
|
$input = [
|
||||||
$rep->piggybank()->first()->id,
|
$rep->piggybank()->first()->id,
|
||||||
'amount' => 10.0,
|
'amount' => 10.0,
|
||||||
'what' => 'remove'
|
'what' => 'remove'
|
||||||
];
|
];
|
||||||
|
|
||||||
$this->action('POST', 'PiggybankController@modMoney', $input);
|
$this->action('POST', 'PiggybankController@modMoney', $input);
|
||||||
@ -308,48 +308,6 @@ class PiggybankControllerTest extends TestCase
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function teststorePiggybank()
|
|
||||||
{
|
|
||||||
$piggy = f::create('Piggybank');
|
|
||||||
$piggy->repeats = 0;
|
|
||||||
$piggy->save();
|
|
||||||
Event::shouldReceive('fire')->with('piggybanks.store',[$piggy])->once();
|
|
||||||
|
|
||||||
|
|
||||||
$this->_piggybanks->shouldReceive('store')->once()->andReturn($piggy);
|
|
||||||
$this->action('POST', 'PiggybankController@storePiggybank');
|
|
||||||
$this->assertResponseStatus(302);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testStoreRepeated()
|
|
||||||
{
|
|
||||||
$piggy = f::create('Piggybank');
|
|
||||||
$piggy->repeats = 1;
|
|
||||||
$piggy->save();
|
|
||||||
Event::shouldReceive('fire')->with('piggybanks.store',[$piggy])->once();
|
|
||||||
$this->_piggybanks->shouldReceive('store')->once()->andReturn($piggy);
|
|
||||||
$this->action('POST', 'PiggybankController@storeRepeated');
|
|
||||||
$this->assertResponseStatus(302);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function teststorePiggybankFails()
|
|
||||||
{
|
|
||||||
$piggy = f::create('Piggybank');
|
|
||||||
unset($piggy->id);
|
|
||||||
$this->_piggybanks->shouldReceive('store')->once()->andReturn($piggy);
|
|
||||||
$this->action('POST', 'PiggybankController@storePiggybank');
|
|
||||||
$this->assertResponseStatus(302);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testStoreRepeatedFails()
|
|
||||||
{
|
|
||||||
$piggy = f::create('Piggybank');
|
|
||||||
unset($piggy->id);
|
|
||||||
$this->_piggybanks->shouldReceive('store')->once()->andReturn($piggy);
|
|
||||||
$this->action('POST', 'PiggybankController@storeRepeated');
|
|
||||||
$this->assertResponseStatus(302);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testRemoveMoneyGET()
|
public function testRemoveMoneyGET()
|
||||||
{
|
{
|
||||||
$pig = $this->mock('Piggybank');
|
$pig = $this->mock('Piggybank');
|
||||||
@ -375,19 +333,48 @@ class PiggybankControllerTest extends TestCase
|
|||||||
|
|
||||||
public function testShow()
|
public function testShow()
|
||||||
{
|
{
|
||||||
$piggyBank = f::create('Piggybank');
|
$pig = $this->mock('Piggybank');
|
||||||
// for binding
|
$piggybank = f::create('Piggybank');
|
||||||
|
$rep = f::create('PiggybankRepetition');
|
||||||
|
$rep->piggybank_id = $piggybank->id;
|
||||||
|
$rep->save();
|
||||||
|
|
||||||
Auth::shouldReceive('user')->andReturn($this->_user);
|
Auth::shouldReceive('user')->andReturn($this->_user);
|
||||||
Auth::shouldReceive('check')->andReturn(true);
|
Auth::shouldReceive('check')->andReturn(true);
|
||||||
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn(
|
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn(
|
||||||
$piggyBank->account()->first()->user_id
|
$piggybank->account()->first()->user_id
|
||||||
);
|
);
|
||||||
$this->_user->shouldReceive('getAttribute')->andReturn('some@email');
|
$this->_user->shouldReceive('getAttribute')->andReturn('some@email');
|
||||||
|
|
||||||
$this->action('GET', 'PiggybankController@show', $piggyBank->id);
|
$pig->shouldReceive('currentRelevantRep')->andReturn($rep);
|
||||||
|
|
||||||
|
// repos:
|
||||||
|
$this->_piggybanks->shouldReceive('leftOnAccount');
|
||||||
|
|
||||||
|
$this->action('GET', 'PiggybankController@show', $piggybank->id);
|
||||||
$this->assertResponseOk();
|
$this->assertResponseOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testStoreRepeated()
|
||||||
|
{
|
||||||
|
$piggy = f::create('Piggybank');
|
||||||
|
$piggy->repeats = 1;
|
||||||
|
$piggy->save();
|
||||||
|
Event::shouldReceive('fire')->with('piggybanks.store', [$piggy])->once();
|
||||||
|
$this->_piggybanks->shouldReceive('store')->once()->andReturn($piggy);
|
||||||
|
$this->action('POST', 'PiggybankController@storeRepeated');
|
||||||
|
$this->assertResponseStatus(302);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testStoreRepeatedFails()
|
||||||
|
{
|
||||||
|
$piggy = f::create('Piggybank');
|
||||||
|
unset($piggy->id);
|
||||||
|
$this->_piggybanks->shouldReceive('store')->once()->andReturn($piggy);
|
||||||
|
$this->action('POST', 'PiggybankController@storeRepeated');
|
||||||
|
$this->assertResponseStatus(302);
|
||||||
|
}
|
||||||
|
|
||||||
public function testUpdate()
|
public function testUpdate()
|
||||||
{
|
{
|
||||||
$piggyBank = f::create('Piggybank');
|
$piggyBank = f::create('Piggybank');
|
||||||
@ -401,7 +388,7 @@ class PiggybankControllerTest extends TestCase
|
|||||||
$piggyBank->account()->first()->user_id
|
$piggyBank->account()->first()->user_id
|
||||||
);
|
);
|
||||||
$this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email');
|
$this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email');
|
||||||
Event::shouldReceive('fire')->with('piggybanks.update',[$piggyBank]);
|
Event::shouldReceive('fire')->with('piggybanks.update', [$piggyBank]);
|
||||||
|
|
||||||
$this->action('POST', 'PiggybankController@update', $piggyBank->id);
|
$this->action('POST', 'PiggybankController@update', $piggyBank->id);
|
||||||
$this->assertResponseStatus(302);
|
$this->assertResponseStatus(302);
|
||||||
@ -427,5 +414,27 @@ class PiggybankControllerTest extends TestCase
|
|||||||
$this->assertResponseStatus(302);
|
$this->assertResponseStatus(302);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function teststorePiggybank()
|
||||||
|
{
|
||||||
|
$piggy = f::create('Piggybank');
|
||||||
|
$piggy->repeats = 0;
|
||||||
|
$piggy->save();
|
||||||
|
Event::shouldReceive('fire')->with('piggybanks.store', [$piggy])->once();
|
||||||
|
|
||||||
|
|
||||||
|
$this->_piggybanks->shouldReceive('store')->once()->andReturn($piggy);
|
||||||
|
$this->action('POST', 'PiggybankController@storePiggybank');
|
||||||
|
$this->assertResponseStatus(302);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function teststorePiggybankFails()
|
||||||
|
{
|
||||||
|
$piggy = f::create('Piggybank');
|
||||||
|
unset($piggy->id);
|
||||||
|
$this->_piggybanks->shouldReceive('store')->once()->andReturn($piggy);
|
||||||
|
$this->action('POST', 'PiggybankController@storePiggybank');
|
||||||
|
$this->assertResponseStatus(302);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
use Mockery as m;
|
|
||||||
use League\FactoryMuffin\Facade as f;
|
use League\FactoryMuffin\Facade as f;
|
||||||
|
use Mockery as m;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ProfileControllerTest
|
* Class ProfileControllerTest
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
use Mockery as m;
|
|
||||||
use League\FactoryMuffin\Facade as f;
|
use League\FactoryMuffin\Facade as f;
|
||||||
|
use Mockery as m;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class RecurringControllerTest
|
* Class RecurringControllerTest
|
||||||
@ -40,6 +40,8 @@ class RecurringControllerTest extends TestCase
|
|||||||
{
|
{
|
||||||
$recurringTransaction = f::create('RecurringTransaction');
|
$recurringTransaction = f::create('RecurringTransaction');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// for binding
|
// for binding
|
||||||
Auth::shouldReceive('user')->andReturn($this->_user);
|
Auth::shouldReceive('user')->andReturn($this->_user);
|
||||||
Auth::shouldReceive('check')->andReturn(true);
|
Auth::shouldReceive('check')->andReturn(true);
|
||||||
@ -55,6 +57,8 @@ class RecurringControllerTest extends TestCase
|
|||||||
{
|
{
|
||||||
$recurringTransaction = f::create('RecurringTransaction');
|
$recurringTransaction = f::create('RecurringTransaction');
|
||||||
|
|
||||||
|
Event::shouldReceive('fire')->with('recurring.destroy',m::any());
|
||||||
|
|
||||||
// for binding
|
// for binding
|
||||||
Auth::shouldReceive('user')->andReturn($this->_user);
|
Auth::shouldReceive('user')->andReturn($this->_user);
|
||||||
Auth::shouldReceive('check')->andReturn(true);
|
Auth::shouldReceive('check')->andReturn(true);
|
||||||
@ -73,6 +77,7 @@ class RecurringControllerTest extends TestCase
|
|||||||
// for binding
|
// for binding
|
||||||
Auth::shouldReceive('user')->andReturn($this->_user);
|
Auth::shouldReceive('user')->andReturn($this->_user);
|
||||||
Auth::shouldReceive('check')->andReturn(true);
|
Auth::shouldReceive('check')->andReturn(true);
|
||||||
|
Event::shouldReceive('fire')->with('recurring.destroy',m::any());
|
||||||
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($recurringTransaction->user_id);
|
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($recurringTransaction->user_id);
|
||||||
$this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email');
|
$this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email');
|
||||||
$this->_repository->shouldReceive('destroy')->andReturn(false);
|
$this->_repository->shouldReceive('destroy')->andReturn(false);
|
||||||
@ -123,6 +128,8 @@ class RecurringControllerTest extends TestCase
|
|||||||
{
|
{
|
||||||
$recurringTransaction = f::create('RecurringTransaction');
|
$recurringTransaction = f::create('RecurringTransaction');
|
||||||
|
|
||||||
|
Event::shouldReceive('fire')->with('recurring.store',m::any());
|
||||||
|
|
||||||
$this->_repository->shouldReceive('store')->andReturn($recurringTransaction);
|
$this->_repository->shouldReceive('store')->andReturn($recurringTransaction);
|
||||||
$this->action('POST', 'RecurringController@store');
|
$this->action('POST', 'RecurringController@store');
|
||||||
$this->assertResponseStatus(302);
|
$this->assertResponseStatus(302);
|
||||||
@ -132,6 +139,8 @@ class RecurringControllerTest extends TestCase
|
|||||||
{
|
{
|
||||||
$recurringTransaction = f::create('RecurringTransaction');
|
$recurringTransaction = f::create('RecurringTransaction');
|
||||||
|
|
||||||
|
Event::shouldReceive('fire')->with('recurring.store',m::any());
|
||||||
|
|
||||||
$this->_repository->shouldReceive('store')->andReturn($recurringTransaction);
|
$this->_repository->shouldReceive('store')->andReturn($recurringTransaction);
|
||||||
$this->action('POST', 'RecurringController@store', ['create' => '1']);
|
$this->action('POST', 'RecurringController@store', ['create' => '1']);
|
||||||
$this->assertResponseStatus(302);
|
$this->assertResponseStatus(302);
|
||||||
@ -158,6 +167,8 @@ class RecurringControllerTest extends TestCase
|
|||||||
$this->_user->shouldReceive('getAttribute')->with('id')->andReturn($recurringTransaction->user_id);
|
$this->_user->shouldReceive('getAttribute')->with('id')->andReturn($recurringTransaction->user_id);
|
||||||
$this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email');
|
$this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email');
|
||||||
|
|
||||||
|
Event::shouldReceive('fire')->with('recurring.update',m::any());
|
||||||
|
|
||||||
$this->_repository->shouldReceive('update')->andReturn($recurringTransaction);
|
$this->_repository->shouldReceive('update')->andReturn($recurringTransaction);
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Mockery as m;
|
|
||||||
use League\FactoryMuffin\Facade as f;
|
use League\FactoryMuffin\Facade as f;
|
||||||
|
use Mockery as m;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class TransactionControllerTest
|
* Class TransactionControllerTest
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Mockery as m;
|
|
||||||
use League\FactoryMuffin\Facade as f;
|
use League\FactoryMuffin\Facade as f;
|
||||||
|
use Mockery as m;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -4,14 +4,15 @@ use League\FactoryMuffin\Facade;
|
|||||||
Facade::define(
|
Facade::define(
|
||||||
'AccountType',
|
'AccountType',
|
||||||
[
|
[
|
||||||
'description' => function() {
|
'description' => function () {
|
||||||
$types = [
|
$types = [
|
||||||
'Default account',
|
'Default account',
|
||||||
'Cash account',
|
'Cash account',
|
||||||
'Initial balance account',
|
'Initial balance account',
|
||||||
'Beneficiary account'
|
'Beneficiary account'
|
||||||
];
|
];
|
||||||
return $types[rand(0,3)];
|
|
||||||
|
return $types[rand(0, 3)];
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
);
|
);
|
@ -7,17 +7,19 @@ Facade::define(
|
|||||||
[
|
[
|
||||||
|
|
||||||
'component_id' => 'factory|Budget',
|
'component_id' => 'factory|Budget',
|
||||||
'startdate' => function () {
|
'startdate' => function () {
|
||||||
$start = new Carbon;
|
$start = new Carbon;
|
||||||
$start->startOfMonth();
|
$start->startOfMonth();
|
||||||
return $start;
|
|
||||||
},
|
return $start;
|
||||||
'amount' => 100,
|
},
|
||||||
'repeats' => 'boolean',
|
'amount' => 100,
|
||||||
'repeat_freq' => function(){
|
'repeats' => 'boolean',
|
||||||
$frequencies = ['daily','weekly','monthly','quarterly','half-year','yearly'];
|
'repeat_freq' => function () {
|
||||||
return $frequencies[rand(0,5)];
|
$frequencies = ['daily', 'weekly', 'monthly', 'quarterly', 'half-year', 'yearly'];
|
||||||
}
|
|
||||||
|
return $frequencies[rand(0, 5)];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
]
|
]
|
||||||
|
@ -6,20 +6,22 @@ Facade::define(
|
|||||||
'LimitRepetition',
|
'LimitRepetition',
|
||||||
[
|
[
|
||||||
|
|
||||||
'limit_id' => 'factory|Limit',
|
'limit_id' => 'factory|Limit',
|
||||||
'startdate' => function () {
|
'startdate' => function () {
|
||||||
$start = new Carbon;
|
$start = new Carbon;
|
||||||
$start->startOfMonth();
|
$start->startOfMonth();
|
||||||
return $start;
|
|
||||||
|
|
||||||
},
|
return $start;
|
||||||
'enddate' => function () {
|
|
||||||
$end = new Carbon;
|
|
||||||
$end->endOfMonth();
|
|
||||||
return $end;
|
|
||||||
|
|
||||||
},
|
},
|
||||||
'amount' => 100
|
'enddate' => function () {
|
||||||
|
$end = new Carbon;
|
||||||
|
$end->endOfMonth();
|
||||||
|
|
||||||
|
return $end;
|
||||||
|
|
||||||
|
},
|
||||||
|
'amount' => 100
|
||||||
|
|
||||||
|
|
||||||
]
|
]
|
||||||
|
@ -6,25 +6,27 @@ Facade::define(
|
|||||||
'Piggybank',
|
'Piggybank',
|
||||||
[
|
[
|
||||||
|
|
||||||
'account_id' => 'factory|Account',
|
'account_id' => 'factory|Account',
|
||||||
'name' => 'string',
|
'name' => 'string',
|
||||||
'targetamount' => 'integer',
|
'targetamount' => 'integer',
|
||||||
'startdate' => function () {
|
'startdate' => function () {
|
||||||
$start = new Carbon;
|
$start = new Carbon;
|
||||||
$start->startOfMonth();
|
$start->startOfMonth();
|
||||||
return $start;
|
|
||||||
},
|
return $start;
|
||||||
'targetdate' => function () {
|
},
|
||||||
$end = new Carbon;
|
'targetdate' => function () {
|
||||||
$end->endOfMonth();
|
$end = new Carbon;
|
||||||
return $end;
|
$end->endOfMonth();
|
||||||
},
|
|
||||||
'repeats' => 0,
|
return $end;
|
||||||
'rep_length' => null,
|
},
|
||||||
'rep_times' => 0,
|
'repeats' => 0,
|
||||||
'rep_every' => 0,
|
'rep_length' => null,
|
||||||
'reminder' => null,
|
'rep_times' => 0,
|
||||||
|
'rep_every' => 0,
|
||||||
|
'reminder' => null,
|
||||||
'reminder_skip' => 0,
|
'reminder_skip' => 0,
|
||||||
'order' => 1,
|
'order' => 1,
|
||||||
]
|
]
|
||||||
);
|
);
|
@ -7,17 +7,19 @@ Facade::define(
|
|||||||
[
|
[
|
||||||
|
|
||||||
|
|
||||||
'piggybank_id' => 'factory|Piggybank',
|
'piggybank_id' => 'factory|Piggybank',
|
||||||
'startdate' => function () {
|
'startdate' => function () {
|
||||||
$start = new Carbon;
|
$start = new Carbon;
|
||||||
$start->startOfMonth();
|
$start->startOfMonth();
|
||||||
return $start;
|
|
||||||
},
|
return $start;
|
||||||
'targetdate' => function () {
|
},
|
||||||
$end = new Carbon;
|
'targetdate' => function () {
|
||||||
$end->endOfMonth();
|
$end = new Carbon;
|
||||||
return $end;
|
$end->endOfMonth();
|
||||||
},
|
|
||||||
|
return $end;
|
||||||
|
},
|
||||||
'currentamount' => 200
|
'currentamount' => 200
|
||||||
]
|
]
|
||||||
);
|
);
|
@ -1,5 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
use Carbon\Carbon;
|
|
||||||
use League\FactoryMuffin\Facade;
|
use League\FactoryMuffin\Facade;
|
||||||
|
|
||||||
Facade::define(
|
Facade::define(
|
||||||
|
@ -8,16 +8,16 @@ Facade::define(
|
|||||||
'RecurringTransaction',
|
'RecurringTransaction',
|
||||||
[
|
[
|
||||||
|
|
||||||
'user_id' => 'factory|User',
|
'user_id' => 'factory|User',
|
||||||
'name' => 'string',
|
'name' => 'string',
|
||||||
'match' => 'string',
|
'match' => 'string',
|
||||||
'amount_max' => 100,
|
'amount_max' => 100,
|
||||||
'amount_min' => 50,
|
'amount_min' => 50,
|
||||||
'date' => new Carbon,
|
'date' => new Carbon,
|
||||||
'active' => 'boolean',
|
'active' => 'boolean',
|
||||||
'automatch' => 'boolean',
|
'automatch' => 'boolean',
|
||||||
'repeat_freq' => 'monthly',
|
'repeat_freq' => 'monthly',
|
||||||
'skip' => 'boolean',
|
'skip' => 'boolean',
|
||||||
|
|
||||||
]
|
]
|
||||||
);
|
);
|
@ -1,7 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|
||||||
use Carbon\Carbon;
|
|
||||||
use League\FactoryMuffin\Facade;
|
use League\FactoryMuffin\Facade;
|
||||||
|
|
||||||
Facade::define(
|
Facade::define(
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|
||||||
use Carbon\Carbon;
|
|
||||||
use League\FactoryMuffin\Facade;
|
use League\FactoryMuffin\Facade;
|
||||||
|
|
||||||
Facade::define(
|
Facade::define(
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|
||||||
use Carbon\Carbon;
|
|
||||||
use League\FactoryMuffin\Facade;
|
use League\FactoryMuffin\Facade;
|
||||||
|
|
||||||
Facade::define(
|
Facade::define(
|
||||||
'TransactionType',
|
'TransactionType',
|
||||||
[
|
[
|
||||||
'type' => function() {
|
'type' => function () {
|
||||||
$types = ['Withdrawal','Deposit','Transfer','Opening balance'];
|
$types = ['Withdrawal', 'Deposit', 'Transfer', 'Opening balance'];
|
||||||
return $types[rand(0,3)];
|
|
||||||
}
|
return $types[rand(0, 3)];
|
||||||
|
}
|
||||||
]
|
]
|
||||||
);
|
);
|
@ -264,7 +264,7 @@ class ModelTest extends TestCase
|
|||||||
$transaction->piggybank()->associate($piggy);
|
$transaction->piggybank()->associate($piggy);
|
||||||
$transaction->save();
|
$transaction->save();
|
||||||
$this->assertEquals($transaction->piggybank_id, $piggy->id);
|
$this->assertEquals($transaction->piggybank_id, $piggy->id);
|
||||||
$this->assertEquals($piggy->transactions()->first()->id,$transaction->id);
|
$this->assertEquals($piggy->transactions()->first()->id, $transaction->id);
|
||||||
|
|
||||||
$repetition->pct();
|
$repetition->pct();
|
||||||
|
|
||||||
|
@ -71,11 +71,68 @@
|
|||||||
@endforeach
|
@endforeach
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
|
@if(count($reminders) > 0)
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12 col-md-12 col-sm-12">
|
||||||
|
<h4>Recurring transactions</h4>
|
||||||
|
<p class="text-info">These transactions are set to be expected between
|
||||||
|
{{Session::get('start')->format('j F Y')}} and {{Session::get('end')->format('j F Y')}}.</p>
|
||||||
|
<table class="table">
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Tags</th>
|
||||||
|
<th colspan="2">Amount</th>
|
||||||
|
<th>Repeats</th>
|
||||||
|
</tr>
|
||||||
|
<?php $max =0;$min = 0;?>
|
||||||
|
@foreach($reminders as $reminder)
|
||||||
|
<?php
|
||||||
|
$max += $reminder->recurringtransaction->amount_max;
|
||||||
|
$min += $reminder->recurringtransaction->amount_min;
|
||||||
|
?>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<a href="{{route('recurring.show',$reminder->recurringtransaction->id)}}">
|
||||||
|
{{{$reminder->recurringtransaction->name}}}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@foreach(explode(' ',$reminder->recurringtransaction->match) as $word)
|
||||||
|
<span class="label label-info">{{{$word}}}</span>
|
||||||
|
@endforeach
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
{{mf($reminder->recurringtransaction->amount_min)}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{mf($reminder->recurringtransaction->amount_max)}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{$reminder->recurringtransaction->repeat_freq}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="btn-group btn-group-xs">
|
||||||
|
<a href="#" class="btn btn-default">postpone</a>
|
||||||
|
<a href="#" class="btn btn-default">dismiss</a>
|
||||||
|
<a href="#" class="btn btn-default">done!</a>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
<tr>
|
||||||
|
<td colspan="2">Sum</td>
|
||||||
|
<td>{{mf($max)}}</td>
|
||||||
|
<td colspan="3">{{mf($min)}}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-12 col-md-12 col-sm-12">
|
<div class="col-lg-12 col-md-12 col-sm-12">
|
||||||
<h4>Budgets</h4>
|
|
||||||
|
|
||||||
<div id="budgets"></div>
|
<div id="budgets"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -7,9 +7,21 @@
|
|||||||
</h1>
|
</h1>
|
||||||
<p>
|
<p>
|
||||||
<a href="{{route('accounts.show',$piggyBank->account_id)}}">{{{$piggyBank->account->name}}}</a> has
|
<a href="{{route('accounts.show',$piggyBank->account_id)}}">{{{$piggyBank->account->name}}}</a> has
|
||||||
a balance of {{mf($piggyBank->account->balance())}}.
|
a balance of {{mf($balance)}}.
|
||||||
Of that {{mf($piggyBank->account->balance())}}, you have {{mf(0)}} not yet locked up in other piggy banks.
|
Of that {{mf($balance)}}, you have {{mf($leftOnAccount)}} not yet locked up in other piggy banks.
|
||||||
You can add {{mf(max(0,1))}} to this piggy bank.
|
You can add {{mf(min(max($balance,$leftOnAccount),$piggyBank->targetamount))}} to this piggy bank.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<a href="{{route('piggybanks.edit',$piggyBank->id)}}" class="btn btn-default"><span class="glyphicon glyphicon-pencil"></span> Edit</a>
|
||||||
|
<a href="{{route('piggybanks.delete',$piggyBank->id)}}" class="btn btn-danger"><span class="glyphicon glyphicon-trash"></span> Delete</a>
|
||||||
|
|
||||||
|
@if(min(max($balance,$leftOnAccount),$piggyBank->targetamount) > 0)
|
||||||
|
<a data-toggle="modal" href="{{route('piggybanks.amount.add',$piggyBank->id)}}" data-target="#modal" class="btn btn-default"><span class="glyphicon glyphicon-plus-sign"></span> Add money</a>
|
||||||
|
@endif
|
||||||
|
@if($piggyBank->currentRelevantRep()->currentamount > 0)
|
||||||
|
<a data-toggle="modal" href="{{route('piggybanks.amount.remove',$piggyBank->id)}}" data-target="#modal" class="btn btn-default"><span class="glyphicon glyphicon-minus-sign"></span> Remove money</a>
|
||||||
|
@endif
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -105,7 +117,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Current amount</td>
|
<td>Current amount</td>
|
||||||
<td>{{mf($rep->currentamount)}}</td>
|
<td>{{mf($rep->currentamount)}} of {{mf($piggyBank->targetamount)}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Start date</td>
|
<td>Start date</td>
|
||||||
|
@ -14,7 +14,7 @@ define('LARAVEL_START', microtime(true));
|
|||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require __DIR__.'/../vendor/autoload.php';
|
require __DIR__ . '/../vendor/autoload.php';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
@ -27,9 +27,8 @@ require __DIR__.'/../vendor/autoload.php';
|
|||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (file_exists($compiled = __DIR__.'/compiled.php'))
|
if (file_exists($compiled = __DIR__ . '/compiled.php')) {
|
||||||
{
|
require $compiled;
|
||||||
require $compiled;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -69,7 +68,6 @@ Illuminate\Support\ClassLoader::register();
|
|||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (is_dir($workbench = __DIR__.'/../workbench'))
|
if (is_dir($workbench = __DIR__ . '/../workbench')) {
|
||||||
{
|
Illuminate\Workbench\Starter::start($workbench);
|
||||||
Illuminate\Workbench\Starter::start($workbench);
|
|
||||||
}
|
}
|
||||||
|
@ -2,56 +2,56 @@
|
|||||||
|
|
||||||
return array(
|
return array(
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Application Path
|
| Application Path
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
|
||||||
| Here we just defined the path to the application directory. Most likely
|
| Here we just defined the path to the application directory. Most likely
|
||||||
| you will never need to change this value as the default setup should
|
| you will never need to change this value as the default setup should
|
||||||
| work perfectly fine for the vast majority of all our applications.
|
| work perfectly fine for the vast majority of all our applications.
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'app' => __DIR__.'/../app',
|
'app' => __DIR__ . '/../app',
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Public Path
|
| Public Path
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
|
||||||
| The public path contains the assets for your web application, such as
|
| The public path contains the assets for your web application, such as
|
||||||
| your JavaScript and CSS files, and also contains the primary entry
|
| your JavaScript and CSS files, and also contains the primary entry
|
||||||
| point for web requests into these applications from the outside.
|
| point for web requests into these applications from the outside.
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'public' => __DIR__.'/../public',
|
'public' => __DIR__ . '/../public',
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Base Path
|
| Base Path
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
|
||||||
| The base path is the root of the Laravel installation. Most likely you
|
| The base path is the root of the Laravel installation. Most likely you
|
||||||
| will not need to change this value. But, if for some wild reason it
|
| will not need to change this value. But, if for some wild reason it
|
||||||
| is necessary you will do so here, just proceed with some caution.
|
| is necessary you will do so here, just proceed with some caution.
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'base' => __DIR__.'/..',
|
'base' => __DIR__ . '/..',
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Storage Path
|
| Storage Path
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
|
||||||
| The storage path is used by Laravel to store cached Blade views, logs
|
| The storage path is used by Laravel to store cached Blade views, logs
|
||||||
| and other pieces of information. You may modify the path here when
|
| and other pieces of information. You may modify the path here when
|
||||||
| you want to change the location of this directory for your apps.
|
| you want to change the location of this directory for your apps.
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'storage' => __DIR__.'/../app/storage',
|
'storage' => __DIR__ . '/../app/storage',
|
||||||
|
|
||||||
);
|
);
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Carbon\Carbon;
|
|
||||||
use Firefly\Exception\FireflyException;
|
|
||||||
|
|
||||||
if (!function_exists('mf')) {
|
if (!function_exists('mf')) {
|
||||||
function mf($n, $coloured = true)
|
function mf($n, $coloured = true)
|
||||||
{
|
{
|
||||||
@ -94,6 +91,7 @@ Event::subscribe('Firefly\Helper\Form\FormTrigger');
|
|||||||
Event::subscribe('Firefly\Trigger\Limits\EloquentLimitTrigger');
|
Event::subscribe('Firefly\Trigger\Limits\EloquentLimitTrigger');
|
||||||
Event::subscribe('Firefly\Trigger\Piggybanks\EloquentPiggybankTrigger');
|
Event::subscribe('Firefly\Trigger\Piggybanks\EloquentPiggybankTrigger');
|
||||||
Event::subscribe('Firefly\Trigger\Budgets\EloquentBudgetTrigger');
|
Event::subscribe('Firefly\Trigger\Budgets\EloquentBudgetTrigger');
|
||||||
|
Event::subscribe('Firefly\Trigger\Recurring\EloquentRecurringTrigger');
|
||||||
|
|
||||||
//App::booted(
|
//App::booted(
|
||||||
// function () {
|
// function () {
|
||||||
@ -103,6 +101,4 @@ Event::subscribe('Firefly\Trigger\Budgets\EloquentBudgetTrigger');
|
|||||||
//);
|
//);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return $app;
|
return $app;
|
||||||
|
Loading…
Reference in New Issue
Block a user