mirror of
				https://github.com/firefly-iii/firefly-iii.git
				synced 2025-10-31 02:36:28 +00:00 
			
		
		
		
	Move method to correct repository.
This commit is contained in:
		| @@ -172,7 +172,7 @@ class AvailableBudgetController extends Controller | ||||
|         if (null === $currency) { | ||||
|             $currency = app('amount')->getDefaultCurrency(); | ||||
|         } | ||||
|         $availableBudget = $this->repository->setAvailableBudget($currency, $data['start'], $data['end'], $data['amount']); | ||||
|         $availableBudget = $this->abRepository->setAvailableBudget($currency, $data['start'], $data['end'], $data['amount']); | ||||
|         $manager         = new Manager; | ||||
|         $baseUrl         = $request->getSchemeAndHttpHost() . '/api/v1'; | ||||
|         $manager->setSerializer(new JsonApiSerializer($baseUrl)); | ||||
|   | ||||
| @@ -28,6 +28,7 @@ namespace FireflyIII\Api\V1\Controllers\Chart; | ||||
| use FireflyIII\Api\V1\Controllers\Controller; | ||||
| use FireflyIII\Models\AvailableBudget; | ||||
| use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; | ||||
| use FireflyIII\Repositories\Budget\OperationsRepositoryInterface; | ||||
| use FireflyIII\User; | ||||
| use Illuminate\Http\JsonResponse; | ||||
| use Illuminate\Support\Collection; | ||||
| @@ -37,11 +38,14 @@ use Illuminate\Support\Collection; | ||||
|  */ | ||||
| class AvailableBudgetController extends Controller | ||||
| { | ||||
|     /** @var OperationsRepositoryInterface */ | ||||
|     private $opsRepository; | ||||
|     /** @var BudgetRepositoryInterface */ | ||||
|     private $repository; | ||||
|  | ||||
|     /** | ||||
|      * AvailableBudgetController constructor. | ||||
|      * | ||||
|      * @codeCoverageIgnore | ||||
|      */ | ||||
|     public function __construct() | ||||
| @@ -50,9 +54,11 @@ class AvailableBudgetController extends Controller | ||||
|         $this->middleware( | ||||
|             function ($request, $next) { | ||||
|                 /** @var User $user */ | ||||
|                 $user             = auth()->user(); | ||||
|                 $this->repository = app(BudgetRepositoryInterface::class); | ||||
|                 $user                = auth()->user(); | ||||
|                 $this->repository    = app(BudgetRepositoryInterface::class); | ||||
|                 $this->opsRepository = app(OperationsRepositoryInterface::class); | ||||
|                 $this->repository->setUser($user); | ||||
|                 $this->opsRepository->setUser($user); | ||||
|  | ||||
|                 return $next($request); | ||||
|             } | ||||
| @@ -68,7 +74,7 @@ class AvailableBudgetController extends Controller | ||||
|     { | ||||
|         $currency          = $availableBudget->transactionCurrency; | ||||
|         $budgets           = $this->repository->getActiveBudgets(); | ||||
|         $budgetInformation = $this->repository->spentInPeriodMc($budgets, new Collection, $availableBudget->start_date, $availableBudget->end_date); | ||||
|         $budgetInformation = $this->opsRepository->spentInPeriodMc($budgets, new Collection, $availableBudget->start_date, $availableBudget->end_date); | ||||
|         $spent             = 0.0; | ||||
|  | ||||
|         // get for current currency | ||||
|   | ||||
| @@ -38,6 +38,7 @@ use FireflyIII\Repositories\Account\AccountRepositoryInterface; | ||||
| use FireflyIII\Repositories\Bill\BillRepositoryInterface; | ||||
| use FireflyIII\Repositories\Budget\AvailableBudgetRepositoryInterface; | ||||
| use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; | ||||
| use FireflyIII\Repositories\Budget\OperationsRepositoryInterface; | ||||
| use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface; | ||||
| use FireflyIII\User; | ||||
| use Illuminate\Http\JsonResponse; | ||||
| @@ -59,6 +60,9 @@ class SummaryController extends Controller | ||||
|     /** @var CurrencyRepositoryInterface */ | ||||
|     private $currencyRepos; | ||||
|  | ||||
|     /** @var OperationsRepositoryInterface */ | ||||
|     private $opsRepository; | ||||
|  | ||||
|     /** | ||||
|      * SummaryController constructor. | ||||
|      * | ||||
| @@ -76,12 +80,14 @@ class SummaryController extends Controller | ||||
|                 $this->budgetRepository  = app(BudgetRepositoryInterface::class); | ||||
|                 $this->accountRepository = app(AccountRepositoryInterface::class); | ||||
|                 $this->abRepository      = app(AvailableBudgetRepositoryInterface::class); | ||||
|                 $this->opsRepository = app(OperationsRepositoryInterface::class); | ||||
|  | ||||
|                 $this->billRepository->setUser($user); | ||||
|                 $this->currencyRepos->setUser($user); | ||||
|                 $this->budgetRepository->setUser($user); | ||||
|                 $this->accountRepository->setUser($user); | ||||
|                 $this->abRepository->setUser($user); | ||||
|                 $this->opsRepository->setUser($user); | ||||
|  | ||||
|  | ||||
|                 return $next($request); | ||||
| @@ -343,7 +349,7 @@ class SummaryController extends Controller | ||||
|         $today     = new Carbon; | ||||
|         $available = $this->abRepository->getAvailableBudgetWithCurrency($start, $end); | ||||
|         $budgets   = $this->budgetRepository->getActiveBudgets(); | ||||
|         $spentInfo = $this->budgetRepository->spentInPeriodMc($budgets, new Collection, $start, $end); | ||||
|         $spentInfo = $this->opsRepository->spentInPeriodMc($budgets, new Collection, $start, $end); | ||||
|         foreach ($available as $currencyId => $amount) { | ||||
|             $currency = $this->currencyRepos->findNull($currencyId); | ||||
|             if (null === $currency) { | ||||
|   | ||||
| @@ -27,6 +27,7 @@ use FireflyIII\Models\Budget; | ||||
| use FireflyIII\Models\BudgetLimit; | ||||
| use FireflyIII\Repositories\Budget\BudgetLimitRepositoryInterface; | ||||
| use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; | ||||
| use FireflyIII\Repositories\Budget\OperationsRepositoryInterface; | ||||
| use Illuminate\Support\Collection; | ||||
| use Log; | ||||
|  | ||||
| @@ -39,6 +40,8 @@ class BudgetReportHelper implements BudgetReportHelperInterface | ||||
| { | ||||
|     /** @var BudgetLimitRepositoryInterface */ | ||||
|     private $blRepository; | ||||
|     /** @var OperationsRepositoryInterface */ | ||||
|     private $opsRepository; | ||||
|     /** @var BudgetRepositoryInterface The budget repository interface. */ | ||||
|     private $repository; | ||||
|  | ||||
| @@ -47,9 +50,9 @@ class BudgetReportHelper implements BudgetReportHelperInterface | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
|         $this->repository   = app(BudgetRepositoryInterface::class); | ||||
|         $this->blRepository = app(BudgetLimitRepositoryInterface::class); | ||||
|  | ||||
|         $this->repository    = app(BudgetRepositoryInterface::class); | ||||
|         $this->blRepository  = app(BudgetLimitRepositoryInterface::class); | ||||
|         $this->opsRepository = app(OperationsRepositoryInterface::class); | ||||
|         if ('testing' === config('app.env')) { | ||||
|             Log::warning(sprintf('%s should not be instantiated in the TEST environment!', get_class($this))); | ||||
|         } | ||||
| @@ -85,7 +88,7 @@ class BudgetReportHelper implements BudgetReportHelperInterface | ||||
|             ]; | ||||
|             // get multi currency expenses first: | ||||
|             $budgetLimits    = $this->blRepository->getBudgetLimits($budget, $start, $end); | ||||
|             $expenses        = $this->repository->spentInPeriodMc(new Collection([$budget]), $accounts, $start, $end); | ||||
|             $expenses        = $this->opsRepository->spentInPeriodMc(new Collection([$budget]), $accounts, $start, $end); | ||||
|             $defaultCurrency = app('amount')->getDefaultCurrencyByUser($budget->user); | ||||
|             Log::debug(sprintf('Default currency for getBudgetReport is %s', $defaultCurrency->code)); | ||||
|             if (0 === count($expenses)) { | ||||
|   | ||||
| @@ -165,7 +165,7 @@ class AmountController extends Controller | ||||
|         $amount          = $request->get('amount'); | ||||
|         $page            = 0 === $request->integer('page') ? 1 : $request->integer('page'); | ||||
|         $this->repository->cleanupBudgets(); | ||||
|         $this->repository->setAvailableBudget($defaultCurrency, $start, $end, $amount); | ||||
|         $this->abRepository->setAvailableBudget($defaultCurrency, $start, $end, $amount); | ||||
|         app('preferences')->mark(); | ||||
|  | ||||
|         return redirect(route('budgets.index', [$start->format('Y-m-d')]) . '?page=' . $page); | ||||
|   | ||||
| @@ -139,6 +139,34 @@ class AvailableBudgetRepository implements AvailableBudgetRepositoryInterface | ||||
|         return $query->get(); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * @param TransactionCurrency $currency | ||||
|      * @param Carbon              $start | ||||
|      * @param Carbon              $end | ||||
|      * @param string              $amount | ||||
|      * | ||||
|      * @return AvailableBudget | ||||
|      */ | ||||
|     public function setAvailableBudget(TransactionCurrency $currency, Carbon $start, Carbon $end, string $amount): AvailableBudget | ||||
|     { | ||||
|         $availableBudget = $this->user->availableBudgets() | ||||
|                                       ->where('transaction_currency_id', $currency->id) | ||||
|                                       ->where('start_date', $start->format('Y-m-d 00:00:00')) | ||||
|                                       ->where('end_date', $end->format('Y-m-d 00:00:00'))->first(); | ||||
|         if (null === $availableBudget) { | ||||
|             $availableBudget = new AvailableBudget; | ||||
|             $availableBudget->user()->associate($this->user); | ||||
|             $availableBudget->transactionCurrency()->associate($currency); | ||||
|             $availableBudget->start_date = $start->format('Y-m-d 00:00:00'); | ||||
|             $availableBudget->end_date   = $end->format('Y-m-d 00:00:00'); | ||||
|         } | ||||
|         $availableBudget->amount = $amount; | ||||
|         $availableBudget->save(); | ||||
|  | ||||
|         return $availableBudget; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param User $user | ||||
|      */ | ||||
|   | ||||
| @@ -65,6 +65,17 @@ interface AvailableBudgetRepositoryInterface | ||||
|      */ | ||||
|     public function getAvailableBudgetsByCurrency(TransactionCurrency $currency): Collection; | ||||
|  | ||||
|     /** | ||||
|      * @param TransactionCurrency $currency | ||||
|      * @param Carbon              $start | ||||
|      * @param Carbon              $end | ||||
|      * @param string              $amount | ||||
|      * | ||||
|      * @return AvailableBudget | ||||
|      */ | ||||
|     public function setAvailableBudget(TransactionCurrency $currency, Carbon $start, Carbon $end, string $amount): AvailableBudget; | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * Returns all available budget objects. | ||||
|      * | ||||
|   | ||||
| @@ -258,33 +258,6 @@ class BudgetRepository implements BudgetRepositoryInterface | ||||
|         return $search->get(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param TransactionCurrency $currency | ||||
|      * @param Carbon              $start | ||||
|      * @param Carbon              $end | ||||
|      * @param string              $amount | ||||
|      * | ||||
|      * @return AvailableBudget | ||||
|      */ | ||||
|     public function setAvailableBudget(TransactionCurrency $currency, Carbon $start, Carbon $end, string $amount): AvailableBudget | ||||
|     { | ||||
|         $availableBudget = $this->user->availableBudgets() | ||||
|                                       ->where('transaction_currency_id', $currency->id) | ||||
|                                       ->where('start_date', $start->format('Y-m-d 00:00:00')) | ||||
|                                       ->where('end_date', $end->format('Y-m-d 00:00:00'))->first(); | ||||
|         if (null === $availableBudget) { | ||||
|             $availableBudget = new AvailableBudget; | ||||
|             $availableBudget->user()->associate($this->user); | ||||
|             $availableBudget->transactionCurrency()->associate($currency); | ||||
|             $availableBudget->start_date = $start->format('Y-m-d 00:00:00'); | ||||
|             $availableBudget->end_date   = $end->format('Y-m-d 00:00:00'); | ||||
|         } | ||||
|         $availableBudget->amount = $amount; | ||||
|         $availableBudget->save(); | ||||
|  | ||||
|         return $availableBudget; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param Budget $budget | ||||
|      * @param int    $order | ||||
| @@ -303,67 +276,6 @@ class BudgetRepository implements BudgetRepositoryInterface | ||||
|         $this->user = $user; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param Collection $budgets | ||||
|      * @param Collection $accounts | ||||
|      * @param Carbon     $start | ||||
|      * @param Carbon     $end | ||||
|      * TODO refactor me. | ||||
|      * | ||||
|      * @return array | ||||
|      */ | ||||
|     public function spentInPeriodMc(Collection $budgets, Collection $accounts, Carbon $start, Carbon $end): array | ||||
|     { | ||||
|         /** @var GroupCollectorInterface $collector */ | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector->setUser($this->user); | ||||
|         $collector->setRange($start, $end)->setBudgets($budgets)->withBudgetInformation(); | ||||
|  | ||||
|         if ($accounts->count() > 0) { | ||||
|             $collector->setAccounts($accounts); | ||||
|         } | ||||
|         // TODO possible candidate for getExtractedGroups | ||||
|         $set        = $collector->getGroups(); | ||||
|         $return     = []; | ||||
|         $total      = []; | ||||
|         $currencies = []; | ||||
|         /** @var array $group */ | ||||
|         foreach ($set as $group) { | ||||
|             /** @var array $transaction */ | ||||
|             foreach ($group['transactions'] as $transaction) { | ||||
|                 $code = $transaction['currency_code']; | ||||
|                 if (!isset($currencies[$code])) { | ||||
|                     $currencies[$code] = [ | ||||
|                         'id'             => $transaction['currency_id'], | ||||
|                         'decimal_places' => $transaction['currency_decimal_places'], | ||||
|                         'code'           => $transaction['currency_code'], | ||||
|                         'name'           => $transaction['currency_name'], | ||||
|                         'symbol'         => $transaction['currency_symbol'], | ||||
|                     ]; | ||||
|                 } | ||||
|                 $total[$code] = isset($total[$code]) ? bcadd($total[$code], $transaction['amount']) : $transaction['amount']; | ||||
|             } | ||||
|         } | ||||
|         /** | ||||
|          * @var string $code | ||||
|          * @var string $spent | ||||
|          */ | ||||
|         foreach ($total as $code => $spent) { | ||||
|             /** @var TransactionCurrency $currency */ | ||||
|             $currency = $currencies[$code]; | ||||
|             $return[] = [ | ||||
|                 'currency_id'             => $currency['id'], | ||||
|                 'currency_code'           => $code, | ||||
|                 'currency_name'           => $currency['name'], | ||||
|                 'currency_symbol'         => $currency['symbol'], | ||||
|                 'currency_decimal_places' => $currency['decimal_places'], | ||||
|                 'amount'                  => $spent, | ||||
|             ]; | ||||
|         } | ||||
|  | ||||
|         return $return; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param Collection $accounts | ||||
|      * @param Carbon     $start | ||||
|   | ||||
| @@ -114,40 +114,17 @@ interface BudgetRepositoryInterface | ||||
|      */ | ||||
|     public function searchBudget(string $query): Collection; | ||||
|  | ||||
|     /** | ||||
|      * @param TransactionCurrency $currency | ||||
|      * @param Carbon              $start | ||||
|      * @param Carbon              $end | ||||
|      * @param string              $amount | ||||
|      * | ||||
|      * @return AvailableBudget | ||||
|      */ | ||||
|     public function setAvailableBudget(TransactionCurrency $currency, Carbon $start, Carbon $end, string $amount): AvailableBudget; | ||||
|  | ||||
|     /** | ||||
|      * @param Budget $budget | ||||
|      * @param int    $order | ||||
|      */ | ||||
|     public function setBudgetOrder(Budget $budget, int $order): void; | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * @param User $user | ||||
|      */ | ||||
|     public function setUser(User $user); | ||||
|  | ||||
|     /** | ||||
|      * Return multi-currency spent information. | ||||
|      * | ||||
|      * @param Collection $budgets | ||||
|      * @param Collection $accounts | ||||
|      * @param Carbon     $start | ||||
|      * @param Carbon     $end | ||||
|      * | ||||
|      * @return array | ||||
|      */ | ||||
|     public function spentInPeriodMc(Collection $budgets, Collection $accounts, Carbon $start, Carbon $end): array; | ||||
|  | ||||
|     /** | ||||
|      * @param Collection $accounts | ||||
|      * @param Carbon     $start | ||||
|   | ||||
| @@ -28,6 +28,7 @@ use FireflyIII\Helpers\Collector\GroupCollectorInterface; | ||||
| use FireflyIII\Models\AccountType; | ||||
| use FireflyIII\Models\Budget; | ||||
| use FireflyIII\Models\BudgetLimit; | ||||
| use FireflyIII\Models\TransactionCurrency; | ||||
| use FireflyIII\Repositories\Account\AccountRepositoryInterface; | ||||
| use FireflyIII\User; | ||||
| use Illuminate\Support\Collection; | ||||
| @@ -216,6 +217,67 @@ class OperationsRepository implements OperationsRepositoryInterface | ||||
|         return $collector->getSum(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param Collection $budgets | ||||
|      * @param Collection $accounts | ||||
|      * @param Carbon     $start | ||||
|      * @param Carbon     $end | ||||
|      * | ||||
|      * @return array | ||||
|      * @deprecated | ||||
|      */ | ||||
|     public function spentInPeriodMc(Collection $budgets, Collection $accounts, Carbon $start, Carbon $end): array | ||||
|     { | ||||
|         /** @var GroupCollectorInterface $collector */ | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector->setUser($this->user); | ||||
|         $collector->setRange($start, $end)->setBudgets($budgets)->withBudgetInformation(); | ||||
|  | ||||
|         if ($accounts->count() > 0) { | ||||
|             $collector->setAccounts($accounts); | ||||
|         } | ||||
|         // TODO possible candidate for getExtractedGroups | ||||
|         $set        = $collector->getGroups(); | ||||
|         $return     = []; | ||||
|         $total      = []; | ||||
|         $currencies = []; | ||||
|         /** @var array $group */ | ||||
|         foreach ($set as $group) { | ||||
|             /** @var array $transaction */ | ||||
|             foreach ($group['transactions'] as $transaction) { | ||||
|                 $code = $transaction['currency_code']; | ||||
|                 if (!isset($currencies[$code])) { | ||||
|                     $currencies[$code] = [ | ||||
|                         'id'             => $transaction['currency_id'], | ||||
|                         'decimal_places' => $transaction['currency_decimal_places'], | ||||
|                         'code'           => $transaction['currency_code'], | ||||
|                         'name'           => $transaction['currency_name'], | ||||
|                         'symbol'         => $transaction['currency_symbol'], | ||||
|                     ]; | ||||
|                 } | ||||
|                 $total[$code] = isset($total[$code]) ? bcadd($total[$code], $transaction['amount']) : $transaction['amount']; | ||||
|             } | ||||
|         } | ||||
|         /** | ||||
|          * @var string $code | ||||
|          * @var string $spent | ||||
|          */ | ||||
|         foreach ($total as $code => $spent) { | ||||
|             /** @var TransactionCurrency $currency */ | ||||
|             $currency = $currencies[$code]; | ||||
|             $return[] = [ | ||||
|                 'currency_id'             => $currency['id'], | ||||
|                 'currency_code'           => $code, | ||||
|                 'currency_name'           => $currency['name'], | ||||
|                 'currency_symbol'         => $currency['symbol'], | ||||
|                 'currency_decimal_places' => $currency['decimal_places'], | ||||
|                 'amount'                  => $spent, | ||||
|             ]; | ||||
|         } | ||||
|  | ||||
|         return $return; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * For now, simply refer to whichever repository holds this function. | ||||
|      * TODO might be done better in the future. | ||||
|   | ||||
| @@ -83,5 +83,17 @@ interface OperationsRepositoryInterface | ||||
|      */ | ||||
|     public function spentInPeriod(Collection $budgets, Collection $accounts, Carbon $start, Carbon $end): string; | ||||
|  | ||||
|     /** | ||||
|      * Return multi-currency spent information. | ||||
|      * | ||||
|      * @param Collection $budgets | ||||
|      * @param Collection $accounts | ||||
|      * @param Carbon     $start | ||||
|      * @param Carbon     $end | ||||
|      * | ||||
|      * @return array | ||||
|      * @deprecated | ||||
|      */ | ||||
|     public function spentInPeriodMc(Collection $budgets, Collection $accounts, Carbon $start, Carbon $end): array; | ||||
|  | ||||
| } | ||||
| @@ -26,6 +26,7 @@ namespace FireflyIII\Transformers; | ||||
|  | ||||
| use FireflyIII\Models\AvailableBudget; | ||||
| use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; | ||||
| use FireflyIII\Repositories\Budget\OperationsRepositoryInterface; | ||||
| use Illuminate\Support\Collection; | ||||
| use Log; | ||||
|  | ||||
| @@ -34,6 +35,8 @@ use Log; | ||||
|  */ | ||||
| class AvailableBudgetTransformer extends AbstractTransformer | ||||
| { | ||||
|     /** @var OperationsRepositoryInterface */ | ||||
|     private $opsRepository; | ||||
|     /** @var BudgetRepositoryInterface */ | ||||
|     private $repository; | ||||
|  | ||||
| @@ -44,7 +47,8 @@ class AvailableBudgetTransformer extends AbstractTransformer | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
|         $this->repository = app(BudgetRepositoryInterface::class); | ||||
|         $this->repository    = app(BudgetRepositoryInterface::class); | ||||
|         $this->opsRepository = app(OperationsRepositoryInterface::class); | ||||
|         if ('testing' === config('app.env')) { | ||||
|             Log::warning(sprintf('%s should not be instantiated in the TEST environment!', get_class($this))); | ||||
|         } | ||||
| @@ -99,7 +103,7 @@ class AvailableBudgetTransformer extends AbstractTransformer | ||||
|     { | ||||
|         $allActive = $this->repository->getActiveBudgets(); | ||||
|  | ||||
|         return $this->repository->spentInPeriodMc( | ||||
|         return $this->opsRepository->spentInPeriodMc( | ||||
|             $allActive, new Collection, $this->parameters->get('start'), $this->parameters->get('end') | ||||
|         ); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user