Update piggy bank repository / provider.

This commit is contained in:
James Cole
2016-03-03 08:58:15 +01:00
parent 5ce4104644
commit 7800b0a7f5
3 changed files with 70 additions and 6 deletions

View File

@@ -84,7 +84,6 @@ class FireflyServiceProvider extends ServiceProvider
); );
$this->app->bind('FireflyIII\Repositories\Category\SingleCategoryRepositoryInterface', 'FireflyIII\Repositories\Category\SingleCategoryRepository'); $this->app->bind('FireflyIII\Repositories\Category\SingleCategoryRepositoryInterface', 'FireflyIII\Repositories\Category\SingleCategoryRepository');
$this->app->bind('FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface', 'FireflyIII\Repositories\PiggyBank\PiggyBankRepository');
$this->app->bind('FireflyIII\Repositories\Currency\CurrencyRepositoryInterface', 'FireflyIII\Repositories\Currency\CurrencyRepository'); $this->app->bind('FireflyIII\Repositories\Currency\CurrencyRepositoryInterface', 'FireflyIII\Repositories\Currency\CurrencyRepository');
$this->app->bind('FireflyIII\Repositories\Tag\TagRepositoryInterface', 'FireflyIII\Repositories\Tag\TagRepository'); $this->app->bind('FireflyIII\Repositories\Tag\TagRepositoryInterface', 'FireflyIII\Repositories\Tag\TagRepository');
$this->app->bind('FireflyIII\Repositories\Rule\RuleRepositoryInterface', 'FireflyIII\Repositories\Rule\RuleRepository'); $this->app->bind('FireflyIII\Repositories\Rule\RuleRepositoryInterface', 'FireflyIII\Repositories\Rule\RuleRepository');

View File

@@ -0,0 +1,50 @@
<?php
namespace FireflyIII\Providers;
use Auth;
use FireflyIII\Exceptions\FireflyException;
use Illuminate\Foundation\Application;
use Illuminate\Support\ServiceProvider;
/**
* Class PiggyBankServiceProvider
*
* @package FireflyIII\Providers
*/
class PiggyBankServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
$this->app->bind(
'FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface',
function (Application $app, array $arguments) {
if (!isset($arguments[0]) && Auth::check()) {
return app('FireflyIII\Repositories\PiggyBank\PiggyBankRepository', [Auth::user()]);
} else {
if (!isset($arguments[0]) && !Auth::check()) {
throw new FireflyException('There is no user present.');
}
}
return app('FireflyIII\Repositories\PiggyBank\PiggyBankRepository', $arguments);
}
);
}
}

View File

@@ -3,12 +3,13 @@ declare(strict_types = 1);
namespace FireflyIII\Repositories\PiggyBank; namespace FireflyIII\Repositories\PiggyBank;
use Auth;
use Carbon\Carbon; use Carbon\Carbon;
use DB; use DB;
use FireflyIII\Models\PiggyBank; use FireflyIII\Models\PiggyBank;
use FireflyIII\Models\PiggyBankEvent; use FireflyIII\Models\PiggyBankEvent;
use FireflyIII\User;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Log;
/** /**
* Class PiggyBankRepository * Class PiggyBankRepository
@@ -18,6 +19,20 @@ use Illuminate\Support\Collection;
class PiggyBankRepository implements PiggyBankRepositoryInterface class PiggyBankRepository implements PiggyBankRepositoryInterface
{ {
/** @var User */
private $user;
/**
* BillRepository constructor.
*
* @param User $user
*/
public function __construct(User $user)
{
Log::debug('Constructed piggy bank repository for user #' . $user->id . ' (' . $user->email . ')');
$this->user = $user;
}
/** /**
* @param PiggyBank $piggyBank * @param PiggyBank $piggyBank
* @param string $amount * @param string $amount
@@ -66,7 +81,7 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
*/ */
public function getMaxOrder() public function getMaxOrder()
{ {
return intval(Auth::user()->piggyBanks()->max('order')); return intval($this->user->piggyBanks()->max('order'));
} }
/** /**
@@ -75,7 +90,7 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
public function getPiggyBanks() public function getPiggyBanks()
{ {
/** @var Collection $set */ /** @var Collection $set */
$set = Auth::user()->piggyBanks()->orderBy('order', 'ASC')->get(); $set = $this->user->piggyBanks()->orderBy('order', 'ASC')->get();
return $set; return $set;
} }
@@ -90,7 +105,7 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
// split query to make it work in sqlite: // split query to make it work in sqlite:
$set = PiggyBank:: $set = PiggyBank::
leftJoin('accounts', 'accounts.id', '=', 'piggy_banks.id') leftJoin('accounts', 'accounts.id', '=', 'piggy_banks.id')
->where('accounts.user_id', Auth::user()->id)->get(['piggy_banks.*']); ->where('accounts.user_id', $this->user->id)->get(['piggy_banks.*']);
foreach ($set as $e) { foreach ($set as $e) {
$e->order = 0; $e->order = 0;
$e->save(); $e->save();
@@ -110,7 +125,7 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
*/ */
public function setOrder(int $piggyBankId, int $order) public function setOrder(int $piggyBankId, int $order)
{ {
$piggyBank = PiggyBank::leftJoin('accounts', 'accounts.id', '=', 'piggy_banks.account_id')->where('accounts.user_id', Auth::user()->id) $piggyBank = PiggyBank::leftJoin('accounts', 'accounts.id', '=', 'piggy_banks.account_id')->where('accounts.user_id', $this->user->id)
->where('piggy_banks.id', $piggyBankId)->first(['piggy_banks.*']); ->where('piggy_banks.id', $piggyBankId)->first(['piggy_banks.*']);
if ($piggyBank) { if ($piggyBank) {
$piggyBank->order = $order; $piggyBank->order = $order;