Move method to correct repository.

This commit is contained in:
James Cole 2019-08-30 08:00:52 +02:00
parent 1da4597f94
commit 97d87b0657
9 changed files with 110 additions and 91 deletions

View File

@ -36,6 +36,7 @@ use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Models\TransactionType; use FireflyIII\Models\TransactionType;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Bill\BillRepositoryInterface; use FireflyIII\Repositories\Bill\BillRepositoryInterface;
use FireflyIII\Repositories\Budget\AvailableBudgetRepositoryInterface;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface; use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
use FireflyIII\User; use FireflyIII\User;
@ -47,6 +48,8 @@ use Illuminate\Support\Collection;
*/ */
class SummaryController extends Controller class SummaryController extends Controller
{ {
/** @var AvailableBudgetRepositoryInterface */
private $abRepository;
/** @var AccountRepositoryInterface */ /** @var AccountRepositoryInterface */
private $accountRepository; private $accountRepository;
/** @var BillRepositoryInterface */ /** @var BillRepositoryInterface */
@ -58,6 +61,7 @@ class SummaryController extends Controller
/** /**
* SummaryController constructor. * SummaryController constructor.
*
* @codeCoverageIgnore * @codeCoverageIgnore
*/ */
public function __construct() public function __construct()
@ -71,11 +75,13 @@ class SummaryController extends Controller
$this->billRepository = app(BillRepositoryInterface::class); $this->billRepository = app(BillRepositoryInterface::class);
$this->budgetRepository = app(BudgetRepositoryInterface::class); $this->budgetRepository = app(BudgetRepositoryInterface::class);
$this->accountRepository = app(AccountRepositoryInterface::class); $this->accountRepository = app(AccountRepositoryInterface::class);
$this->abRepository = app(AvailableBudgetRepositoryInterface::class);
$this->billRepository->setUser($user); $this->billRepository->setUser($user);
$this->currencyRepos->setUser($user); $this->currencyRepos->setUser($user);
$this->budgetRepository->setUser($user); $this->budgetRepository->setUser($user);
$this->accountRepository->setUser($user); $this->accountRepository->setUser($user);
$this->abRepository->setUser($user);
return $next($request); return $next($request);
@ -140,6 +146,25 @@ class SummaryController extends Controller
return $result; return $result;
} }
/**
* This method will scroll through the results of the spentInPeriodMc() array and return the correct info.
*
* @param array $spentInfo
* @param TransactionCurrency $currency
*
* @return float
*/
private function findInSpentArray(array $spentInfo, TransactionCurrency $currency): float
{
foreach ($spentInfo as $array) {
if ($array['currency_id'] === $currency->id) {
return $array['amount'];
}
}
return 0.0; // @codeCoverageIgnore
}
/** /**
* @param Carbon $start * @param Carbon $start
* @param Carbon $end * @param Carbon $end
@ -316,7 +341,7 @@ class SummaryController extends Controller
{ {
$return = []; $return = [];
$today = new Carbon; $today = new Carbon;
$available = $this->budgetRepository->getAvailableBudgetWithCurrency($start, $end); $available = $this->abRepository->getAvailableBudgetWithCurrency($start, $end);
$budgets = $this->budgetRepository->getActiveBudgets(); $budgets = $this->budgetRepository->getActiveBudgets();
$spentInfo = $this->budgetRepository->spentInPeriodMc($budgets, new Collection, $start, $end); $spentInfo = $this->budgetRepository->spentInPeriodMc($budgets, new Collection, $start, $end);
foreach ($available as $currencyId => $amount) { foreach ($available as $currencyId => $amount) {
@ -350,25 +375,6 @@ class SummaryController extends Controller
return $return; return $return;
} }
/**
* This method will scroll through the results of the spentInPeriodMc() array and return the correct info.
*
* @param array $spentInfo
* @param TransactionCurrency $currency
*
* @return float
*/
private function findInSpentArray(array $spentInfo, TransactionCurrency $currency): float
{
foreach ($spentInfo as $array) {
if ($array['currency_id'] === $currency->id) {
return $array['amount'];
}
}
return 0.0; // @codeCoverageIgnore
}
/** /**
* @param Carbon $start * @param Carbon $start
* @param Carbon $end * @param Carbon $end

View File

@ -28,6 +28,7 @@ use Carbon\Carbon;
use FireflyIII\Http\Controllers\Controller; use FireflyIII\Http\Controllers\Controller;
use FireflyIII\Http\Requests\BudgetIncomeRequest; use FireflyIII\Http\Requests\BudgetIncomeRequest;
use FireflyIII\Models\Budget; use FireflyIII\Models\Budget;
use FireflyIII\Repositories\Budget\AvailableBudgetRepositoryInterface;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\Repositories\Budget\OperationsRepositoryInterface; use FireflyIII\Repositories\Budget\OperationsRepositoryInterface;
use FireflyIII\Support\Http\Controllers\DateCalculation; use FireflyIII\Support\Http\Controllers\DateCalculation;
@ -43,6 +44,8 @@ class AmountController extends Controller
{ {
use DateCalculation; use DateCalculation;
/** @var AvailableBudgetRepositoryInterface */
private $abRepository;
/** @var OperationsRepositoryInterface */ /** @var OperationsRepositoryInterface */
private $opsRepository; private $opsRepository;
/** @var BudgetRepositoryInterface The budget repository */ /** @var BudgetRepositoryInterface The budget repository */
@ -63,6 +66,7 @@ class AmountController extends Controller
app('view')->share('mainTitleIcon', 'fa-tasks'); app('view')->share('mainTitleIcon', 'fa-tasks');
$this->repository = app(BudgetRepositoryInterface::class); $this->repository = app(BudgetRepositoryInterface::class);
$this->opsRepository = app(OperationsRepositoryInterface::class); $this->opsRepository = app(OperationsRepositoryInterface::class);
$this->abRepository = app(AvailableBudgetRepositoryInterface::class);
return $next($request); return $next($request);
} }
@ -179,7 +183,7 @@ class AmountController extends Controller
public function updateIncome(Request $request, Carbon $start, Carbon $end) public function updateIncome(Request $request, Carbon $start, Carbon $end)
{ {
$defaultCurrency = app('amount')->getDefaultCurrency(); $defaultCurrency = app('amount')->getDefaultCurrency();
$available = $this->repository->getAvailableBudget($defaultCurrency, $start, $end); $available = $this->abRepository->getAvailableBudget($defaultCurrency, $start, $end);
$available = round($available, $defaultCurrency->decimal_places); $available = round($available, $defaultCurrency->decimal_places);
$page = (int)$request->get('page'); $page = (int)$request->get('page');

View File

@ -26,6 +26,7 @@ namespace FireflyIII\Http\Controllers\Budget;
use Carbon\Carbon; use Carbon\Carbon;
use FireflyIII\Http\Controllers\Controller; use FireflyIII\Http\Controllers\Controller;
use FireflyIII\Repositories\Budget\AvailableBudgetRepositoryInterface;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\Repositories\Budget\OperationsRepositoryInterface; use FireflyIII\Repositories\Budget\OperationsRepositoryInterface;
use FireflyIII\Support\Http\Controllers\DateCalculation; use FireflyIII\Support\Http\Controllers\DateCalculation;
@ -45,6 +46,8 @@ class IndexController extends Controller
private $opsRepository; private $opsRepository;
/** @var BudgetRepositoryInterface The budget repository */ /** @var BudgetRepositoryInterface The budget repository */
private $repository; private $repository;
/** @var AvailableBudgetRepositoryInterface */
private $abRepository;
/** /**
* IndexController constructor. * IndexController constructor.
@ -63,6 +66,7 @@ class IndexController extends Controller
app('view')->share('mainTitleIcon', 'fa-tasks'); app('view')->share('mainTitleIcon', 'fa-tasks');
$this->repository = app(BudgetRepositoryInterface::class); $this->repository = app(BudgetRepositoryInterface::class);
$this->opsRepository = app(OperationsRepositoryInterface::class); $this->opsRepository = app(OperationsRepositoryInterface::class);
$this->abRepository = app(AvailableBudgetRepositoryInterface::class);
$this->repository->cleanupBudgets(); $this->repository->cleanupBudgets();
return $next($request); return $next($request);
@ -118,7 +122,7 @@ class IndexController extends Controller
$budgetInformation = $this->opsRepository->collectBudgetInformation($collection, $start, $end); $budgetInformation = $this->opsRepository->collectBudgetInformation($collection, $start, $end);
// to display available budget: // to display available budget:
$available = $this->repository->getAvailableBudget($defaultCurrency, $start, $end); $available = $this->abRepository->getAvailableBudget($defaultCurrency, $start, $end);
$spent = array_sum(array_column($budgetInformation, 'spent')); $spent = array_sum(array_column($budgetInformation, 'spent'));
$budgeted = array_sum(array_column($budgetInformation, 'budgeted')); $budgeted = array_sum(array_column($budgetInformation, 'budgeted'));

View File

@ -32,6 +32,7 @@ use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Models\TransactionType; use FireflyIII\Models\TransactionType;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Bill\BillRepositoryInterface; use FireflyIII\Repositories\Bill\BillRepositoryInterface;
use FireflyIII\Repositories\Budget\AvailableBudgetRepositoryInterface;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\Repositories\Budget\OperationsRepositoryInterface; use FireflyIII\Repositories\Budget\OperationsRepositoryInterface;
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface; use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
@ -59,6 +60,9 @@ class BoxController extends Controller
/** @var OperationsRepositoryInterface $opsRepository */ /** @var OperationsRepositoryInterface $opsRepository */
$opsRepository = app(OperationsRepositoryInterface::class); $opsRepository = app(OperationsRepositoryInterface::class);
/** @var AvailableBudgetRepositoryInterface $abRepository */
$abRepository = app(AvailableBudgetRepositoryInterface::class);
/** @var Carbon $start */ /** @var Carbon $start */
$start = session('start', Carbon::now()->startOfMonth()); $start = session('start', Carbon::now()->startOfMonth());
@ -75,7 +79,7 @@ class BoxController extends Controller
} }
// get available amount // get available amount
$currency = app('amount')->getDefaultCurrency(); $currency = app('amount')->getDefaultCurrency();
$available = $repository->getAvailableBudget($currency, $start, $end); $available = $abRepository->getAvailableBudget($currency, $start, $end);
// get spent amount: // get spent amount:
$budgets = $repository->getActiveBudgets(); $budgets = $repository->getActiveBudgets();

