mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-18 18:44:16 +00:00
Add cleanup method for issue #7853 and some more debug info.
This commit is contained in:
@@ -101,6 +101,7 @@ class IndexController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function index(Request $request, Carbon $start = null, Carbon $end = null)
|
public function index(Request $request, Carbon $start = null, Carbon $end = null)
|
||||||
{
|
{
|
||||||
|
$this->abRepository->cleanup();
|
||||||
Log::debug(sprintf('Start of IndexController::index("%s", "%s")', $start?->format('Y-m-d'), $end?->format('Y-m-d')));
|
Log::debug(sprintf('Start of IndexController::index("%s", "%s")', $start?->format('Y-m-d'), $end?->format('Y-m-d')));
|
||||||
|
|
||||||
// collect some basic vars:
|
// collect some basic vars:
|
||||||
@@ -137,7 +138,7 @@ class IndexController extends Controller
|
|||||||
|
|
||||||
// get budgeted for default currency:
|
// get budgeted for default currency:
|
||||||
if (0 === count($availableBudgets)) {
|
if (0 === count($availableBudgets)) {
|
||||||
$budgeted = $this->blRepository->budgeted($start, $end, $defaultCurrency, );
|
$budgeted = $this->blRepository->budgeted($start, $end, $defaultCurrency,);
|
||||||
$spentArr = $this->opsRepository->sumExpenses($start, $end, null, null, $defaultCurrency);
|
$spentArr = $this->opsRepository->sumExpenses($start, $end, null, null, $defaultCurrency);
|
||||||
$spent = $spentArr[$defaultCurrency->id]['sum'] ?? '0';
|
$spent = $spentArr[$defaultCurrency->id]['sum'] ?? '0';
|
||||||
unset($spentArr);
|
unset($spentArr);
|
||||||
@@ -196,7 +197,7 @@ class IndexController extends Controller
|
|||||||
$array['spent'] = $spentArr[$entry->transaction_currency_id]['sum'] ?? '0';
|
$array['spent'] = $spentArr[$entry->transaction_currency_id]['sum'] ?? '0';
|
||||||
|
|
||||||
// budgeted in period:
|
// budgeted in period:
|
||||||
$budgeted = $this->blRepository->budgeted($entry->start_date, $entry->end_date, $entry->transactionCurrency, );
|
$budgeted = $this->blRepository->budgeted($entry->start_date, $entry->end_date, $entry->transactionCurrency,);
|
||||||
$array['budgeted'] = $budgeted;
|
$array['budgeted'] = $budgeted;
|
||||||
$availableBudgets[] = $array;
|
$availableBudgets[] = $array;
|
||||||
unset($spentArr);
|
unset($spentArr);
|
||||||
@@ -337,6 +338,7 @@ class IndexController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function reorder(Request $request, BudgetRepositoryInterface $repository): JsonResponse
|
public function reorder(Request $request, BudgetRepositoryInterface $repository): JsonResponse
|
||||||
{
|
{
|
||||||
|
$this->abRepository->cleanup();
|
||||||
$budgetIds = $request->get('budgetIds');
|
$budgetIds = $request->get('budgetIds');
|
||||||
|
|
||||||
foreach ($budgetIds as $index => $budgetId) {
|
foreach ($budgetIds as $index => $budgetId) {
|
||||||
|
@@ -60,6 +60,7 @@ class BoxController extends Controller
|
|||||||
$opsRepository = app(OperationsRepositoryInterface::class);
|
$opsRepository = app(OperationsRepositoryInterface::class);
|
||||||
/** @var AvailableBudgetRepositoryInterface $abRepository */
|
/** @var AvailableBudgetRepositoryInterface $abRepository */
|
||||||
$abRepository = app(AvailableBudgetRepositoryInterface::class);
|
$abRepository = app(AvailableBudgetRepositoryInterface::class);
|
||||||
|
$abRepository->cleanup();
|
||||||
/** @var Carbon $start */
|
/** @var Carbon $start */
|
||||||
$start = session('start', today(config('app.timezone'))->startOfMonth());
|
$start = session('start', today(config('app.timezone'))->startOfMonth());
|
||||||
/** @var Carbon $end */
|
/** @var Carbon $end */
|
||||||
@@ -86,6 +87,11 @@ class BoxController extends Controller
|
|||||||
$availableBudgets = $availableBudgets->filter(
|
$availableBudgets = $availableBudgets->filter(
|
||||||
static function (AvailableBudget $availableBudget) use ($currency) {
|
static function (AvailableBudget $availableBudget) use ($currency) {
|
||||||
if ($availableBudget->transaction_currency_id === $currency->id) {
|
if ($availableBudget->transaction_currency_id === $currency->id) {
|
||||||
|
app('log')->debug(sprintf('Will include AB #%d: from %s-%s amount %s',
|
||||||
|
$availableBudget->id,
|
||||||
|
$availableBudget->start_date->format('Y-m-d'),
|
||||||
|
$availableBudget->end_date->format('Y-m-d'),
|
||||||
|
$availableBudget->amount));
|
||||||
return $availableBudget;
|
return $availableBudget;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -39,6 +39,49 @@ class AvailableBudgetRepository implements AvailableBudgetRepositoryInterface
|
|||||||
{
|
{
|
||||||
private User $user;
|
private User $user;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritDoc
|
||||||
|
*/
|
||||||
|
public function cleanup(): void
|
||||||
|
{
|
||||||
|
$exists = [];
|
||||||
|
$availableBudgets = $this->user->availableBudgets()->get();
|
||||||
|
/** @var AvailableBudget $availableBudget */
|
||||||
|
foreach ($availableBudgets as $availableBudget) {
|
||||||
|
$start = $availableBudget->start_date->format('Y-m-d');
|
||||||
|
$end = $availableBudget->end_date->format('Y-m-d');
|
||||||
|
$key = sprintf('%s-%s-%s', $availableBudget->transaction_currency_id, $start, $end);
|
||||||
|
if (array_key_exists($key, $exists)) {
|
||||||
|
app('log')->debug(sprintf('Found duplicate AB: %s %s, %s-%s. Has been deleted', $availableBudget->transaction_currency_id, $availableBudget->amount, $start, $end));
|
||||||
|
$availableBudget->delete();
|
||||||
|
}
|
||||||
|
$exists[$key] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a list of all available budgets (in all currencies) (for the selected period).
|
||||||
|
*
|
||||||
|
* @param Carbon|null $start
|
||||||
|
* @param Carbon|null $end
|
||||||
|
*
|
||||||
|
* @return Collection
|
||||||
|
*/
|
||||||
|
public function get(?Carbon $start = null, ?Carbon $end = null): Collection
|
||||||
|
{
|
||||||
|
$query = $this->user->availableBudgets()->with(['transactionCurrency']);
|
||||||
|
if (null !== $start && null !== $end) {
|
||||||
|
$query->where(
|
||||||
|
static function (Builder $q1) use ($start, $end) {
|
||||||
|
$q1->where('start_date', '=', $start->format('Y-m-d'));
|
||||||
|
$q1->where('end_date', '=', $end->format('Y-m-d'));
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $query->get(['available_budgets.*']);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete all available budgets.
|
* Delete all available budgets.
|
||||||
*/
|
*/
|
||||||
@@ -122,29 +165,6 @@ class AvailableBudgetRepository implements AvailableBudgetRepositoryInterface
|
|||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Return a list of all available budgets (in all currencies) (for the selected period).
|
|
||||||
*
|
|
||||||
* @param Carbon|null $start
|
|
||||||
* @param Carbon|null $end
|
|
||||||
*
|
|
||||||
* @return Collection
|
|
||||||
*/
|
|
||||||
public function get(?Carbon $start = null, ?Carbon $end = null): Collection
|
|
||||||
{
|
|
||||||
$query = $this->user->availableBudgets()->with(['transactionCurrency']);
|
|
||||||
if (null !== $start && null !== $end) {
|
|
||||||
$query->where(
|
|
||||||
static function (Builder $q1) use ($start, $end) {
|
|
||||||
$q1->where('start_date', '=', $start->format('Y-m-d'));
|
|
||||||
$q1->where('end_date', '=', $end->format('Y-m-d'));
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $query->get(['available_budgets.*']);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns all available budget objects.
|
* Returns all available budget objects.
|
||||||
*
|
*
|
||||||
|
@@ -35,6 +35,11 @@ use Illuminate\Support\Collection;
|
|||||||
*/
|
*/
|
||||||
interface AvailableBudgetRepositoryInterface
|
interface AvailableBudgetRepositoryInterface
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function cleanup(): void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete all available budgets.
|
* Delete all available budgets.
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user