diff --git a/app/Helpers/Csv/Converter/BudgetId.php b/app/Helpers/Csv/Converter/BudgetId.php index e1368f9299..77a334130c 100644 --- a/app/Helpers/Csv/Converter/BudgetId.php +++ b/app/Helpers/Csv/Converter/BudgetId.php @@ -4,6 +4,7 @@ namespace FireflyIII\Helpers\Csv\Converter; use Auth; use FireflyIII\Models\Budget; +use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; /** * Class BudgetId @@ -18,11 +19,15 @@ class BudgetId extends BasicConverter implements ConverterInterface */ public function convert() { + /** @var BudgetRepositoryInterface $repository */ + $repository = app('FireflyIII\Repositories\Budget\BudgetRepositoryInterface'); + + // is mapped? Then it's easy! if (isset($this->mapped[$this->index][$this->value])) { - $budget = Auth::user()->budgets()->find($this->mapped[$this->index][$this->value]); + $budget = $repository->find($this->mapped[$this->index][$this->value]); } else { - $budget = Auth::user()->budgets()->find($this->value); + $budget = $repository->find($this->value); } return $budget; diff --git a/app/Helpers/Csv/Converter/BudgetName.php b/app/Helpers/Csv/Converter/BudgetName.php index 17f80557b5..dcf8844d3d 100644 --- a/app/Helpers/Csv/Converter/BudgetName.php +++ b/app/Helpers/Csv/Converter/BudgetName.php @@ -4,6 +4,7 @@ namespace FireflyIII\Helpers\Csv\Converter; use Auth; use FireflyIII\Models\Budget; +use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; /** * Class BudgetName @@ -18,12 +19,14 @@ class BudgetName extends BasicConverter implements ConverterInterface */ public function convert() { + /** @var BudgetRepositoryInterface $repository */ + $repository = app('FireflyIII\Repositories\Budget\BudgetRepositoryInterface'); + // is mapped? Then it's easy! if (isset($this->mapped[$this->index][$this->value])) { - $budget = Auth::user()->budgets()->find($this->mapped[$this->index][$this->value]); // see issue #180 + $budget = $repository->find($this->mapped[$this->index][$this->value]); } else { - $repository = app('FireflyIII\Repositories\Budget\BudgetRepositoryInterface'); - $budget = $repository->store(['name' => $this->value, 'user' => Auth::user()->id]); + $budget = $repository->store(['name' => $this->value, 'user' => Auth::user()->id]); } return $budget; diff --git a/app/Repositories/Budget/BudgetRepository.php b/app/Repositories/Budget/BudgetRepository.php index 3def0840c6..ddacb85381 100644 --- a/app/Repositories/Budget/BudgetRepository.php +++ b/app/Repositories/Budget/BudgetRepository.php @@ -74,6 +74,23 @@ class BudgetRepository extends ComponentRepository implements BudgetRepositoryIn return true; } + /** + * Find a budget. + * + * @param int $budgetId + * + * @return Budget + */ + public function find(int $budgetId): Budget + { + $budget = $this->user->budgets()->find($budgetId); + if (is_null($budget)) { + $budget = new Budget; + } + + return $budget; + } + /** * @param Budget $budget * diff --git a/app/Repositories/Budget/BudgetRepositoryInterface.php b/app/Repositories/Budget/BudgetRepositoryInterface.php index f14526831d..01735d9313 100644 --- a/app/Repositories/Budget/BudgetRepositoryInterface.php +++ b/app/Repositories/Budget/BudgetRepositoryInterface.php @@ -17,7 +17,6 @@ use Illuminate\Support\Collection; interface BudgetRepositoryInterface { - /** * * Same as ::spentInPeriod but corrects journals for a set of accounts @@ -43,6 +42,15 @@ interface BudgetRepositoryInterface */ public function destroy(Budget $budget); + /** + * Find a budget. + * + * @param int $budgetId + * + * @return Budget + */ + public function find(int $budgetId): Budget; + /** * @param Budget $budget *