View File

@ -23,8 +23,10 @@ declare(strict_types=1);
namespace FireflyIII\Repositories\Budget; namespace FireflyIII\Repositories\Budget;
use Carbon\Carbon;
use Exception; use Exception;
use FireflyIII\Models\AvailableBudget; use FireflyIII\Models\AvailableBudget;
use FireflyIII\Models\TransactionCurrency;
use FireflyIII\User; use FireflyIII\User;
use Log; use Log;
@ -60,6 +62,48 @@ class AvailableBudgetRepository implements AvailableBudgetRepositoryInterface
} }
} }
/**
* @param TransactionCurrency $currency
* @param Carbon $start
* @param Carbon $end
*
* @return string
*/
public function getAvailableBudget(TransactionCurrency $currency, Carbon $start, Carbon $end): string
{
$amount = '0';
$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) {
$amount = (string)$availableBudget->amount;
}
return $amount;
}
/**
* @param Carbon $start
* @param Carbon $end
*
* @return array
*/
public function getAvailableBudgetWithCurrency(Carbon $start, Carbon $end): array
{
$return = [];
$availableBudgets = $this->user->availableBudgets()
->where('start_date', $start->format('Y-m-d 00:00:00'))
->where('end_date', $end->format('Y-m-d 00:00:00'))->get();
/** @var AvailableBudget $availableBudget */
foreach ($availableBudgets as $availableBudget) {
$return[$availableBudget->transaction_currency_id] = $availableBudget->amount;
}
return $return;
}
/** /**
* @param User $user * @param User $user
*/ */

