Events that keep track of piggy bank money add/remove

This commit is contained in:
James Cole 2014-11-15 09:32:25 +01:00
parent 6eb9188690
commit 8c949e6190
3 changed files with 71 additions and 0 deletions

View File

@ -19,6 +19,7 @@ class PiggybankController extends BaseController
}
/**
* Add money to piggy bank
* @param Piggybank $piggybank
*
* @return $this
@ -150,6 +151,7 @@ class PiggybankController extends BaseController
}
/**
* POST add money to piggy bank
* @param Piggybank $piggybank
*
* @return \Illuminate\Http\RedirectResponse
@ -170,6 +172,12 @@ class PiggybankController extends BaseController
$repetition = $piggybank->currentRelevantRep();
$repetition->currentamount += $amount;
$repetition->save();
/*
* Create event!
*/
Event::fire('piggybank.addMoney',[$piggybank, $amount]);
Session::flash('success', 'Added ' . mf($amount, false) . ' to "' . e($piggybank->name) . '".');
} else {
Session::flash('error', 'Could not add ' . mf($amount, false) . ' to "' . e($piggybank->name) . '".');
@ -193,6 +201,12 @@ class PiggybankController extends BaseController
$repetition = $piggybank->currentRelevantRep();
$repetition->currentamount -= $amount;
$repetition->save();
/*
* Create event!
*/
Event::fire('piggybank.removeMoney',[$piggybank, $amount]);
Session::flash('success', 'Removed ' . mf($amount, false) . ' from "' . e($piggybank->name) . '".');
} else {
Session::flash('error', 'Could not remove ' . mf($amount, false) . ' from "' . e($piggybank->name) . '".');

View File

@ -0,0 +1,56 @@
<?php
namespace FireflyIII\Event;
use Carbon\Carbon;
use Illuminate\Events\Dispatcher;
class Piggybank {
/**
* @param \Piggybank $piggybank
* @param float $amount
*/
public function addMoney(\Piggybank $piggybank, $amount = 0.0) {
if($amount > 0) {
$event = new \PiggybankEvent;
$event->piggybank()->associate($piggybank);
$event->amount = floatval($amount);
$event->date = new Carbon;
if(!$event->validate()) {
var_dump($event->errors());
exit();
}
$event->save();
}
}
/**
* @param \Piggybank $piggybank
* @param float $amount
*/
public function removeMoney(\Piggybank $piggybank, $amount = 0.0) {
$amount = $amount * -1;
if($amount < 0) {
$event = new \PiggybankEvent;
$event->piggybank()->associate($piggybank);
$event->amount = floatval($amount);
$event->date = new Carbon;
if(!$event->validate()) {
var_dump($event->errors());
exit();
}
$event->save();
}
}
/**
* @param Dispatcher $events
*/
public function subscribe(Dispatcher $events)
{
$events->listen('piggybank.addMoney', 'FireflyIII\Event\Piggybank@addMoney');
$events->listen('piggybank.removeMoney', 'FireflyIII\Event\Piggybank@removeMoney');
}
}

View File

@ -92,6 +92,7 @@ require $framework . '/Illuminate/Foundation/start.php';
//Event::subscribe('Firefly\Trigger\Budgets\EloquentBudgetTrigger');
//Event::subscribe('Firefly\Trigger\Recurring\EloquentRecurringTrigger');
//Event::subscribe('Firefly\Trigger\Journals\EloquentJournalTrigger');
Event::subscribe('FireflyIII\Event\Piggybank');
// TODO event that creates a relationship between transaction journals and recurring events when created.
// TODO event that updates the relationship between transaction journals and recurring events when edited.