diff --git a/app/Providers/FireflyServiceProvider.php b/app/Providers/FireflyServiceProvider.php index 0349308e3b..8b7eba73ff 100644 --- a/app/Providers/FireflyServiceProvider.php +++ b/app/Providers/FireflyServiceProvider.php @@ -84,7 +84,6 @@ class FireflyServiceProvider extends ServiceProvider ); $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\Tag\TagRepositoryInterface', 'FireflyIII\Repositories\Tag\TagRepository'); $this->app->bind('FireflyIII\Repositories\Rule\RuleRepositoryInterface', 'FireflyIII\Repositories\Rule\RuleRepository'); diff --git a/app/Providers/PiggyBankServiceProvider.php b/app/Providers/PiggyBankServiceProvider.php new file mode 100644 index 0000000000..2586776891 --- /dev/null +++ b/app/Providers/PiggyBankServiceProvider.php @@ -0,0 +1,50 @@ +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); + } + ); + } +} diff --git a/app/Repositories/PiggyBank/PiggyBankRepository.php b/app/Repositories/PiggyBank/PiggyBankRepository.php index ffbb24063d..8fce9124fe 100644 --- a/app/Repositories/PiggyBank/PiggyBankRepository.php +++ b/app/Repositories/PiggyBank/PiggyBankRepository.php @@ -3,12 +3,13 @@ declare(strict_types = 1); namespace FireflyIII\Repositories\PiggyBank; -use Auth; use Carbon\Carbon; use DB; use FireflyIII\Models\PiggyBank; use FireflyIII\Models\PiggyBankEvent; +use FireflyIII\User; use Illuminate\Support\Collection; +use Log; /** * Class PiggyBankRepository @@ -18,6 +19,20 @@ use Illuminate\Support\Collection; 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 string $amount @@ -66,7 +81,7 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface */ 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() { /** @var Collection $set */ - $set = Auth::user()->piggyBanks()->orderBy('order', 'ASC')->get(); + $set = $this->user->piggyBanks()->orderBy('order', 'ASC')->get(); return $set; } @@ -90,7 +105,7 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface // split query to make it work in sqlite: $set = PiggyBank:: 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) { $e->order = 0; $e->save(); @@ -110,7 +125,7 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface */ 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.*']); if ($piggyBank) { $piggyBank->order = $order;