View File

@ -23,7 +23,9 @@ declare(strict_types=1);
namespace FireflyIII\Repositories\Budget; namespace FireflyIII\Repositories\Budget;
use Carbon\Carbon;
use FireflyIII\Models\AvailableBudget; use FireflyIII\Models\AvailableBudget;
use FireflyIII\Models\TransactionCurrency;
use FireflyIII\User; use FireflyIII\User;
/** /**
@ -36,8 +38,26 @@ interface AvailableBudgetRepositoryInterface
*/ */
public function destroyAvailableBudget(AvailableBudget $availableBudget): void; public function destroyAvailableBudget(AvailableBudget $availableBudget): void;
/**
* @param TransactionCurrency $currency
* @param Carbon $start
* @param Carbon $end
*
* @return string
*/
public function getAvailableBudget(TransactionCurrency $currency, Carbon $start, Carbon $end): string;
/**
* @param Carbon $start
* @param Carbon $end
*
* @return array
*/
public function getAvailableBudgetWithCurrency(Carbon $start, Carbon $end): array;
/** /**
* @param User $user * @param User $user
*/ */
public function setUser(User $user): void; public function setUser(User $user): void;
} }

View File

@ -207,48 +207,6 @@ class BudgetRepository implements BudgetRepositoryInterface
return $set; return $set;
} }
/**
* @param TransactionCurrency $currency
* @param Carbon $start
* @param Carbon $end
*
* @return string
*/
public function getAvailableBudget(TransactionCurrency $currency, Carbon $start, Carbon $end): string
{
$amount = '0';
$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) {
$amount = (string)$availableBudget->amount;
}
return $amount;
}
/**
* @param Carbon $start
* @param Carbon $end
*
* @return array
*/
public function getAvailableBudgetWithCurrency(Carbon $start, Carbon $end): array
{
$return = [];
$availableBudgets = $this->user->availableBudgets()
->where('start_date', $start->format('Y-m-d 00:00:00'))
->where('end_date', $end->format('Y-m-d 00:00:00'))->get();
/** @var AvailableBudget $availableBudget */
foreach ($availableBudgets as $availableBudget) {
$return[$availableBudget->transaction_currency_id] = $availableBudget->amount;
}
return $return;
}
/** /**
* Returns all available budget objects. * Returns all available budget objects.
* *

View File

@ -89,27 +89,6 @@ interface BudgetRepositoryInterface
public function getActiveBudgets(): Collection; public function getActiveBudgets(): Collection;
/** /**
* @param TransactionCurrency $currency
* @param Carbon $start
* @param Carbon $end
*
* @return string
*/
public function getAvailableBudget(TransactionCurrency $currency, Carbon $start, Carbon $end): string;
/**
* TODO only used in API
*
* @param Carbon $start
* @param Carbon $end
*
* @return array
*/
public function getAvailableBudgetWithCurrency(Carbon $start, Carbon $end): array;
/**
* TODO only used in API
*
* Returns all available budget objects. * Returns all available budget objects.
* *
* @param TransactionCurrency $currency * @param TransactionCurrency $currency

View File

@ -33,11 +33,6 @@ use Illuminate\Support\Collection;
*/ */
interface OperationsRepositoryInterface interface OperationsRepositoryInterface
{ {
/**
* @param User $user
*/
public function setUser(User $user): void;
/** /**
* A method that returns the amount of money budgeted per day for this budget, * A method that returns the amount of money budgeted per day for this budget,
* on average. * on average.
@ -61,6 +56,11 @@ interface OperationsRepositoryInterface
*/ */
public function collectBudgetInformation(Collection $budgets, Carbon $start, Carbon $end): array; public function collectBudgetInformation(Collection $budgets, Carbon $start, Carbon $end): array;
/**
* @param User $user
*/
public function setUser(User $user): void;
/** /**
* @param Collection $budgets * @param Collection $budgets
* @param Collection $accounts * @param Collection $accounts