diff --git a/app/controllers/PiggybankController.php b/app/controllers/PiggybankController.php index f0521704c2..2f2310c75a 100644 --- a/app/controllers/PiggybankController.php +++ b/app/controllers/PiggybankController.php @@ -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) . '".'); diff --git a/app/lib/FireflyIII/Event/Piggybank.php b/app/lib/FireflyIII/Event/Piggybank.php new file mode 100644 index 0000000000..0a2da1922b --- /dev/null +++ b/app/lib/FireflyIII/Event/Piggybank.php @@ -0,0 +1,56 @@ + 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'); + } +} \ No newline at end of file diff --git a/bootstrap/start.php b/bootstrap/start.php index dd65f6590a..d476cc0f57 100644 --- a/bootstrap/start.php +++ b/bootstrap/start.php @@ -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.