From fc547ba59a474b80816363f4f12016b93b8c9ef5 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 17 Aug 2025 16:47:19 +0200 Subject: [PATCH] Fix #10773 for budget limits. --- .../Enrichments/BudgetLimitEnrichment.php | 34 ++++++++++++++----- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/app/Support/JsonApi/Enrichments/BudgetLimitEnrichment.php b/app/Support/JsonApi/Enrichments/BudgetLimitEnrichment.php index d94c91cb40..e84afbe983 100644 --- a/app/Support/JsonApi/Enrichments/BudgetLimitEnrichment.php +++ b/app/Support/JsonApi/Enrichments/BudgetLimitEnrichment.php @@ -47,6 +47,7 @@ class BudgetLimitEnrichment implements EnrichmentInterface $this->collectCurrencies(); $this->collectNotes(); $this->collectBudgets(); + $this->stringifyIds(); $this->appendCollectedData(); return $this->collection; @@ -74,8 +75,8 @@ class BudgetLimitEnrichment implements EnrichmentInterface private function collectIds(): void { - $this->start = $this->collection->min('start_date') ?? Carbon::now()->startOfMonth(); - $this->end = $this->collection->max('end_date') ?? Carbon::now()->endOfMonth(); + $this->start = $this->collection->min('start_date') ?? Carbon::now()->startOfMonth(); + $this->end = $this->collection->max('end_date') ?? Carbon::now()->endOfMonth(); /** @var BudgetLimit $limit */ foreach ($this->collection as $limit) { @@ -92,10 +93,9 @@ class BudgetLimitEnrichment implements EnrichmentInterface private function collectNotes(): void { $notes = Note::query()->whereIn('noteable_id', $this->ids) - ->whereNotNull('notes.text') - ->where('notes.text', '!=', '') - ->where('noteable_type', BudgetLimit::class)->get(['notes.noteable_id', 'notes.text'])->toArray() - ; + ->whereNotNull('notes.text') + ->where('notes.text', '!=', '') + ->where('noteable_type', BudgetLimit::class)->get(['notes.noteable_id', 'notes.text'])->toArray(); foreach ($notes as $note) { $this->notes[(int)$note['noteable_id']] = (string)$note['text']; } @@ -127,9 +127,9 @@ class BudgetLimitEnrichment implements EnrichmentInterface $budgetIds = $this->collection->pluck('budget_id')->unique()->toArray(); $this->budgets = Budget::whereIn('id', $budgetIds)->get(); - $repository = app(OperationsRepository::class); + $repository = app(OperationsRepository::class); $repository->setUser($this->user); - $expenses = $repository->collectExpenses($this->start, $this->end, null, $this->budgets, null); + $expenses = $repository->collectExpenses($this->start, $this->end, null, $this->budgets, null); /** @var BudgetLimit $budgetLimit */ foreach ($this->collection as $budgetLimit) { @@ -155,4 +155,22 @@ class BudgetLimitEnrichment implements EnrichmentInterface $this->currencies[(int)$currency->id] = $currency; } } + + private function stringifyIds(): void + { + $this->expenses = array_map(function ($first) { + return array_map(function ($second) { + $second['currency_id'] = (string)($second['currency_id'] ?? 0); + return $second; + }, $first); + }, $this->expenses); + + $this->pcExpenses = array_map(function ($first) { + return array_map(function ($second) { + $second['currency_id'] = (string)($second['currency_id'] ?? 0); + return $second; + }, $first); + }, $this->expenses); + } + }