mirror of
				https://github.com/firefly-iii/firefly-iii.git
				synced 2025-10-31 10:47:00 +00:00 
			
		
		
		
	Code cleanup
This commit is contained in:
		| @@ -78,7 +78,7 @@ class AccountController extends Controller | ||||
|         $query           = $data['query']; | ||||
|         $date            = $data['date'] ?? today(config('app.timezone')); | ||||
|         $return          = []; | ||||
|         $result          = $this->repository->searchAccount((string)$query, $types, $this->parameters->get('limit')); | ||||
|         $result          = $this->repository->searchAccount((string) $query, $types, $this->parameters->get('limit')); | ||||
| 
 | ||||
|         // TODO this code is duplicated in the V2 Autocomplete controller, which means this code is due to be deprecated.
 | ||||
|         $defaultCurrency = app('amount')->getDefaultCurrency(); | ||||
| @@ -98,11 +98,11 @@ class AccountController extends Controller | ||||
|             } | ||||
| 
 | ||||
|             $return[]        = [ | ||||
|                 'id'                      => (string)$account->id, | ||||
|                 'id'                      => (string) $account->id, | ||||
|                 'name'                    => $account->name, | ||||
|                 'name_with_balance'       => $nameWithBalance, | ||||
|                 'type'                    => $account->accountType->type, | ||||
|                 'currency_id'             => (string)$currency->id, | ||||
|                 'currency_id'             => (string) $currency->id, | ||||
|                 'currency_name'           => $currency->name, | ||||
|                 'currency_code'           => $currency->code, | ||||
|                 'currency_symbol'         => $currency->symbol, | ||||
| @@ -115,8 +115,8 @@ class AccountController extends Controller | ||||
|             $return, | ||||
|             static function (array $left, array $right) { | ||||
|                 $order = [AccountType::ASSET, AccountType::REVENUE, AccountType::EXPENSE]; | ||||
|                 $posA  = (int)array_search($left['type'], $order, true); | ||||
|                 $posB  = (int)array_search($right['type'], $order, true); | ||||
|                 $posA  = (int) array_search($left['type'], $order, true); | ||||
|                 $posB  = (int) array_search($right['type'], $order, true); | ||||
| 
 | ||||
|                 return $posA - $posB; | ||||
|             } | ||||
|   | ||||
| @@ -67,7 +67,7 @@ class BillController extends Controller | ||||
|         $filtered = $result->map( | ||||
|             static function (Bill $item) { | ||||
|                 return [ | ||||
|                     'id'     => (string)$item->id, | ||||
|                     'id'     => (string) $item->id, | ||||
|                     'name'   => $item->name, | ||||
|                     'active' => $item->active, | ||||
|                 ]; | ||||
|   | ||||
| @@ -67,7 +67,7 @@ class BudgetController extends Controller | ||||
|         $filtered = $result->map( | ||||
|             static function (Budget $item) { | ||||
|                 return [ | ||||
|                     'id'   => (string)$item->id, | ||||
|                     'id'   => (string) $item->id, | ||||
|                     'name' => $item->name, | ||||
|                 ]; | ||||
|             } | ||||
|   | ||||
| @@ -67,7 +67,7 @@ class CategoryController extends Controller | ||||
|         $filtered = $result->map( | ||||
|             static function (Category $item) { | ||||
|                 return [ | ||||
|                     'id'   => (string)$item->id, | ||||
|                     'id'   => (string) $item->id, | ||||
|                     'name' => $item->name, | ||||
|                 ]; | ||||
|             } | ||||
|   | ||||
| @@ -69,7 +69,7 @@ class CurrencyController extends Controller | ||||
|         /** @var TransactionCurrency $currency */ | ||||
|         foreach ($collection as $currency) { | ||||
|             $result[] = [ | ||||
|                 'id'             => (string)$currency->id, | ||||
|                 'id'             => (string) $currency->id, | ||||
|                 'name'           => $currency->name, | ||||
|                 'code'           => $currency->code, | ||||
|                 'symbol'         => $currency->symbol, | ||||
| @@ -95,7 +95,7 @@ class CurrencyController extends Controller | ||||
|         /** @var TransactionCurrency $currency */ | ||||
|         foreach ($collection as $currency) { | ||||
|             $result[] = [ | ||||
|                 'id'             => (string)$currency->id, | ||||
|                 'id'             => (string) $currency->id, | ||||
|                 'name'           => sprintf('%s (%s)', $currency->name, $currency->code), | ||||
|                 'code'           => $currency->code, | ||||
|                 'symbol'         => $currency->symbol, | ||||
|   | ||||
| @@ -69,7 +69,7 @@ class ObjectGroupController extends Controller | ||||
|         /** @var ObjectGroup $objectGroup */ | ||||
|         foreach ($result as $objectGroup) { | ||||
|             $return[] = [ | ||||
|                 'id'    => (string)$objectGroup->id, | ||||
|                 'id'    => (string) $objectGroup->id, | ||||
|                 'name'  => $objectGroup->title, | ||||
|                 'title' => $objectGroup->title, | ||||
|             ]; | ||||
|   | ||||
| @@ -75,14 +75,14 @@ class PiggyBankController extends Controller | ||||
|             $currency    = $piggy->transactionCurrency; | ||||
|             $objectGroup = $piggy->objectGroups()->first(); | ||||
|             $response[]  = [ | ||||
|                 'id'                      => (string)$piggy->id, | ||||
|                 'id'                      => (string) $piggy->id, | ||||
|                 'name'                    => $piggy->name, | ||||
|                 'currency_id'             => (string)$currency->id, | ||||
|                 'currency_id'             => (string) $currency->id, | ||||
|                 'currency_name'           => $currency->name, | ||||
|                 'currency_code'           => $currency->code, | ||||
|                 'currency_symbol'         => $currency->symbol, | ||||
|                 'currency_decimal_places' => $currency->decimal_places, | ||||
|                 'object_group_id'         => null === $objectGroup ? null : (string)$objectGroup->id, | ||||
|                 'object_group_id'         => null === $objectGroup ? null : (string) $objectGroup->id, | ||||
|                 'object_group_title'      => $objectGroup?->title, | ||||
|             ]; | ||||
|         } | ||||
| @@ -106,7 +106,7 @@ class PiggyBankController extends Controller | ||||
|             $currentAmount = $this->piggyRepository->getCurrentAmount($piggy); | ||||
|             $objectGroup   = $piggy->objectGroups()->first(); | ||||
|             $response[]    = [ | ||||
|                 'id'                      => (string)$piggy->id, | ||||
|                 'id'                      => (string) $piggy->id, | ||||
|                 'name'                    => $piggy->name, | ||||
|                 'name_with_balance'       => sprintf( | ||||
|                     '%s (%s / %s)', | ||||
| @@ -114,12 +114,12 @@ class PiggyBankController extends Controller | ||||
|                     app('amount')->formatAnything($currency, $currentAmount, false), | ||||
|                     app('amount')->formatAnything($currency, $piggy->target_amount, false), | ||||
|                 ), | ||||
|                 'currency_id'             => (string)$currency->id, | ||||
|                 'currency_id'             => (string) $currency->id, | ||||
|                 'currency_name'           => $currency->name, | ||||
|                 'currency_code'           => $currency->code, | ||||
|                 'currency_symbol'         => $currency->symbol, | ||||
|                 'currency_decimal_places' => $currency->decimal_places, | ||||
|                 'object_group_id'         => null === $objectGroup ? null : (string)$objectGroup->id, | ||||
|                 'object_group_id'         => null === $objectGroup ? null : (string) $objectGroup->id, | ||||
|                 'object_group_title'      => $objectGroup?->title, | ||||
|             ]; | ||||
|         } | ||||
|   | ||||
| @@ -67,7 +67,7 @@ class RecurrenceController extends Controller | ||||
|         /** @var Recurrence $recurrence */ | ||||
|         foreach ($recurrences as $recurrence) { | ||||
|             $response[] = [ | ||||
|                 'id'          => (string)$recurrence->id, | ||||
|                 'id'          => (string) $recurrence->id, | ||||
|                 'name'        => $recurrence->title, | ||||
|                 'description' => $recurrence->description, | ||||
|             ]; | ||||
|   | ||||
| @@ -66,7 +66,7 @@ class RuleController extends Controller | ||||
|         /** @var Rule $rule */ | ||||
|         foreach ($rules as $rule) { | ||||
|             $response[] = [ | ||||
|                 'id'          => (string)$rule->id, | ||||
|                 'id'          => (string) $rule->id, | ||||
|                 'name'        => $rule->title, | ||||
|                 'description' => $rule->description, | ||||
|             ]; | ||||
|   | ||||
| @@ -66,7 +66,7 @@ class RuleGroupController extends Controller | ||||
|         /** @var RuleGroup $group */ | ||||
|         foreach ($groups as $group) { | ||||
|             $response[] = [ | ||||
|                 'id'          => (string)$group->id, | ||||
|                 'id'          => (string) $group->id, | ||||
|                 'name'        => $group->title, | ||||
|                 'description' => $group->description, | ||||
|             ]; | ||||
|   | ||||
| @@ -69,7 +69,7 @@ class TagController extends Controller | ||||
|         /** @var Tag $tag */ | ||||
|         foreach ($result as $tag) { | ||||
|             $array[] = [ | ||||
|                 'id'   => (string)$tag->id, | ||||
|                 'id'   => (string) $tag->id, | ||||
|                 'name' => $tag->tag, | ||||
|                 'tag'  => $tag->tag, | ||||
|             ]; | ||||
|   | ||||
| @@ -77,8 +77,8 @@ class TransactionController extends Controller | ||||
|         /** @var TransactionJournal $journal */ | ||||
|         foreach ($filtered as $journal) { | ||||
|             $array[] = [ | ||||
|                 'id'                   => (string)$journal->id, | ||||
|                 'transaction_group_id' => (string)$journal->transaction_group_id, | ||||
|                 'id'                   => (string) $journal->id, | ||||
|                 'transaction_group_id' => (string) $journal->transaction_group_id, | ||||
|                 'name'                 => $journal->description, | ||||
|                 'description'          => $journal->description, | ||||
|             ]; | ||||
| @@ -97,7 +97,7 @@ class TransactionController extends Controller | ||||
|         $result = new Collection(); | ||||
|         if (is_numeric($data['query'])) { | ||||
|             // search for group, not journal.
 | ||||
|             $firstResult = $this->groupRepository->find((int)$data['query']); | ||||
|             $firstResult = $this->groupRepository->find((int) $data['query']); | ||||
|             if (null !== $firstResult) { | ||||
|                 // group may contain multiple journals, each a result:
 | ||||
|                 foreach ($firstResult->transactionJournals as $journal) { | ||||
| @@ -115,8 +115,8 @@ class TransactionController extends Controller | ||||
|         /** @var TransactionJournal $journal */ | ||||
|         foreach ($result as $journal) { | ||||
|             $array[] = [ | ||||
|                 'id'                   => (string)$journal->id, | ||||
|                 'transaction_group_id' => (string)$journal->transaction_group_id, | ||||
|                 'id'                   => (string) $journal->id, | ||||
|                 'transaction_group_id' => (string) $journal->transaction_group_id, | ||||
|                 'name'                 => sprintf('#%d: %s', $journal->transaction_group_id, $journal->description), | ||||
|                 'description'          => sprintf('#%d: %s', $journal->transaction_group_id, $journal->description), | ||||
|             ]; | ||||
|   | ||||
| @@ -66,7 +66,7 @@ class TransactionTypeController extends Controller | ||||
|         foreach ($types as $type) { | ||||
|             // different key for consistency.
 | ||||
|             $array[] = [ | ||||
|                 'id'   => (string)$type->id, | ||||
|                 'id'   => (string) $type->id, | ||||
|                 'name' => $type->type, | ||||
|                 'type' => $type->type, | ||||
|             ]; | ||||
|   | ||||
| @@ -104,7 +104,7 @@ class AccountController extends Controller | ||||
|             } | ||||
|             $currentSet   = [ | ||||
|                 'label'                   => $account->name, | ||||
|                 'currency_id'             => (string)$currency->id, | ||||
|                 'currency_id'             => (string) $currency->id, | ||||
|                 'currency_code'           => $currency->code, | ||||
|                 'currency_symbol'         => $currency->symbol, | ||||
|                 'currency_decimal_places' => $currency->decimal_places, | ||||
|   | ||||
| @@ -82,7 +82,7 @@ abstract class Controller extends BaseController | ||||
|     private function getParameters(): ParameterBag | ||||
|     { | ||||
|         $bag      = new ParameterBag(); | ||||
|         $page     = (int)request()->get('page'); | ||||
|         $page     = (int) request()->get('page'); | ||||
|         if ($page < 1) { | ||||
|             $page = 1; | ||||
|         } | ||||
| @@ -107,13 +107,13 @@ abstract class Controller extends BaseController | ||||
|             $obj  = null; | ||||
|             if (null !== $date) { | ||||
|                 try { | ||||
|                     $obj = Carbon::parse((string)$date); | ||||
|                     $obj = Carbon::parse((string) $date); | ||||
|                 } catch (InvalidDateException|InvalidFormatException $e) { | ||||
|                     // don't care
 | ||||
|                     app('log')->warning( | ||||
|                         sprintf( | ||||
|                             'Ignored invalid date "%s" in API controller parameter check: %s', | ||||
|                             substr((string)$date, 0, 20), | ||||
|                             substr((string) $date, 0, 20), | ||||
|                             $e->getMessage() | ||||
|                         ) | ||||
|                     ); | ||||
| @@ -134,7 +134,7 @@ abstract class Controller extends BaseController | ||||
|                 $value = null; | ||||
|             } | ||||
|             if (null !== $value) { | ||||
|                 $bag->set($integer, (int)$value); | ||||
|                 $bag->set($integer, (int) $value); | ||||
|             } | ||||
|             if (null === $value | ||||
|                 && 'limit' === $integer // @phpstan-ignore-line
 | ||||
| @@ -144,7 +144,7 @@ abstract class Controller extends BaseController | ||||
|                 $user     = auth()->user(); | ||||
| 
 | ||||
|                 /** @var Preference $pageSize */ | ||||
|                 $pageSize = (int)app('preferences')->getForUser($user, 'listPageSize', 50)->data; | ||||
|                 $pageSize = (int) app('preferences')->getForUser($user, 'listPageSize', 50)->data; | ||||
|                 $bag->set($integer, $pageSize); | ||||
|             } | ||||
|         } | ||||
| @@ -158,7 +158,7 @@ abstract class Controller extends BaseController | ||||
|         $sortParameters = []; | ||||
| 
 | ||||
|         try { | ||||
|             $param = (string)request()->query->get('sort'); | ||||
|             $param = (string) request()->query->get('sort'); | ||||
|         } catch (BadRequestException $e) { | ||||
|             app('log')->error('Request field "sort" contains a non-scalar value. Value set to NULL.'); | ||||
|             app('log')->error($e->getMessage()); | ||||
|   | ||||
| @@ -70,8 +70,8 @@ class TransactionController extends Controller | ||||
|         // to respond to what is in the $query.
 | ||||
|         // this is OK because only one thing can be in the query at the moment.
 | ||||
|         if ($this->isUpdateTransactionAccount($params)) { | ||||
|             $original    = $this->repository->find((int)$params['where']['account_id']); | ||||
|             $destination = $this->repository->find((int)$params['update']['account_id']); | ||||
|             $original    = $this->repository->find((int) $params['where']['account_id']); | ||||
|             $destination = $this->repository->find((int) $params['update']['account_id']); | ||||
| 
 | ||||
|             /** @var AccountDestroyService $service */ | ||||
|             $service     = app(AccountDestroyService::class); | ||||
|   | ||||
| @@ -88,7 +88,7 @@ class ExportController extends Controller | ||||
|             ->header('Expires', '0') | ||||
|             ->header('Cache-Control', 'must-revalidate, post-check=0, pre-check=0') | ||||
|             ->header('Pragma', 'public') | ||||
|             ->header('Content-Length', (string)strlen($data[$key])) | ||||
|             ->header('Content-Length', (string) strlen($data[$key])) | ||||
|         ; | ||||
| 
 | ||||
|         return $response; | ||||
|   | ||||
| @@ -29,7 +29,6 @@ use FireflyIII\Models\Account; | ||||
| use FireflyIII\Models\Bill; | ||||
| use FireflyIII\Models\Budget; | ||||
| use FireflyIII\Models\Category; | ||||
| use FireflyIII\Models\PiggyBank; | ||||
| use FireflyIII\Models\Recurrence; | ||||
| use FireflyIII\Models\Rule; | ||||
| use FireflyIII\Models\RuleGroup; | ||||
|   | ||||
| @@ -79,11 +79,11 @@ class AccountController extends Controller | ||||
|         /** @var array $expense */ | ||||
|         foreach ($expenses as $expense) { | ||||
|             $result[] = [ | ||||
|                 'id'               => (string)$expense['id'], | ||||
|                 'id'               => (string) $expense['id'], | ||||
|                 'name'             => $expense['name'], | ||||
|                 'difference'       => $expense['sum'], | ||||
|                 'difference_float' => (float)$expense['sum'], // intentional float
 | ||||
|                 'currency_id'      => (string)$expense['currency_id'], | ||||
|                 'difference_float' => (float) $expense['sum'], // intentional float
 | ||||
|                 'currency_id'      => (string) $expense['currency_id'], | ||||
|                 'currency_code'    => $expense['currency_code'], | ||||
|             ]; | ||||
|         } | ||||
| @@ -107,11 +107,11 @@ class AccountController extends Controller | ||||
|         /** @var array $expense */ | ||||
|         foreach ($expenses as $expense) { | ||||
|             $result[] = [ | ||||
|                 'id'               => (string)$expense['id'], | ||||
|                 'id'               => (string) $expense['id'], | ||||
|                 'name'             => $expense['name'], | ||||
|                 'difference'       => $expense['sum'], | ||||
|                 'difference_float' => (float)$expense['sum'], // intentional float
 | ||||
|                 'currency_id'      => (string)$expense['currency_id'], | ||||
|                 'difference_float' => (float) $expense['sum'], // intentional float
 | ||||
|                 'currency_id'      => (string) $expense['currency_id'], | ||||
|                 'currency_code'    => $expense['currency_code'], | ||||
|             ]; | ||||
|         } | ||||
|   | ||||
| @@ -81,33 +81,33 @@ class BillController extends Controller | ||||
| 
 | ||||
|         $genericSet = $collector->getExtractedJournals(); | ||||
|         foreach ($genericSet as $journal) { | ||||
|             $billId            = (int)$journal['bill_id']; | ||||
|             $currencyId        = (int)$journal['currency_id']; | ||||
|             $foreignCurrencyId = (int)$journal['foreign_currency_id']; | ||||
|             $billId            = (int) $journal['bill_id']; | ||||
|             $currencyId        = (int) $journal['currency_id']; | ||||
|             $foreignCurrencyId = (int) $journal['foreign_currency_id']; | ||||
|             $key               = sprintf('%d-%d', $billId, $currencyId); | ||||
|             $foreignKey        = sprintf('%d-%d', $billId, $foreignCurrencyId); | ||||
| 
 | ||||
|             if (0 !== $currencyId) { | ||||
|                 $response[$key] ??= [ | ||||
|                     'id'               => (string)$billId, | ||||
|                     'id'               => (string) $billId, | ||||
|                     'name'             => $journal['bill_name'], | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$currencyId, | ||||
|                     'currency_id'      => (string) $currencyId, | ||||
|                     'currency_code'    => $journal['currency_code'], | ||||
|                 ]; | ||||
|                 $response[$key]['difference']       = bcadd($response[$key]['difference'], $journal['amount']); | ||||
|                 $response[$key]['difference_float'] = (float)$response[$key]['difference']; // intentional float
 | ||||
|                 $response[$key]['difference_float'] = (float) $response[$key]['difference']; // intentional float
 | ||||
|             } | ||||
|             if (0 !== $foreignCurrencyId) { | ||||
|                 $response[$foreignKey] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$foreignCurrencyId, | ||||
|                     'currency_id'      => (string) $foreignCurrencyId, | ||||
|                     'currency_code'    => $journal['foreign_currency_code'], | ||||
|                 ]; | ||||
|                 $response[$foreignKey]['difference']       = bcadd($response[$foreignKey]['difference'], $journal['foreign_amount']); | ||||
|                 $response[$foreignKey]['difference_float'] = (float)$response[$foreignKey]['difference']; // intentional float
 | ||||
|                 $response[$foreignKey]['difference_float'] = (float) $response[$foreignKey]['difference']; // intentional float
 | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| @@ -135,28 +135,28 @@ class BillController extends Controller | ||||
|         $genericSet = $collector->getExtractedJournals(); | ||||
| 
 | ||||
|         foreach ($genericSet as $journal) { | ||||
|             $currencyId        = (int)$journal['currency_id']; | ||||
|             $foreignCurrencyId = (int)$journal['foreign_currency_id']; | ||||
|             $currencyId        = (int) $journal['currency_id']; | ||||
|             $foreignCurrencyId = (int) $journal['foreign_currency_id']; | ||||
| 
 | ||||
|             if (0 !== $currencyId) { | ||||
|                 $response[$currencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$currencyId, | ||||
|                     'currency_id'      => (string) $currencyId, | ||||
|                     'currency_code'    => $journal['currency_code'], | ||||
|                 ]; | ||||
|                 $response[$currencyId]['difference']       = bcadd($response[$currencyId]['difference'], $journal['amount']); | ||||
|                 $response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference']; // intentional float
 | ||||
|                 $response[$currencyId]['difference_float'] = (float) $response[$currencyId]['difference']; // intentional float
 | ||||
|             } | ||||
|             if (0 !== $foreignCurrencyId) { | ||||
|                 $response[$foreignCurrencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$foreignCurrencyId, | ||||
|                     'currency_id'      => (string) $foreignCurrencyId, | ||||
|                     'currency_code'    => $journal['foreign_currency_code'], | ||||
|                 ]; | ||||
|                 $response[$foreignCurrencyId]['difference']       = bcadd($response[$foreignCurrencyId]['difference'], $journal['foreign_amount']); | ||||
|                 $response[$foreignCurrencyId]['difference_float'] = (float)$response[$foreignCurrencyId]['difference']; // intentional float
 | ||||
|                 $response[$foreignCurrencyId]['difference_float'] = (float) $response[$foreignCurrencyId]['difference']; // intentional float
 | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|   | ||||
| @@ -85,11 +85,11 @@ class BudgetController extends Controller | ||||
|             /** @var array $expense */ | ||||
|             foreach ($expenses as $expense) { | ||||
|                 $result[] = [ | ||||
|                     'id'               => (string)$budget->id, | ||||
|                     'id'               => (string) $budget->id, | ||||
|                     'name'             => $budget->name, | ||||
|                     'difference'       => $expense['sum'], | ||||
|                     'difference_float' => (float)$expense['sum'], // intentional float
 | ||||
|                     'currency_id'      => (string)$expense['currency_id'], | ||||
|                     'difference_float' => (float) $expense['sum'], // intentional float
 | ||||
|                     'currency_id'      => (string) $expense['currency_id'], | ||||
|                     'currency_code'    => $expense['currency_code'], | ||||
|                 ]; | ||||
|             } | ||||
| @@ -114,8 +114,8 @@ class BudgetController extends Controller | ||||
|         foreach ($expenses as $expense) { | ||||
|             $result[] = [ | ||||
|                 'difference'       => $expense['sum'], | ||||
|                 'difference_float' => (float)$expense['sum'], // intentional float
 | ||||
|                 'currency_id'      => (string)$expense['currency_id'], | ||||
|                 'difference_float' => (float) $expense['sum'], // intentional float
 | ||||
|                 'currency_id'      => (string) $expense['currency_id'], | ||||
|                 'currency_code'    => $expense['currency_code'], | ||||
|             ]; | ||||
|         } | ||||
|   | ||||
| @@ -85,11 +85,11 @@ class CategoryController extends Controller | ||||
|             /** @var array $expense */ | ||||
|             foreach ($expenses as $expense) { | ||||
|                 $result[] = [ | ||||
|                     'id'               => (string)$category->id, | ||||
|                     'id'               => (string) $category->id, | ||||
|                     'name'             => $category->name, | ||||
|                     'difference'       => $expense['sum'], | ||||
|                     'difference_float' => (float)$expense['sum'], // intentional float
 | ||||
|                     'currency_id'      => (string)$expense['currency_id'], | ||||
|                     'difference_float' => (float) $expense['sum'], // intentional float
 | ||||
|                     'currency_id'      => (string) $expense['currency_id'], | ||||
|                     'currency_code'    => $expense['currency_code'], | ||||
|                 ]; | ||||
|             } | ||||
| @@ -114,8 +114,8 @@ class CategoryController extends Controller | ||||
|         foreach ($expenses as $expense) { | ||||
|             $result[] = [ | ||||
|                 'difference'       => $expense['sum'], | ||||
|                 'difference_float' => (float)$expense['sum'], // intentional float
 | ||||
|                 'currency_id'      => (string)$expense['currency_id'], | ||||
|                 'difference_float' => (float) $expense['sum'], // intentional float
 | ||||
|                 'currency_id'      => (string) $expense['currency_id'], | ||||
|                 'currency_code'    => $expense['currency_code'], | ||||
|             ]; | ||||
|         } | ||||
|   | ||||
| @@ -51,28 +51,28 @@ class PeriodController extends Controller | ||||
|         $collector->setTypes([TransactionTypeEnum::WITHDRAWAL->value])->setRange($start, $end)->setSourceAccounts($accounts); | ||||
|         $genericSet = $collector->getExtractedJournals(); | ||||
|         foreach ($genericSet as $journal) { | ||||
|             $currencyId        = (int)$journal['currency_id']; | ||||
|             $foreignCurrencyId = (int)$journal['foreign_currency_id']; | ||||
|             $currencyId        = (int) $journal['currency_id']; | ||||
|             $foreignCurrencyId = (int) $journal['foreign_currency_id']; | ||||
| 
 | ||||
|             if (0 !== $currencyId) { | ||||
|                 $response[$currencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$currencyId, | ||||
|                     'currency_id'      => (string) $currencyId, | ||||
|                     'currency_code'    => $journal['currency_code'], | ||||
|                 ]; | ||||
|                 $response[$currencyId]['difference']       = bcadd($response[$currencyId]['difference'], $journal['amount']); | ||||
|                 $response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference']; // intentional float
 | ||||
|                 $response[$currencyId]['difference_float'] = (float) $response[$currencyId]['difference']; // intentional float
 | ||||
|             } | ||||
|             if (0 !== $foreignCurrencyId) { | ||||
|                 $response[$foreignCurrencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$foreignCurrencyId, | ||||
|                     'currency_id'      => (string) $foreignCurrencyId, | ||||
|                     'currency_code'    => $journal['foreign_currency_code'], | ||||
|                 ]; | ||||
|                 $response[$foreignCurrencyId]['difference']       = bcadd($response[$foreignCurrencyId]['difference'], $journal['foreign_amount']); | ||||
|                 $response[$foreignCurrencyId]['difference_float'] = (float)$response[$foreignCurrencyId]['difference']; // intentional float
 | ||||
|                 $response[$foreignCurrencyId]['difference_float'] = (float) $response[$foreignCurrencyId]['difference']; // intentional float
 | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|   | ||||
| @@ -75,28 +75,28 @@ class TagController extends Controller | ||||
|         $genericSet = $collector->getExtractedJournals(); | ||||
| 
 | ||||
|         foreach ($genericSet as $journal) { | ||||
|             $currencyId        = (int)$journal['currency_id']; | ||||
|             $foreignCurrencyId = (int)$journal['foreign_currency_id']; | ||||
|             $currencyId        = (int) $journal['currency_id']; | ||||
|             $foreignCurrencyId = (int) $journal['foreign_currency_id']; | ||||
| 
 | ||||
|             if (0 !== $currencyId) { | ||||
|                 $response[$currencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$currencyId, | ||||
|                     'currency_id'      => (string) $currencyId, | ||||
|                     'currency_code'    => $journal['currency_code'], | ||||
|                 ]; | ||||
|                 $response[$currencyId]['difference']       = bcadd($response[$currencyId]['difference'], $journal['amount']); | ||||
|                 $response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference']; // float but on purpose.
 | ||||
|                 $response[$currencyId]['difference_float'] = (float) $response[$currencyId]['difference']; // float but on purpose.
 | ||||
|             } | ||||
|             if (0 !== $foreignCurrencyId) { | ||||
|                 $response[$foreignCurrencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$foreignCurrencyId, | ||||
|                     'currency_id'      => (string) $foreignCurrencyId, | ||||
|                     'currency_code'    => $journal['foreign_currency_code'], | ||||
|                 ]; | ||||
|                 $response[$foreignCurrencyId]['difference']       = bcadd($response[$foreignCurrencyId]['difference'], $journal['foreign_amount']); | ||||
|                 $response[$foreignCurrencyId]['difference_float'] = (float)$response[$foreignCurrencyId]['difference']; // float but on purpose.
 | ||||
|                 $response[$foreignCurrencyId]['difference_float'] = (float) $response[$foreignCurrencyId]['difference']; // float but on purpose.
 | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| @@ -130,8 +130,8 @@ class TagController extends Controller | ||||
| 
 | ||||
|         /** @var array $journal */ | ||||
|         foreach ($genericSet as $journal) { | ||||
|             $currencyId        = (int)$journal['currency_id']; | ||||
|             $foreignCurrencyId = (int)$journal['foreign_currency_id']; | ||||
|             $currencyId        = (int) $journal['currency_id']; | ||||
|             $foreignCurrencyId = (int) $journal['foreign_currency_id']; | ||||
| 
 | ||||
|             /** @var array $tag */ | ||||
|             foreach ($journal['tags'] as $tag) { | ||||
| @@ -142,15 +142,15 @@ class TagController extends Controller | ||||
|                 // on currency ID
 | ||||
|                 if (0 !== $currencyId) { | ||||
|                     $response[$key] ??= [ | ||||
|                         'id'               => (string)$tagId, | ||||
|                         'id'               => (string) $tagId, | ||||
|                         'name'             => $tag['name'], | ||||
|                         'difference'       => '0', | ||||
|                         'difference_float' => 0, | ||||
|                         'currency_id'      => (string)$currencyId, | ||||
|                         'currency_id'      => (string) $currencyId, | ||||
|                         'currency_code'    => $journal['currency_code'], | ||||
|                     ]; | ||||
|                     $response[$key]['difference']       = bcadd($response[$key]['difference'], $journal['amount']); | ||||
|                     $response[$key]['difference_float'] = (float)$response[$key]['difference']; // float but on purpose.
 | ||||
|                     $response[$key]['difference_float'] = (float) $response[$key]['difference']; // float but on purpose.
 | ||||
|                 } | ||||
| 
 | ||||
|                 // on foreign ID
 | ||||
| @@ -158,11 +158,11 @@ class TagController extends Controller | ||||
|                     $response[$foreignKey]                     = $journal[$foreignKey] ?? [ | ||||
|                         'difference'       => '0', | ||||
|                         'difference_float' => 0, | ||||
|                         'currency_id'      => (string)$foreignCurrencyId, | ||||
|                         'currency_id'      => (string) $foreignCurrencyId, | ||||
|                         'currency_code'    => $journal['foreign_currency_code'], | ||||
|                     ]; | ||||
|                     $response[$foreignKey]['difference']       = bcadd($response[$foreignKey]['difference'], $journal['foreign_amount']); | ||||
|                     $response[$foreignKey]['difference_float'] = (float)$response[$foreignKey]['difference']; // float but on purpose.
 | ||||
|                     $response[$foreignKey]['difference_float'] = (float) $response[$foreignKey]['difference']; // float but on purpose.
 | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|   | ||||
| @@ -79,11 +79,11 @@ class AccountController extends Controller | ||||
|         /** @var array $entry */ | ||||
|         foreach ($income as $entry) { | ||||
|             $result[] = [ | ||||
|                 'id'               => (string)$entry['id'], | ||||
|                 'id'               => (string) $entry['id'], | ||||
|                 'name'             => $entry['name'], | ||||
|                 'difference'       => $entry['sum'], | ||||
|                 'difference_float' => (float)$entry['sum'], // float but on purpose.
 | ||||
|                 'currency_id'      => (string)$entry['currency_id'], | ||||
|                 'difference_float' => (float) $entry['sum'], // float but on purpose.
 | ||||
|                 'currency_id'      => (string) $entry['currency_id'], | ||||
|                 'currency_code'    => $entry['currency_code'], | ||||
|             ]; | ||||
|         } | ||||
| @@ -107,11 +107,11 @@ class AccountController extends Controller | ||||
|         /** @var array $entry */ | ||||
|         foreach ($income as $entry) { | ||||
|             $result[] = [ | ||||
|                 'id'               => (string)$entry['id'], | ||||
|                 'id'               => (string) $entry['id'], | ||||
|                 'name'             => $entry['name'], | ||||
|                 'difference'       => $entry['sum'], | ||||
|                 'difference_float' => (float)$entry['sum'], // float but on purpose.
 | ||||
|                 'currency_id'      => (string)$entry['currency_id'], | ||||
|                 'difference_float' => (float) $entry['sum'], // float but on purpose.
 | ||||
|                 'currency_id'      => (string) $entry['currency_id'], | ||||
|                 'currency_code'    => $entry['currency_code'], | ||||
|             ]; | ||||
|         } | ||||
|   | ||||
| @@ -85,11 +85,11 @@ class CategoryController extends Controller | ||||
|             /** @var array $expense */ | ||||
|             foreach ($expenses as $expense) { | ||||
|                 $result[] = [ | ||||
|                     'id'               => (string)$category->id, | ||||
|                     'id'               => (string) $category->id, | ||||
|                     'name'             => $category->name, | ||||
|                     'difference'       => $expense['sum'], | ||||
|                     'difference_float' => (float)$expense['sum'], // float but on purpose.
 | ||||
|                     'currency_id'      => (string)$expense['currency_id'], | ||||
|                     'difference_float' => (float) $expense['sum'], // float but on purpose.
 | ||||
|                     'currency_id'      => (string) $expense['currency_id'], | ||||
|                     'currency_code'    => $expense['currency_code'], | ||||
|                 ]; | ||||
|             } | ||||
| @@ -114,8 +114,8 @@ class CategoryController extends Controller | ||||
|         foreach ($expenses as $expense) { | ||||
|             $result[] = [ | ||||
|                 'difference'       => $expense['sum'], | ||||
|                 'difference_float' => (float)$expense['sum'], // float but on purpose.
 | ||||
|                 'currency_id'      => (string)$expense['currency_id'], | ||||
|                 'difference_float' => (float) $expense['sum'], // float but on purpose.
 | ||||
|                 'currency_id'      => (string) $expense['currency_id'], | ||||
|                 'currency_code'    => $expense['currency_code'], | ||||
|             ]; | ||||
|         } | ||||
|   | ||||
| @@ -51,31 +51,31 @@ class PeriodController extends Controller | ||||
|         $collector->setTypes([TransactionTypeEnum::DEPOSIT->value])->setRange($start, $end)->setDestinationAccounts($accounts); | ||||
|         $genericSet = $collector->getExtractedJournals(); | ||||
|         foreach ($genericSet as $journal) { | ||||
|             $currencyId        = (int)$journal['currency_id']; | ||||
|             $foreignCurrencyId = (int)$journal['foreign_currency_id']; | ||||
|             $currencyId        = (int) $journal['currency_id']; | ||||
|             $foreignCurrencyId = (int) $journal['foreign_currency_id']; | ||||
| 
 | ||||
|             if (0 !== $currencyId) { | ||||
|                 $response[$currencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$currencyId, | ||||
|                     'currency_id'      => (string) $currencyId, | ||||
|                     'currency_code'    => $journal['currency_code'], | ||||
|                 ]; | ||||
|                 $response[$currencyId]['difference']       = bcadd($response[$currencyId]['difference'], app('steam')->positive($journal['amount'])); | ||||
|                 $response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference']; // float but on purpose.
 | ||||
|                 $response[$currencyId]['difference_float'] = (float) $response[$currencyId]['difference']; // float but on purpose.
 | ||||
|             } | ||||
|             if (0 !== $foreignCurrencyId) { | ||||
|                 $response[$foreignCurrencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$foreignCurrencyId, | ||||
|                     'currency_id'      => (string) $foreignCurrencyId, | ||||
|                     'currency_code'    => $journal['foreign_currency_code'], | ||||
|                 ]; | ||||
|                 $response[$foreignCurrencyId]['difference']       = bcadd( | ||||
|                     $response[$foreignCurrencyId]['difference'], | ||||
|                     app('steam')->positive($journal['foreign_amount']) | ||||
|                 ); | ||||
|                 $response[$foreignCurrencyId]['difference_float'] = (float)$response[$foreignCurrencyId]['difference']; // float but on purpose.
 | ||||
|                 $response[$foreignCurrencyId]['difference_float'] = (float) $response[$foreignCurrencyId]['difference']; // float but on purpose.
 | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|   | ||||
| @@ -76,31 +76,31 @@ class TagController extends Controller | ||||
|         $genericSet = $collector->getExtractedJournals(); | ||||
| 
 | ||||
|         foreach ($genericSet as $journal) { | ||||
|             $currencyId        = (int)$journal['currency_id']; | ||||
|             $foreignCurrencyId = (int)$journal['foreign_currency_id']; | ||||
|             $currencyId        = (int) $journal['currency_id']; | ||||
|             $foreignCurrencyId = (int) $journal['foreign_currency_id']; | ||||
| 
 | ||||
|             if (0 !== $currencyId) { | ||||
|                 $response[$currencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$currencyId, | ||||
|                     'currency_id'      => (string) $currencyId, | ||||
|                     'currency_code'    => $journal['currency_code'], | ||||
|                 ]; | ||||
|                 $response[$currencyId]['difference']       = bcadd($response[$currencyId]['difference'], app('steam')->positive($journal['amount'])); | ||||
|                 $response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference']; | ||||
|                 $response[$currencyId]['difference_float'] = (float) $response[$currencyId]['difference']; | ||||
|             } | ||||
|             if (0 !== $foreignCurrencyId) { | ||||
|                 $response[$foreignCurrencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$foreignCurrencyId, | ||||
|                     'currency_id'      => (string) $foreignCurrencyId, | ||||
|                     'currency_code'    => $journal['foreign_currency_code'], | ||||
|                 ]; | ||||
|                 $response[$foreignCurrencyId]['difference']       = bcadd( | ||||
|                     $response[$foreignCurrencyId]['difference'], | ||||
|                     app('steam')->positive($journal['foreign_amount']) | ||||
|                 ); | ||||
|                 $response[$foreignCurrencyId]['difference_float'] = (float)$response[$foreignCurrencyId]['difference']; | ||||
|                 $response[$foreignCurrencyId]['difference_float'] = (float) $response[$foreignCurrencyId]['difference']; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| @@ -134,8 +134,8 @@ class TagController extends Controller | ||||
| 
 | ||||
|         /** @var array $journal */ | ||||
|         foreach ($genericSet as $journal) { | ||||
|             $currencyId        = (int)$journal['currency_id']; | ||||
|             $foreignCurrencyId = (int)$journal['foreign_currency_id']; | ||||
|             $currencyId        = (int) $journal['currency_id']; | ||||
|             $foreignCurrencyId = (int) $journal['foreign_currency_id']; | ||||
| 
 | ||||
|             /** @var array $tag */ | ||||
|             foreach ($journal['tags'] as $tag) { | ||||
| @@ -146,15 +146,15 @@ class TagController extends Controller | ||||
|                 // on currency ID
 | ||||
|                 if (0 !== $currencyId) { | ||||
|                     $response[$key] ??= [ | ||||
|                         'id'               => (string)$tagId, | ||||
|                         'id'               => (string) $tagId, | ||||
|                         'name'             => $tag['name'], | ||||
|                         'difference'       => '0', | ||||
|                         'difference_float' => 0, | ||||
|                         'currency_id'      => (string)$currencyId, | ||||
|                         'currency_id'      => (string) $currencyId, | ||||
|                         'currency_code'    => $journal['currency_code'], | ||||
|                     ]; | ||||
|                     $response[$key]['difference']       = bcadd($response[$key]['difference'], app('steam')->positive($journal['amount'])); | ||||
|                     $response[$key]['difference_float'] = (float)$response[$key]['difference']; | ||||
|                     $response[$key]['difference_float'] = (float) $response[$key]['difference']; | ||||
|                 } | ||||
| 
 | ||||
|                 // on foreign ID
 | ||||
| @@ -162,14 +162,14 @@ class TagController extends Controller | ||||
|                     $response[$foreignKey]                     = $journal[$foreignKey] ?? [ | ||||
|                         'difference'       => '0', | ||||
|                         'difference_float' => 0, | ||||
|                         'currency_id'      => (string)$foreignCurrencyId, | ||||
|                         'currency_id'      => (string) $foreignCurrencyId, | ||||
|                         'currency_code'    => $journal['foreign_currency_code'], | ||||
|                     ]; | ||||
|                     $response[$foreignKey]['difference']       = bcadd( | ||||
|                         $response[$foreignKey]['difference'], | ||||
|                         app('steam')->positive($journal['foreign_amount']) | ||||
|                     ); | ||||
|                     $response[$foreignKey]['difference_float'] = (float)$response[$foreignKey]['difference']; | ||||
|                     $response[$foreignKey]['difference_float'] = (float) $response[$foreignKey]['difference']; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|   | ||||
| @@ -85,11 +85,11 @@ class CategoryController extends Controller | ||||
|             /** @var array $expense */ | ||||
|             foreach ($expenses as $expense) { | ||||
|                 $result[] = [ | ||||
|                     'id'               => (string)$category->id, | ||||
|                     'id'               => (string) $category->id, | ||||
|                     'name'             => $category->name, | ||||
|                     'difference'       => $expense['sum'], | ||||
|                     'difference_float' => (float)$expense['sum'], | ||||
|                     'currency_id'      => (string)$expense['currency_id'], | ||||
|                     'difference_float' => (float) $expense['sum'], | ||||
|                     'currency_id'      => (string) $expense['currency_id'], | ||||
|                     'currency_code'    => $expense['currency_code'], | ||||
|                 ]; | ||||
|             } | ||||
| @@ -114,8 +114,8 @@ class CategoryController extends Controller | ||||
|         foreach ($expenses as $expense) { | ||||
|             $result[] = [ | ||||
|                 'difference'       => $expense['sum'], | ||||
|                 'difference_float' => (float)$expense['sum'], | ||||
|                 'currency_id'      => (string)$expense['currency_id'], | ||||
|                 'difference_float' => (float) $expense['sum'], | ||||
|                 'currency_id'      => (string) $expense['currency_id'], | ||||
|                 'currency_code'    => $expense['currency_code'], | ||||
|             ]; | ||||
|         } | ||||
|   | ||||
| @@ -51,31 +51,31 @@ class PeriodController extends Controller | ||||
|         $collector->setTypes([TransactionType::TRANSFER])->setRange($start, $end)->setDestinationAccounts($accounts); | ||||
|         $genericSet = $collector->getExtractedJournals(); | ||||
|         foreach ($genericSet as $journal) { | ||||
|             $currencyId        = (int)$journal['currency_id']; | ||||
|             $foreignCurrencyId = (int)$journal['foreign_currency_id']; | ||||
|             $currencyId        = (int) $journal['currency_id']; | ||||
|             $foreignCurrencyId = (int) $journal['foreign_currency_id']; | ||||
| 
 | ||||
|             if (0 !== $currencyId) { | ||||
|                 $response[$currencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$currencyId, | ||||
|                     'currency_id'      => (string) $currencyId, | ||||
|                     'currency_code'    => $journal['currency_code'], | ||||
|                 ]; | ||||
|                 $response[$currencyId]['difference']       = bcadd($response[$currencyId]['difference'], app('steam')->positive($journal['amount'])); | ||||
|                 $response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference']; | ||||
|                 $response[$currencyId]['difference_float'] = (float) $response[$currencyId]['difference']; | ||||
|             } | ||||
|             if (0 !== $foreignCurrencyId) { | ||||
|                 $response[$foreignCurrencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$foreignCurrencyId, | ||||
|                     'currency_id'      => (string) $foreignCurrencyId, | ||||
|                     'currency_code'    => $journal['foreign_currency_code'], | ||||
|                 ]; | ||||
|                 $response[$foreignCurrencyId]['difference']       = bcadd( | ||||
|                     $response[$foreignCurrencyId]['difference'], | ||||
|                     app('steam')->positive($journal['foreign_amount']) | ||||
|                 ); | ||||
|                 $response[$foreignCurrencyId]['difference_float'] = (float)$response[$foreignCurrencyId]['difference']; | ||||
|                 $response[$foreignCurrencyId]['difference_float'] = (float) $response[$foreignCurrencyId]['difference']; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|   | ||||
| @@ -74,31 +74,31 @@ class TagController extends Controller | ||||
|         $genericSet = $collector->getExtractedJournals(); | ||||
| 
 | ||||
|         foreach ($genericSet as $journal) { | ||||
|             $currencyId        = (int)$journal['currency_id']; | ||||
|             $foreignCurrencyId = (int)$journal['foreign_currency_id']; | ||||
|             $currencyId        = (int) $journal['currency_id']; | ||||
|             $foreignCurrencyId = (int) $journal['foreign_currency_id']; | ||||
| 
 | ||||
|             if (0 !== $currencyId) { | ||||
|                 $response[$currencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$currencyId, | ||||
|                     'currency_id'      => (string) $currencyId, | ||||
|                     'currency_code'    => $journal['currency_code'], | ||||
|                 ]; | ||||
|                 $response[$currencyId]['difference']       = bcadd($response[$currencyId]['difference'], app('steam')->positive($journal['amount'])); | ||||
|                 $response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference']; | ||||
|                 $response[$currencyId]['difference_float'] = (float) $response[$currencyId]['difference']; | ||||
|             } | ||||
|             if (0 !== $foreignCurrencyId) { | ||||
|                 $response[$foreignCurrencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$foreignCurrencyId, | ||||
|                     'currency_id'      => (string) $foreignCurrencyId, | ||||
|                     'currency_code'    => $journal['foreign_currency_code'], | ||||
|                 ]; | ||||
|                 $response[$foreignCurrencyId]['difference']       = bcadd( | ||||
|                     $response[$foreignCurrencyId]['difference'], | ||||
|                     app('steam')->positive($journal['foreign_amount']) | ||||
|                 ); | ||||
|                 $response[$foreignCurrencyId]['difference_float'] = (float)$response[$foreignCurrencyId]['difference']; | ||||
|                 $response[$foreignCurrencyId]['difference_float'] = (float) $response[$foreignCurrencyId]['difference']; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| @@ -132,8 +132,8 @@ class TagController extends Controller | ||||
| 
 | ||||
|         /** @var array $journal */ | ||||
|         foreach ($genericSet as $journal) { | ||||
|             $currencyId        = (int)$journal['currency_id']; | ||||
|             $foreignCurrencyId = (int)$journal['foreign_currency_id']; | ||||
|             $currencyId        = (int) $journal['currency_id']; | ||||
|             $foreignCurrencyId = (int) $journal['foreign_currency_id']; | ||||
| 
 | ||||
|             /** @var array $tag */ | ||||
|             foreach ($journal['tags'] as $tag) { | ||||
| @@ -144,15 +144,15 @@ class TagController extends Controller | ||||
|                 // on currency ID
 | ||||
|                 if (0 !== $currencyId) { | ||||
|                     $response[$key] ??= [ | ||||
|                         'id'               => (string)$tagId, | ||||
|                         'id'               => (string) $tagId, | ||||
|                         'name'             => $tag['name'], | ||||
|                         'difference'       => '0', | ||||
|                         'difference_float' => 0, | ||||
|                         'currency_id'      => (string)$currencyId, | ||||
|                         'currency_id'      => (string) $currencyId, | ||||
|                         'currency_code'    => $journal['currency_code'], | ||||
|                     ]; | ||||
|                     $response[$key]['difference']       = bcadd($response[$key]['difference'], app('steam')->positive($journal['amount'])); | ||||
|                     $response[$key]['difference_float'] = (float)$response[$key]['difference']; | ||||
|                     $response[$key]['difference_float'] = (float) $response[$key]['difference']; | ||||
|                 } | ||||
| 
 | ||||
|                 // on foreign ID
 | ||||
| @@ -160,14 +160,14 @@ class TagController extends Controller | ||||
|                     $response[$foreignKey]                     = $journal[$foreignKey] ?? [ | ||||
|                         'difference'       => '0', | ||||
|                         'difference_float' => 0, | ||||
|                         'currency_id'      => (string)$foreignCurrencyId, | ||||
|                         'currency_id'      => (string) $foreignCurrencyId, | ||||
|                         'currency_code'    => $journal['foreign_currency_code'], | ||||
|                     ]; | ||||
|                     $response[$foreignKey]['difference']       = bcadd( | ||||
|                         $response[$foreignKey]['difference'], | ||||
|                         app('steam')->positive($journal['foreign_amount']) | ||||
|                     ); | ||||
|                     $response[$foreignKey]['difference_float'] = (float)$response[$foreignKey]['difference']; // intentional float
 | ||||
|                     $response[$foreignKey]['difference_float'] = (float) $response[$foreignKey]['difference']; // intentional float
 | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|   | ||||
| @@ -105,7 +105,7 @@ class ShowController extends Controller | ||||
|                 ->header('Expires', '0') | ||||
|                 ->header('Cache-Control', 'must-revalidate, post-check=0, pre-check=0') | ||||
|                 ->header('Pragma', 'public') | ||||
|                 ->header('Content-Length', (string)strlen($content)) | ||||
|                 ->header('Content-Length', (string) strlen($content)) | ||||
|             ; | ||||
| 
 | ||||
|             return $response; | ||||
|   | ||||
| @@ -59,6 +59,38 @@ class ListController extends Controller | ||||
|         ); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/piggy_banks/listAccountByPiggyBank
 | ||||
|      * | ||||
|      * List single resource. | ||||
|      * | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function accounts(PiggyBank $piggyBank): JsonResponse | ||||
|     { | ||||
|         // types to get, page size:
 | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         $collection  = $piggyBank->accounts; | ||||
|         $count       = $collection->count(); | ||||
|         $events      = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator   = new LengthAwarePaginator($events, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.piggy-banks.accounts', [$piggyBank->id]).$this->buildParams()); | ||||
| 
 | ||||
|         /** @var AccountTransformer $transformer */ | ||||
|         $transformer = app(AccountTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource    = new FractalCollection($events, $transformer, 'accounts'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/piggy_banks/listAttachmentByPiggyBank
 | ||||
| @@ -119,36 +151,4 @@ class ListController extends Controller | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/piggy_banks/listAccountByPiggyBank
 | ||||
|      * | ||||
|      * List single resource. | ||||
|      * | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function accounts(PiggyBank $piggyBank): JsonResponse | ||||
|     { | ||||
|         // types to get, page size:
 | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         $collection  = $piggyBank->accounts; | ||||
|         $count       = $collection->count(); | ||||
|         $events      = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator   = new LengthAwarePaginator($events, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.piggy-banks.accounts', [$piggyBank->id]).$this->buildParams()); | ||||
| 
 | ||||
|         /** @var AccountTransformer $transformer */ | ||||
|         $transformer = app(AccountTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource    = new FractalCollection($events, $transformer, 'accounts'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -91,7 +91,7 @@ class ListController extends Controller | ||||
|         // filter list on currency preference:
 | ||||
|         $collection        = $unfiltered->filter( | ||||
|             static function (Account $account) use ($currency, $accountRepository) { | ||||
|                 $currencyId = (int)$accountRepository->getMetaValue($account, 'currency_id'); | ||||
|                 $currencyId = (int) $accountRepository->getMetaValue($account, 'currency_id'); | ||||
| 
 | ||||
|                 return $currencyId === $currency->id; | ||||
|             } | ||||
|   | ||||
| @@ -63,8 +63,8 @@ class AccountController extends Controller | ||||
|     public function search(Request $request): JsonResponse|Response | ||||
|     { | ||||
|         $manager     = $this->getManager(); | ||||
|         $query       = trim((string)$request->get('query')); | ||||
|         $field       = trim((string)$request->get('field')); | ||||
|         $query       = trim((string) $request->get('query')); | ||||
|         $field       = trim((string) $request->get('field')); | ||||
|         $type        = $request->get('type') ?? 'all'; | ||||
|         if ('' === $query || !in_array($field, $this->validFields, true)) { | ||||
|             return response(null, 422); | ||||
|   | ||||
| @@ -47,8 +47,8 @@ class TransactionController extends Controller | ||||
|     public function search(Request $request, SearchInterface $searcher): JsonResponse | ||||
|     { | ||||
|         $manager      = $this->getManager(); | ||||
|         $fullQuery    = (string)$request->get('query'); | ||||
|         $page         = 0 === (int)$request->get('page') ? 1 : (int)$request->get('page'); | ||||
|         $fullQuery    = (string) $request->get('query'); | ||||
|         $page         = 0 === (int) $request->get('page') ? 1 : (int) $request->get('page'); | ||||
|         $pageSize     = $this->parameters->get('limit'); | ||||
|         $searcher->parseQuery($fullQuery); | ||||
|         $searcher->setPage($page); | ||||
|   | ||||
| @@ -135,7 +135,7 @@ class BasicController extends Controller | ||||
| 
 | ||||
|         /** @var array $transactionJournal */ | ||||
|         foreach ($set as $transactionJournal) { | ||||
|             $currencyId           = (int)$transactionJournal['currency_id']; | ||||
|             $currencyId           = (int) $transactionJournal['currency_id']; | ||||
|             $incomes[$currencyId] ??= '0'; | ||||
|             $incomes[$currencyId] = bcadd( | ||||
|                 $incomes[$currencyId], | ||||
| @@ -153,7 +153,7 @@ class BasicController extends Controller | ||||
| 
 | ||||
|         /** @var array $transactionJournal */ | ||||
|         foreach ($set as $transactionJournal) { | ||||
|             $currencyId            = (int)$transactionJournal['currency_id']; | ||||
|             $currencyId            = (int) $transactionJournal['currency_id']; | ||||
|             $expenses[$currencyId] ??= '0'; | ||||
|             $expenses[$currencyId] = bcadd($expenses[$currencyId], $transactionJournal['amount']); | ||||
|             $sums[$currencyId]     ??= '0'; | ||||
| @@ -172,7 +172,7 @@ class BasicController extends Controller | ||||
|                 'key'                     => sprintf('balance-in-%s', $currency->code), | ||||
|                 'title'                   => trans('firefly.box_balance_in_currency', ['currency' => $currency->symbol]), | ||||
|                 'monetary_value'          => $sums[$currencyId] ?? '0', | ||||
|                 'currency_id'             => (string)$currency->id, | ||||
|                 'currency_id'             => (string) $currency->id, | ||||
|                 'currency_code'           => $currency->code, | ||||
|                 'currency_symbol'         => $currency->symbol, | ||||
|                 'currency_decimal_places' => $currency->decimal_places, | ||||
| @@ -185,7 +185,7 @@ class BasicController extends Controller | ||||
|                 'key'                     => sprintf('spent-in-%s', $currency->code), | ||||
|                 'title'                   => trans('firefly.box_spent_in_currency', ['currency' => $currency->symbol]), | ||||
|                 'monetary_value'          => $expenses[$currencyId] ?? '0', | ||||
|                 'currency_id'             => (string)$currency->id, | ||||
|                 'currency_id'             => (string) $currency->id, | ||||
|                 'currency_code'           => $currency->code, | ||||
|                 'currency_symbol'         => $currency->symbol, | ||||
|                 'currency_decimal_places' => $currency->decimal_places, | ||||
| @@ -197,7 +197,7 @@ class BasicController extends Controller | ||||
|                 'key'                     => sprintf('earned-in-%s', $currency->code), | ||||
|                 'title'                   => trans('firefly.box_earned_in_currency', ['currency' => $currency->symbol]), | ||||
|                 'monetary_value'          => $incomes[$currencyId] ?? '0', | ||||
|                 'currency_id'             => (string)$currency->id, | ||||
|                 'currency_id'             => (string) $currency->id, | ||||
|                 'currency_code'           => $currency->code, | ||||
|                 'currency_symbol'         => $currency->symbol, | ||||
|                 'currency_decimal_places' => $currency->decimal_places, | ||||
| @@ -231,7 +231,7 @@ class BasicController extends Controller | ||||
|                 'key'                     => sprintf('bills-paid-in-%s', $info['code']), | ||||
|                 'title'                   => trans('firefly.box_bill_paid_in_currency', ['currency' => $info['symbol']]), | ||||
|                 'monetary_value'          => $amount, | ||||
|                 'currency_id'             => (string)$info['id'], | ||||
|                 'currency_id'             => (string) $info['id'], | ||||
|                 'currency_code'           => $info['code'], | ||||
|                 'currency_symbol'         => $info['symbol'], | ||||
|                 'currency_decimal_places' => $info['decimal_places'], | ||||
| @@ -250,7 +250,7 @@ class BasicController extends Controller | ||||
|                 'key'                     => sprintf('bills-unpaid-in-%s', $info['code']), | ||||
|                 'title'                   => trans('firefly.box_bill_unpaid_in_currency', ['currency' => $info['symbol']]), | ||||
|                 'monetary_value'          => $amount, | ||||
|                 'currency_id'             => (string)$info['id'], | ||||
|                 'currency_id'             => (string) $info['id'], | ||||
|                 'currency_code'           => $info['code'], | ||||
|                 'currency_symbol'         => $info['symbol'], | ||||
|                 'currency_decimal_places' => $info['decimal_places'], | ||||
| @@ -277,21 +277,21 @@ class BasicController extends Controller | ||||
| 
 | ||||
|         foreach ($spent as $row) { | ||||
|             // either an amount was budgeted or 0 is available.
 | ||||
|             $amount          = (string)($available[$row['currency_id']] ?? '0'); | ||||
|             $amount          = (string) ($available[$row['currency_id']] ?? '0'); | ||||
|             $spentInCurrency = $row['sum']; | ||||
|             $leftToSpend     = bcadd($amount, $spentInCurrency); | ||||
| 
 | ||||
|             $days            = (int)$today->diffInDays($end, true) + 1; | ||||
|             $days            = (int) $today->diffInDays($end, true) + 1; | ||||
|             $perDay          = '0'; | ||||
|             if (0 !== $days && bccomp($leftToSpend, '0') > -1) { | ||||
|                 $perDay = bcdiv($leftToSpend, (string)$days); | ||||
|                 $perDay = bcdiv($leftToSpend, (string) $days); | ||||
|             } | ||||
| 
 | ||||
|             $return[]        = [ | ||||
|                 'key'                     => sprintf('left-to-spend-in-%s', $row['currency_code']), | ||||
|                 'title'                   => trans('firefly.box_left_to_spend_in_currency', ['currency' => $row['currency_symbol']]), | ||||
|                 'monetary_value'          => $leftToSpend, | ||||
|                 'currency_id'             => (string)$row['currency_id'], | ||||
|                 'currency_id'             => (string) $row['currency_id'], | ||||
|                 'currency_code'           => $row['currency_code'], | ||||
|                 'currency_symbol'         => $row['currency_symbol'], | ||||
|                 'currency_decimal_places' => $row['currency_decimal_places'], | ||||
| @@ -351,7 +351,7 @@ class BasicController extends Controller | ||||
|                 'key'                     => sprintf('net-worth-in-%s', $data['currency_code']), | ||||
|                 'title'                   => trans('firefly.box_net_worth_in_currency', ['currency' => $data['currency_symbol']]), | ||||
|                 'monetary_value'          => $amount, | ||||
|                 'currency_id'             => (string)$data['currency_id'], | ||||
|                 'currency_id'             => (string) $data['currency_id'], | ||||
|                 'currency_code'           => $data['currency_code'], | ||||
|                 'currency_symbol'         => $data['currency_symbol'], | ||||
|                 'currency_decimal_places' => $data['currency_decimal_places'], | ||||
|   | ||||
| @@ -101,8 +101,8 @@ class ConfigurationController extends Controller | ||||
| 
 | ||||
|         return [ | ||||
|             'is_demo_site'            => $isDemoSite?->data, | ||||
|             'permission_update_check' => null === $updateCheck ? null : (int)$updateCheck->data, | ||||
|             'last_update_check'       => null === $lastCheck ? null : (int)$lastCheck->data, | ||||
|             'permission_update_check' => null === $updateCheck ? null : (int) $updateCheck->data, | ||||
|             'last_update_check'       => null === $lastCheck ? null : (int) $lastCheck->data, | ||||
|             'single_user_mode'        => $singleUser?->data, | ||||
|         ]; | ||||
|     } | ||||
|   | ||||
| @@ -83,12 +83,12 @@ class MoveTransactionsRequest extends FormRequest | ||||
|         $data                = $validator->getData(); | ||||
|         $repository          = app(AccountRepositoryInterface::class); | ||||
|         $repository->setUser(auth()->user()); | ||||
|         $original            = $repository->find((int)$data['original_account']); | ||||
|         $destination         = $repository->find((int)$data['destination_account']); | ||||
|         $original            = $repository->find((int) $data['original_account']); | ||||
|         $destination         = $repository->find((int) $data['destination_account']); | ||||
| 
 | ||||
|         // not the same type:
 | ||||
|         if ($original->accountType->type !== $destination->accountType->type) { | ||||
|             $validator->errors()->add('title', (string)trans('validation.same_account_type')); | ||||
|             $validator->errors()->add('title', (string) trans('validation.same_account_type')); | ||||
| 
 | ||||
|             return; | ||||
|         } | ||||
| @@ -98,7 +98,7 @@ class MoveTransactionsRequest extends FormRequest | ||||
| 
 | ||||
|         // check different scenario's.
 | ||||
|         if (null === $originalCurrency xor null === $destinationCurrency) { | ||||
|             $validator->errors()->add('title', (string)trans('validation.same_account_currency')); | ||||
|             $validator->errors()->add('title', (string) trans('validation.same_account_currency')); | ||||
| 
 | ||||
|             return; | ||||
|         } | ||||
| @@ -107,7 +107,7 @@ class MoveTransactionsRequest extends FormRequest | ||||
|             return; | ||||
|         } | ||||
|         if ($originalCurrency->code !== $destinationCurrency->code) { | ||||
|             $validator->errors()->add('title', (string)trans('validation.same_account_currency')); | ||||
|             $validator->errors()->add('title', (string) trans('validation.same_account_currency')); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -52,7 +52,7 @@ class ExportRequest extends FormRequest | ||||
| 
 | ||||
|         $accounts           = new Collection(); | ||||
|         foreach ($parts as $part) { | ||||
|             $accountId = (int)$part; | ||||
|             $accountId = (int) $part; | ||||
|             if (0 !== $accountId) { | ||||
|                 $account = $repository->find($accountId); | ||||
|                 if (null !== $account && AccountType::ASSET === $account->accountType->type) { | ||||
|   | ||||
| @@ -88,7 +88,7 @@ class GenericRequest extends FormRequest | ||||
|         $array      = $this->get('accounts'); | ||||
|         if (is_array($array)) { | ||||
|             foreach ($array as $accountId) { | ||||
|                 $accountId = (int)$accountId; | ||||
|                 $accountId = (int) $accountId; | ||||
|                 $account   = $repository->find($accountId); | ||||
|                 if (null !== $account) { | ||||
|                     $this->accounts->push($account); | ||||
| @@ -114,7 +114,7 @@ class GenericRequest extends FormRequest | ||||
|         $array      = $this->get('bills'); | ||||
|         if (is_array($array)) { | ||||
|             foreach ($array as $billId) { | ||||
|                 $billId = (int)$billId; | ||||
|                 $billId = (int) $billId; | ||||
|                 $bill   = $repository->find($billId); | ||||
|                 if (null !== $bill) { | ||||
|                     $this->bills->push($bill); | ||||
| @@ -140,7 +140,7 @@ class GenericRequest extends FormRequest | ||||
|         $array      = $this->get('budgets'); | ||||
|         if (is_array($array)) { | ||||
|             foreach ($array as $budgetId) { | ||||
|                 $budgetId = (int)$budgetId; | ||||
|                 $budgetId = (int) $budgetId; | ||||
|                 $budget   = $repository->find($budgetId); | ||||
|                 if (null !== $budget) { | ||||
|                     $this->budgets->push($budget); | ||||
| @@ -166,7 +166,7 @@ class GenericRequest extends FormRequest | ||||
|         $array      = $this->get('categories'); | ||||
|         if (is_array($array)) { | ||||
|             foreach ($array as $categoryId) { | ||||
|                 $categoryId = (int)$categoryId; | ||||
|                 $categoryId = (int) $categoryId; | ||||
|                 $category   = $repository->find($categoryId); | ||||
|                 if (null !== $category) { | ||||
|                     $this->categories->push($category); | ||||
| @@ -240,7 +240,7 @@ class GenericRequest extends FormRequest | ||||
|         $array      = $this->get('tags'); | ||||
|         if (is_array($array)) { | ||||
|             foreach ($array as $tagId) { | ||||
|                 $tagId = (int)$tagId; | ||||
|                 $tagId = (int) $tagId; | ||||
|                 $tag   = $repository->find($tagId); | ||||
|                 if (null !== $tag) { | ||||
|                     $this->tags->push($tag); | ||||
|   | ||||
| @@ -84,7 +84,7 @@ class Request extends FormRequest | ||||
|                     $start = new Carbon($data['start']); | ||||
|                     $end   = new Carbon($data['end']); | ||||
|                     if ($end->isBefore($start)) { | ||||
|                         $validator->errors()->add('end', (string)trans('validation.date_after')); | ||||
|                         $validator->errors()->add('end', (string) trans('validation.date_after')); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|   | ||||
| @@ -96,11 +96,11 @@ class StoreRequest extends FormRequest | ||||
|         $validator->after( | ||||
|             static function (Validator $validator): void { | ||||
|                 $data = $validator->getData(); | ||||
|                 $min  = (string)($data['amount_min'] ?? '0'); | ||||
|                 $max  = (string)($data['amount_max'] ?? '0'); | ||||
|                 $min  = (string) ($data['amount_min'] ?? '0'); | ||||
|                 $max  = (string) ($data['amount_max'] ?? '0'); | ||||
| 
 | ||||
|                 if (1 === bccomp($min, $max)) { | ||||
|                     $validator->errors()->add('amount_min', (string)trans('validation.amount_min_over_max')); | ||||
|                     $validator->errors()->add('amount_min', (string) trans('validation.amount_min_over_max')); | ||||
|                 } | ||||
|             } | ||||
|         ); | ||||
|   | ||||
| @@ -104,7 +104,7 @@ class UpdateRequest extends FormRequest | ||||
|                     $max = $data['amount_max'] ?? '0'; | ||||
| 
 | ||||
|                     if (1 === bccomp($min, $max)) { | ||||
|                         $validator->errors()->add('amount_min', (string)trans('validation.amount_min_over_max')); | ||||
|                         $validator->errors()->add('amount_min', (string) trans('validation.amount_min_over_max')); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|   | ||||
| @@ -65,6 +65,25 @@ class StoreRequest extends FormRequest | ||||
|         return $data; | ||||
|     } | ||||
| 
 | ||||
|     private function parseAccounts(mixed $array): array | ||||
|     { | ||||
|         if (!is_array($array)) { | ||||
|             return []; | ||||
|         } | ||||
|         $return = []; | ||||
|         foreach ($array as $entry) { | ||||
|             if (!is_array($entry)) { | ||||
|                 continue; | ||||
|             } | ||||
|             $return[] = [ | ||||
|                 'account_id'     => $this->integerFromValue((string) ($entry['account_id'] ?? '0')), | ||||
|                 'current_amount' => $this->clearString((string) ($entry['current_amount'] ?? '0')), | ||||
|             ]; | ||||
|         } | ||||
| 
 | ||||
|         return $return; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * The rules that the incoming request must be matched against. | ||||
|      */ | ||||
| @@ -109,7 +128,7 @@ class StoreRequest extends FormRequest | ||||
|                             // check currency here.
 | ||||
|                             $accountCurrency = $repository->getAccountCurrency($account); | ||||
|                             $isMultiCurrency = $repository->getMetaValue($account, 'is_multi_currency'); | ||||
|                             $currentAmount   = bcadd($currentAmount, (string)($array['current_amount'] ?? '0')); | ||||
|                             $currentAmount   = bcadd($currentAmount, (string) ($array['current_amount'] ?? '0')); | ||||
|                             if ($accountCurrency->id !== $currency->id && 'true' !== $isMultiCurrency) { | ||||
|                                 $validator->errors()->add(sprintf('accounts.%d', $index), trans('validation.invalid_account_currency')); | ||||
|                             } | ||||
| @@ -130,25 +149,6 @@ class StoreRequest extends FormRequest | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private function parseAccounts(mixed $array): array | ||||
|     { | ||||
|         if (!is_array($array)) { | ||||
|             return []; | ||||
|         } | ||||
|         $return = []; | ||||
|         foreach ($array as $entry) { | ||||
|             if (!is_array($entry)) { | ||||
|                 continue; | ||||
|             } | ||||
|             $return[] = [ | ||||
|                 'account_id'     => $this->integerFromValue((string) ($entry['account_id'] ?? '0')), | ||||
|                 'current_amount' => $this->clearString((string) ($entry['current_amount'] ?? '0')), | ||||
|             ]; | ||||
|         } | ||||
| 
 | ||||
|         return $return; | ||||
|     } | ||||
| 
 | ||||
|     private function getCurrencyFromData(array $data): TransactionCurrency | ||||
|     { | ||||
|         if (array_key_exists('transaction_currency_code', $data) && '' !== (string) $data['transaction_currency_code']) { | ||||
|   | ||||
| @@ -121,10 +121,10 @@ class StoreRequest extends FormRequest | ||||
|                 $current['moment'] = $repetition['moment']; | ||||
|             } | ||||
|             if (array_key_exists('skip', $repetition)) { | ||||
|                 $current['skip'] = (int)$repetition['skip']; | ||||
|                 $current['skip'] = (int) $repetition['skip']; | ||||
|             } | ||||
|             if (array_key_exists('weekend', $repetition)) { | ||||
|                 $current['weekend'] = (int)$repetition['weekend']; | ||||
|                 $current['weekend'] = (int) $repetition['weekend']; | ||||
|             } | ||||
| 
 | ||||
|             $return[] = $current; | ||||
|   | ||||
| @@ -101,15 +101,15 @@ class UpdateRequest extends FormRequest | ||||
|             } | ||||
| 
 | ||||
|             if (array_key_exists('moment', $repetition)) { | ||||
|                 $current['moment'] = (string)$repetition['moment']; | ||||
|                 $current['moment'] = (string) $repetition['moment']; | ||||
|             } | ||||
| 
 | ||||
|             if (array_key_exists('skip', $repetition)) { | ||||
|                 $current['skip'] = (int)$repetition['skip']; | ||||
|                 $current['skip'] = (int) $repetition['skip']; | ||||
|             } | ||||
| 
 | ||||
|             if (array_key_exists('weekend', $repetition)) { | ||||
|                 $current['weekend'] = (int)$repetition['weekend']; | ||||
|                 $current['weekend'] = (int) $repetition['weekend']; | ||||
|             } | ||||
|             $return[] = $current; | ||||
|         } | ||||
|   | ||||
| @@ -74,9 +74,9 @@ class StoreRequest extends FormRequest | ||||
|                 $return[] = [ | ||||
|                     'type'            => $trigger['type'] ?? '', | ||||
|                     'value'           => $trigger['value'] ?? null, | ||||
|                     'prohibited'      => $this->convertBoolean((string)($trigger['prohibited'] ?? 'false')), | ||||
|                     'active'          => $this->convertBoolean((string)($trigger['active'] ?? 'true')), | ||||
|                     'stop_processing' => $this->convertBoolean((string)($trigger['stop_processing'] ?? 'false')), | ||||
|                     'prohibited'      => $this->convertBoolean((string) ($trigger['prohibited'] ?? 'false')), | ||||
|                     'active'          => $this->convertBoolean((string) ($trigger['active'] ?? 'true')), | ||||
|                     'stop_processing' => $this->convertBoolean((string) ($trigger['stop_processing'] ?? 'false')), | ||||
|                 ]; | ||||
|             } | ||||
|         } | ||||
| @@ -93,8 +93,8 @@ class StoreRequest extends FormRequest | ||||
|                 $return[] = [ | ||||
|                     'type'            => $action['type'], | ||||
|                     'value'           => $action['value'], | ||||
|                     'active'          => $this->convertBoolean((string)($action['active'] ?? 'true')), | ||||
|                     'stop_processing' => $this->convertBoolean((string)($action['stop_processing'] ?? 'false')), | ||||
|                     'active'          => $this->convertBoolean((string) ($action['active'] ?? 'true')), | ||||
|                     'stop_processing' => $this->convertBoolean((string) ($action['stop_processing'] ?? 'false')), | ||||
|                 ]; | ||||
|             } | ||||
|         } | ||||
| @@ -161,7 +161,7 @@ class StoreRequest extends FormRequest | ||||
|         $triggers = $data['triggers'] ?? []; | ||||
|         // need at least one trigger
 | ||||
|         if (!is_countable($triggers) || 0 === count($triggers)) { | ||||
|             $validator->errors()->add('title', (string)trans('validation.at_least_one_trigger')); | ||||
|             $validator->errors()->add('title', (string) trans('validation.at_least_one_trigger')); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| @@ -174,7 +174,7 @@ class StoreRequest extends FormRequest | ||||
|         $actions = $data['actions'] ?? []; | ||||
|         // need at least one trigger
 | ||||
|         if (!is_countable($actions) || 0 === count($actions)) { | ||||
|             $validator->errors()->add('title', (string)trans('validation.at_least_one_action')); | ||||
|             $validator->errors()->add('title', (string) trans('validation.at_least_one_action')); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| @@ -203,7 +203,7 @@ class StoreRequest extends FormRequest | ||||
|             } | ||||
|         } | ||||
|         if (true === $allInactive) { | ||||
|             $validator->errors()->add(sprintf('triggers.%d.active', $inactiveIndex), (string)trans('validation.at_least_one_active_trigger')); | ||||
|             $validator->errors()->add(sprintf('triggers.%d.active', $inactiveIndex), (string) trans('validation.at_least_one_active_trigger')); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| @@ -232,7 +232,7 @@ class StoreRequest extends FormRequest | ||||
|             } | ||||
|         } | ||||
|         if (true === $allInactive) { | ||||
|             $validator->errors()->add(sprintf('actions.%d.active', $inactiveIndex), (string)trans('validation.at_least_one_active_action')); | ||||
|             $validator->errors()->add(sprintf('actions.%d.active', $inactiveIndex), (string) trans('validation.at_least_one_active_action')); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -49,7 +49,7 @@ class TestRequest extends FormRequest | ||||
| 
 | ||||
|     private function getPage(): int | ||||
|     { | ||||
|         return 0 === (int)$this->query('page') ? 1 : (int)$this->query('page'); | ||||
|         return 0 === (int) $this->query('page') ? 1 : (int) $this->query('page'); | ||||
|     } | ||||
| 
 | ||||
|     private function getDate(string $field): ?Carbon | ||||
| @@ -58,7 +58,7 @@ class TestRequest extends FormRequest | ||||
|         if (is_array($value)) { | ||||
|             return null; | ||||
|         } | ||||
|         $value = (string)$value; | ||||
|         $value = (string) $value; | ||||
| 
 | ||||
|         return null === $this->query($field) ? null : Carbon::createFromFormat('Y-m-d', substr($value, 0, 10)); | ||||
|     } | ||||
|   | ||||
| @@ -52,7 +52,7 @@ class TriggerRequest extends FormRequest | ||||
|         if (is_array($value)) { | ||||
|             return null; | ||||
|         } | ||||
|         $value = (string)$value; | ||||
|         $value = (string) $value; | ||||
| 
 | ||||
|         return null === $this->query($field) ? null : Carbon::createFromFormat('Y-m-d', substr($value, 0, 10)); | ||||
|     } | ||||
|   | ||||
| @@ -109,8 +109,8 @@ class UpdateRequest extends FormRequest | ||||
|                 $return[] = [ | ||||
|                     'type'            => $action['type'], | ||||
|                     'value'           => $action['value'], | ||||
|                     'active'          => $this->convertBoolean((string)($action['active'] ?? 'false')), | ||||
|                     'stop_processing' => $this->convertBoolean((string)($action['stop_processing'] ?? 'false')), | ||||
|                     'active'          => $this->convertBoolean((string) ($action['active'] ?? 'false')), | ||||
|                     'stop_processing' => $this->convertBoolean((string) ($action['stop_processing'] ?? 'false')), | ||||
|                 ]; | ||||
|             } | ||||
|         } | ||||
| @@ -181,7 +181,7 @@ class UpdateRequest extends FormRequest | ||||
|         $triggers = $data['triggers'] ?? null; | ||||
|         // need at least one trigger
 | ||||
|         if (is_array($triggers) && 0 === count($triggers)) { | ||||
|             $validator->errors()->add('title', (string)trans('validation.at_least_one_trigger')); | ||||
|             $validator->errors()->add('title', (string) trans('validation.at_least_one_trigger')); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| @@ -208,7 +208,7 @@ class UpdateRequest extends FormRequest | ||||
|             } | ||||
|         } | ||||
|         if (true === $allInactive) { | ||||
|             $validator->errors()->add(sprintf('triggers.%d.active', $inactiveIndex), (string)trans('validation.at_least_one_active_trigger')); | ||||
|             $validator->errors()->add(sprintf('triggers.%d.active', $inactiveIndex), (string) trans('validation.at_least_one_active_trigger')); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| @@ -221,7 +221,7 @@ class UpdateRequest extends FormRequest | ||||
|         $actions = $data['actions'] ?? null; | ||||
|         // need at least one action
 | ||||
|         if (is_array($actions) && 0 === count($actions)) { | ||||
|             $validator->errors()->add('title', (string)trans('validation.at_least_one_action')); | ||||
|             $validator->errors()->add('title', (string) trans('validation.at_least_one_action')); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| @@ -249,7 +249,7 @@ class UpdateRequest extends FormRequest | ||||
|             } | ||||
|         } | ||||
|         if (true === $allInactive) { | ||||
|             $validator->errors()->add(sprintf('actions.%d.active', $inactiveIndex), (string)trans('validation.at_least_one_active_action')); | ||||
|             $validator->errors()->add(sprintf('actions.%d.active', $inactiveIndex), (string) trans('validation.at_least_one_active_action')); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -52,7 +52,7 @@ class TestRequest extends FormRequest | ||||
|         if (is_array($value)) { | ||||
|             return null; | ||||
|         } | ||||
|         $value = (string)$value; | ||||
|         $value = (string) $value; | ||||
| 
 | ||||
|         return null === $this->query($field) ? null : Carbon::createFromFormat('Y-m-d', substr($value, 0, 10)); | ||||
|     } | ||||
|   | ||||
| @@ -52,7 +52,7 @@ class TriggerRequest extends FormRequest | ||||
|         if (is_array($value)) { | ||||
|             return null; | ||||
|         } | ||||
|         $value = (string)$value; | ||||
|         $value = (string) $value; | ||||
| 
 | ||||
|         return null === $this->query($field) ? null : Carbon::createFromFormat('Y-m-d', substr($value, 0, 10)); | ||||
|     } | ||||
|   | ||||
| @@ -84,73 +84,73 @@ class StoreRequest extends FormRequest | ||||
|             $return[] = [ | ||||
|                 'type'                  => $this->clearString($object['type']), | ||||
|                 'date'                  => $this->dateFromValue($object['date']), | ||||
|                 'order'                 => $this->integerFromValue((string)$object['order']), | ||||
|                 'order'                 => $this->integerFromValue((string) $object['order']), | ||||
| 
 | ||||
|                 'currency_id'           => $this->integerFromValue((string)$object['currency_id']), | ||||
|                 'currency_code'         => $this->clearString((string)$object['currency_code']), | ||||
|                 'currency_id'           => $this->integerFromValue((string) $object['currency_id']), | ||||
|                 'currency_code'         => $this->clearString((string) $object['currency_code']), | ||||
| 
 | ||||
|                 // foreign currency info:
 | ||||
|                 'foreign_currency_id'   => $this->integerFromValue((string)$object['foreign_currency_id']), | ||||
|                 'foreign_currency_code' => $this->clearString((string)$object['foreign_currency_code']), | ||||
|                 'foreign_currency_id'   => $this->integerFromValue((string) $object['foreign_currency_id']), | ||||
|                 'foreign_currency_code' => $this->clearString((string) $object['foreign_currency_code']), | ||||
| 
 | ||||
|                 // amount and foreign amount. Cannot be 0.
 | ||||
|                 'amount'                => $this->clearString((string)$object['amount']), | ||||
|                 'foreign_amount'        => $this->clearString((string)$object['foreign_amount']), | ||||
|                 'amount'                => $this->clearString((string) $object['amount']), | ||||
|                 'foreign_amount'        => $this->clearString((string) $object['foreign_amount']), | ||||
| 
 | ||||
|                 // description.
 | ||||
|                 'description'           => $this->clearString($object['description']), | ||||
| 
 | ||||
|                 // source of transaction. If everything is null, assume cash account.
 | ||||
|                 'source_id'             => $this->integerFromValue((string)$object['source_id']), | ||||
|                 'source_name'           => $this->clearString((string)$object['source_name']), | ||||
|                 'source_iban'           => $this->clearIban((string)$object['source_iban']), | ||||
|                 'source_number'         => $this->clearString((string)$object['source_number']), | ||||
|                 'source_bic'            => $this->clearString((string)$object['source_bic']), | ||||
|                 'source_id'             => $this->integerFromValue((string) $object['source_id']), | ||||
|                 'source_name'           => $this->clearString((string) $object['source_name']), | ||||
|                 'source_iban'           => $this->clearIban((string) $object['source_iban']), | ||||
|                 'source_number'         => $this->clearString((string) $object['source_number']), | ||||
|                 'source_bic'            => $this->clearString((string) $object['source_bic']), | ||||
| 
 | ||||
|                 // destination of transaction. If everything is null, assume cash account.
 | ||||
|                 'destination_id'        => $this->integerFromValue((string)$object['destination_id']), | ||||
|                 'destination_name'      => $this->clearString((string)$object['destination_name']), | ||||
|                 'destination_iban'      => $this->clearIban((string)$object['destination_iban']), | ||||
|                 'destination_number'    => $this->clearString((string)$object['destination_number']), | ||||
|                 'destination_bic'       => $this->clearString((string)$object['destination_bic']), | ||||
|                 'destination_id'        => $this->integerFromValue((string) $object['destination_id']), | ||||
|                 'destination_name'      => $this->clearString((string) $object['destination_name']), | ||||
|                 'destination_iban'      => $this->clearIban((string) $object['destination_iban']), | ||||
|                 'destination_number'    => $this->clearString((string) $object['destination_number']), | ||||
|                 'destination_bic'       => $this->clearString((string) $object['destination_bic']), | ||||
| 
 | ||||
|                 // budget info
 | ||||
|                 'budget_id'             => $this->integerFromValue((string)$object['budget_id']), | ||||
|                 'budget_name'           => $this->clearString((string)$object['budget_name']), | ||||
|                 'budget_id'             => $this->integerFromValue((string) $object['budget_id']), | ||||
|                 'budget_name'           => $this->clearString((string) $object['budget_name']), | ||||
| 
 | ||||
|                 // category info
 | ||||
|                 'category_id'           => $this->integerFromValue((string)$object['category_id']), | ||||
|                 'category_name'         => $this->clearString((string)$object['category_name']), | ||||
|                 'category_id'           => $this->integerFromValue((string) $object['category_id']), | ||||
|                 'category_name'         => $this->clearString((string) $object['category_name']), | ||||
| 
 | ||||
|                 // journal bill reference. Optional. Will only work for withdrawals
 | ||||
|                 'bill_id'               => $this->integerFromValue((string)$object['bill_id']), | ||||
|                 'bill_name'             => $this->clearString((string)$object['bill_name']), | ||||
|                 'bill_id'               => $this->integerFromValue((string) $object['bill_id']), | ||||
|                 'bill_name'             => $this->clearString((string) $object['bill_name']), | ||||
| 
 | ||||
|                 // piggy bank reference. Optional. Will only work for transfers
 | ||||
|                 'piggy_bank_id'         => $this->integerFromValue((string)$object['piggy_bank_id']), | ||||
|                 'piggy_bank_name'       => $this->clearString((string)$object['piggy_bank_name']), | ||||
|                 'piggy_bank_id'         => $this->integerFromValue((string) $object['piggy_bank_id']), | ||||
|                 'piggy_bank_name'       => $this->clearString((string) $object['piggy_bank_name']), | ||||
| 
 | ||||
|                 // some other interesting properties
 | ||||
|                 'reconciled'            => $this->convertBoolean((string)$object['reconciled']), | ||||
|                 'notes'                 => $this->clearStringKeepNewlines((string)$object['notes']), | ||||
|                 'reconciled'            => $this->convertBoolean((string) $object['reconciled']), | ||||
|                 'notes'                 => $this->clearStringKeepNewlines((string) $object['notes']), | ||||
|                 'tags'                  => $this->arrayFromValue($object['tags']), | ||||
| 
 | ||||
|                 // all custom fields:
 | ||||
|                 'internal_reference'    => $this->clearString((string)$object['internal_reference']), | ||||
|                 'external_id'           => $this->clearString((string)$object['external_id']), | ||||
|                 'internal_reference'    => $this->clearString((string) $object['internal_reference']), | ||||
|                 'external_id'           => $this->clearString((string) $object['external_id']), | ||||
|                 'original_source'       => sprintf('ff3-v%s', config('firefly.version')), | ||||
|                 'recurrence_id'         => $this->integerFromValue($object['recurrence_id']), | ||||
|                 'bunq_payment_id'       => $this->clearString((string)$object['bunq_payment_id']), | ||||
|                 'external_url'          => $this->clearString((string)$object['external_url']), | ||||
|                 'bunq_payment_id'       => $this->clearString((string) $object['bunq_payment_id']), | ||||
|                 'external_url'          => $this->clearString((string) $object['external_url']), | ||||
| 
 | ||||
|                 'sepa_cc'               => $this->clearString((string)$object['sepa_cc']), | ||||
|                 'sepa_ct_op'            => $this->clearString((string)$object['sepa_ct_op']), | ||||
|                 'sepa_ct_id'            => $this->clearString((string)$object['sepa_ct_id']), | ||||
|                 'sepa_db'               => $this->clearString((string)$object['sepa_db']), | ||||
|                 'sepa_country'          => $this->clearString((string)$object['sepa_country']), | ||||
|                 'sepa_ep'               => $this->clearString((string)$object['sepa_ep']), | ||||
|                 'sepa_ci'               => $this->clearString((string)$object['sepa_ci']), | ||||
|                 'sepa_batch_id'         => $this->clearString((string)$object['sepa_batch_id']), | ||||
|                 'sepa_cc'               => $this->clearString((string) $object['sepa_cc']), | ||||
|                 'sepa_ct_op'            => $this->clearString((string) $object['sepa_ct_op']), | ||||
|                 'sepa_ct_id'            => $this->clearString((string) $object['sepa_ct_id']), | ||||
|                 'sepa_db'               => $this->clearString((string) $object['sepa_db']), | ||||
|                 'sepa_country'          => $this->clearString((string) $object['sepa_country']), | ||||
|                 'sepa_ep'               => $this->clearString((string) $object['sepa_ep']), | ||||
|                 'sepa_ci'               => $this->clearString((string) $object['sepa_ci']), | ||||
|                 'sepa_batch_id'         => $this->clearString((string) $object['sepa_batch_id']), | ||||
|                 // custom date fields. Must be Carbon objects. Presence is optional.
 | ||||
|                 'interest_date'         => $this->dateFromValue($object['interest_date']), | ||||
|                 'book_date'             => $this->dateFromValue($object['book_date']), | ||||
|   | ||||
| @@ -137,7 +137,7 @@ class UpdateRequest extends FormRequest | ||||
|     { | ||||
|         foreach ($this->integerFields as $fieldName) { | ||||
|             if (array_key_exists($fieldName, $transaction)) { | ||||
|                 $current[$fieldName] = $this->integerFromValue((string)$transaction[$fieldName]); | ||||
|                 $current[$fieldName] = $this->integerFromValue((string) $transaction[$fieldName]); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| @@ -152,7 +152,7 @@ class UpdateRequest extends FormRequest | ||||
|     { | ||||
|         foreach ($this->stringFields as $fieldName) { | ||||
|             if (array_key_exists($fieldName, $transaction)) { | ||||
|                 $current[$fieldName] = $this->clearString((string)$transaction[$fieldName]); | ||||
|                 $current[$fieldName] = $this->clearString((string) $transaction[$fieldName]); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| @@ -167,7 +167,7 @@ class UpdateRequest extends FormRequest | ||||
|     { | ||||
|         foreach ($this->textareaFields as $fieldName) { | ||||
|             if (array_key_exists($fieldName, $transaction)) { | ||||
|                 $current[$fieldName] = $this->clearStringKeepNewlines((string)$transaction[$fieldName]); // keep newlines
 | ||||
|                 $current[$fieldName] = $this->clearStringKeepNewlines((string) $transaction[$fieldName]); // keep newlines
 | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| @@ -183,8 +183,8 @@ class UpdateRequest extends FormRequest | ||||
|         foreach ($this->dateFields as $fieldName) { | ||||
|             app('log')->debug(sprintf('Now at date field %s', $fieldName)); | ||||
|             if (array_key_exists($fieldName, $transaction)) { | ||||
|                 app('log')->debug(sprintf('New value: "%s"', (string)$transaction[$fieldName])); | ||||
|                 $current[$fieldName] = $this->dateFromValue((string)$transaction[$fieldName]); | ||||
|                 app('log')->debug(sprintf('New value: "%s"', (string) $transaction[$fieldName])); | ||||
|                 $current[$fieldName] = $this->dateFromValue((string) $transaction[$fieldName]); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| @@ -199,7 +199,7 @@ class UpdateRequest extends FormRequest | ||||
|     { | ||||
|         foreach ($this->booleanFields as $fieldName) { | ||||
|             if (array_key_exists($fieldName, $transaction)) { | ||||
|                 $current[$fieldName] = $this->convertBoolean((string)$transaction[$fieldName]); | ||||
|                 $current[$fieldName] = $this->convertBoolean((string) $transaction[$fieldName]); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| @@ -234,7 +234,7 @@ class UpdateRequest extends FormRequest | ||||
|                     $current[$fieldName] = sprintf('%.12f', $value); | ||||
|                 } | ||||
|                 if (!is_float($value)) { | ||||
|                     $current[$fieldName] = (string)$value; | ||||
|                     $current[$fieldName] = (string) $value; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|   | ||||
| @@ -98,8 +98,8 @@ class StoreRequest extends FormRequest | ||||
|         $journalRepos->setUser($user); | ||||
| 
 | ||||
|         $data         = $validator->getData(); | ||||
|         $inwardId     = (int)($data['inward_id'] ?? 0); | ||||
|         $outwardId    = (int)($data['outward_id'] ?? 0); | ||||
|         $inwardId     = (int) ($data['inward_id'] ?? 0); | ||||
|         $outwardId    = (int) ($data['outward_id'] ?? 0); | ||||
|         $inward       = $journalRepos->find($inwardId); | ||||
|         $outward      = $journalRepos->find($outwardId); | ||||
| 
 | ||||
|   | ||||
| @@ -100,8 +100,8 @@ class UpdateRequest extends FormRequest | ||||
| 
 | ||||
|         $inwardId     = $data['inward_id'] ?? $existing->source_id; | ||||
|         $outwardId    = $data['outward_id'] ?? $existing->destination_id; | ||||
|         $inward       = $journalRepos->find((int)$inwardId); | ||||
|         $outward      = $journalRepos->find((int)$outwardId); | ||||
|         $inward       = $journalRepos->find((int) $inwardId); | ||||
|         $outward      = $journalRepos->find((int) $outwardId); | ||||
|         if (null === $inward) { | ||||
|             $inward = $existing->source; | ||||
|         } | ||||
|   | ||||
| @@ -55,9 +55,9 @@ class CreateRequest extends FormRequest | ||||
| 
 | ||||
|         // this is the way.
 | ||||
|         $return             = $this->getAllData($fields); | ||||
|         $return['trigger']  = $triggers[$return['trigger']] ?? (int)$return['trigger']; | ||||
|         $return['response'] = $responses[$return['response']] ?? (int)$return['response']; | ||||
|         $return['delivery'] = $deliveries[$return['delivery']] ?? (int)$return['delivery']; | ||||
|         $return['trigger']  = $triggers[$return['trigger']] ?? (int) $return['trigger']; | ||||
|         $return['response'] = $responses[$return['response']] ?? (int) $return['response']; | ||||
|         $return['delivery'] = $deliveries[$return['delivery']] ?? (int) $return['delivery']; | ||||
| 
 | ||||
|         return $return; | ||||
|     } | ||||
|   | ||||
| @@ -94,7 +94,7 @@ class UserUpdateRequest extends FormRequest | ||||
|                 $isAdmin = auth()->user()->hasRole('owner'); | ||||
|                 // not admin, and not own user?
 | ||||
|                 if (auth()->check() && false === $isAdmin && $current?->id !== auth()->user()->id) { | ||||
|                     $validator->errors()->add('email', (string)trans('validation.invalid_selection')); | ||||
|                     $validator->errors()->add('email', (string) trans('validation.invalid_selection')); | ||||
|                 } | ||||
|             } | ||||
|         ); | ||||
|   | ||||
| @@ -49,7 +49,7 @@ class PreferenceStoreRequest extends FormRequest | ||||
|             $array['data'] = false; | ||||
|         } | ||||
|         if (is_numeric($array['data'])) { | ||||
|             $array['data'] = (float)$array['data']; // intentional float.
 | ||||
|             $array['data'] = (float) $array['data']; // intentional float.
 | ||||
|         } | ||||
| 
 | ||||
|         return $array; | ||||
|   | ||||
| @@ -49,7 +49,7 @@ class PreferenceUpdateRequest extends FormRequest | ||||
|             $array['data'] = false; | ||||
|         } | ||||
|         if (is_numeric($array['data'])) { | ||||
|             $array['data'] = (float)$array['data']; // intentional float.
 | ||||
|             $array['data'] = (float) $array['data']; // intentional float.
 | ||||
|         } | ||||
| 
 | ||||
|         return $array; | ||||
|   | ||||
| @@ -40,9 +40,9 @@ use Illuminate\Support\Facades\Log; | ||||
|  */ | ||||
| class AccountController extends Controller | ||||
| { | ||||
|     private AccountRepositoryInterface $repository; | ||||
|     private TransactionCurrency        $default; | ||||
|     private ExchangeRateConverter      $converter; | ||||
|     private TransactionCurrency        $default; | ||||
|     private AccountRepositoryInterface $repository; | ||||
| 
 | ||||
|     /** | ||||
|      * AccountController constructor. | ||||
|   | ||||
| @@ -63,7 +63,7 @@ class CategoryController extends Controller | ||||
|         $filtered        = $result->map( | ||||
|             static function (Category $item) { | ||||
|                 return [ | ||||
|                     'id'    => (string)$item->id, | ||||
|                     'id'    => (string) $item->id, | ||||
|                     'title' => $item->name, | ||||
|                     'meta'  => [], | ||||
|                 ]; | ||||
|   | ||||
| @@ -45,9 +45,9 @@ class AccountController extends Controller | ||||
|     use CollectsAccountsFromFilter; | ||||
|     use ValidatesUserGroupTrait; | ||||
| 
 | ||||
|     private AccountRepositoryInterface $repository; | ||||
|     private ChartData                  $chartData; | ||||
|     private TransactionCurrency        $default; | ||||
|     private AccountRepositoryInterface $repository; | ||||
| 
 | ||||
|     public function __construct() | ||||
|     { | ||||
|   | ||||
| @@ -45,9 +45,10 @@ class BalanceController extends Controller | ||||
|     use CleansChartData; | ||||
|     use CollectsAccountsFromFilter; | ||||
| 
 | ||||
|     private AccountRepositoryInterface $repository; | ||||
|     private GroupCollectorInterface    $collector; | ||||
|     private ChartData                  $chartData; | ||||
|     private GroupCollectorInterface    $collector; | ||||
|     private AccountRepositoryInterface $repository; | ||||
| 
 | ||||
|     // private TransactionCurrency        $default;
 | ||||
| 
 | ||||
|     public function __construct() | ||||
|   | ||||
| @@ -54,9 +54,9 @@ class Controller extends BaseController | ||||
| { | ||||
|     use ValidatesUserGroupTrait; | ||||
| 
 | ||||
|     protected const string CONTENT_TYPE = 'application/vnd.api+json'; | ||||
|     protected const string CONTENT_TYPE   = 'application/vnd.api+json'; | ||||
|     protected array        $acceptedRoles = [UserRoleEnum::READ_ONLY]; | ||||
|     protected ParameterBag $parameters; | ||||
|     protected array $acceptedRoles      = [UserRoleEnum::READ_ONLY]; | ||||
| 
 | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -81,7 +81,7 @@ class Controller extends BaseController | ||||
|         $bag->set('limit', 50); | ||||
| 
 | ||||
|         try { | ||||
|             $page = (int)request()->get('page'); | ||||
|             $page = (int) request()->get('page'); | ||||
|         } catch (ContainerExceptionInterface|NotFoundExceptionInterface $e) { | ||||
|             $page = 1; | ||||
|         } | ||||
| @@ -92,8 +92,8 @@ class Controller extends BaseController | ||||
|         if ($page < 1) { | ||||
|             $page = 1; | ||||
|         } | ||||
|         if ($page > pow(2,16)) { | ||||
|             $page = pow(2,16); | ||||
|         if ($page > 2 ** 16) { | ||||
|             $page = 2 ** 16; | ||||
|         } | ||||
|         $bag->set('page', $page); | ||||
| 
 | ||||
| @@ -111,10 +111,10 @@ class Controller extends BaseController | ||||
|             } | ||||
|             if (null !== $date) { | ||||
|                 try { | ||||
|                     $obj = Carbon::parse((string)$date, config('app.timezone')); | ||||
|                     $obj = Carbon::parse((string) $date, config('app.timezone')); | ||||
|                 } catch (InvalidDateException|InvalidFormatException $e) { | ||||
|                     // don't care
 | ||||
|                     app('log')->warning(sprintf('Ignored invalid date "%s" in API v2 controller parameter check: %s', substr((string)$date, 0, 20), $e->getMessage())); | ||||
|                     app('log')->warning(sprintf('Ignored invalid date "%s" in API v2 controller parameter check: %s', substr((string) $date, 0, 20), $e->getMessage())); | ||||
|                 } | ||||
|                 // out of range? set to null.
 | ||||
|                 if (null !== $obj && ($obj->year <= 1900 || $obj->year > 2099)) { | ||||
| @@ -138,11 +138,11 @@ class Controller extends BaseController | ||||
|                 $value = null; | ||||
|             } | ||||
|             if (null !== $value) { | ||||
|                 $bag->set($integer, (int)$value); | ||||
|                 $bag->set($integer, (int) $value); | ||||
|             } | ||||
|             if (null === $value && 'limit' === $integer && auth()->check()) { | ||||
|                 // set default for user:
 | ||||
|                 $pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data; | ||||
|                 $pageSize = (int) app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data; | ||||
|                 $bag->set($integer, $pageSize); | ||||
|             } | ||||
|         } | ||||
|   | ||||
| @@ -48,6 +48,7 @@ class AccountController extends Controller | ||||
|     use Actions\DetachRelationship; | ||||
| 
 | ||||
|     use Actions\FetchMany; | ||||
| 
 | ||||
|     // use Actions\FetchOne;
 | ||||
|     use Actions\FetchRelated; | ||||
|     use Actions\FetchRelationship; | ||||
|   | ||||
| @@ -36,9 +36,8 @@ use Illuminate\Support\Facades\Log; | ||||
| class IndexController extends Controller | ||||
| { | ||||
|     public const string RESOURCE_KEY                  = 'accounts'; | ||||
| 
 | ||||
|     private AccountRepositoryInterface $repository; | ||||
|     protected array                    $acceptedRoles = [UserRoleEnum::READ_ONLY, UserRoleEnum::MANAGE_TRANSACTIONS]; | ||||
|     private AccountRepositoryInterface $repository; | ||||
| 
 | ||||
|     /** | ||||
|      * AccountController constructor. | ||||
|   | ||||
| @@ -39,9 +39,8 @@ use Illuminate\Http\JsonResponse; | ||||
| class ShowController extends Controller | ||||
| { | ||||
|     public const string RESOURCE_KEY                  = 'accounts'; | ||||
| 
 | ||||
|     private AccountRepositoryInterface $repository; | ||||
|     protected array                    $acceptedRoles = [UserRoleEnum::READ_ONLY, UserRoleEnum::MANAGE_TRANSACTIONS]; | ||||
|     private AccountRepositoryInterface $repository; | ||||
| 
 | ||||
|     /** | ||||
|      * AccountController constructor. | ||||
|   | ||||
| @@ -36,6 +36,7 @@ use Illuminate\Pagination\LengthAwarePaginator; | ||||
| class IndexController extends Controller | ||||
| { | ||||
|     use ValidatesUserGroupTrait; | ||||
| 
 | ||||
|     public const string RESOURCE_KEY = 'exchange-rates'; | ||||
| 
 | ||||
|     private ExchangeRateRepositoryInterface $repository; | ||||
|   | ||||
| @@ -38,6 +38,7 @@ use Illuminate\Pagination\LengthAwarePaginator; | ||||
| class ShowController extends Controller | ||||
| { | ||||
|     use ValidatesUserGroupTrait; | ||||
| 
 | ||||
|     public const string RESOURCE_KEY = 'exchange-rates'; | ||||
| 
 | ||||
|     private ExchangeRateRepositoryInterface $repository; | ||||
| @@ -57,12 +58,12 @@ class ShowController extends Controller | ||||
| 
 | ||||
|     public function show(TransactionCurrency $from, TransactionCurrency $to): JsonResponse | ||||
|     { | ||||
|         $pageSize  = $this->parameters->get('limit'); | ||||
|         $page      = $this->parameters->get('page'); | ||||
|         $rates     = $this->repository->getRates($from, $to); | ||||
|         $count     = $rates->count(); | ||||
|         $rates     = $rates->slice(($page - 1) * $pageSize, $pageSize); | ||||
|         $paginator = new LengthAwarePaginator($rates, $count, $pageSize, $page); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
|         $page        = $this->parameters->get('page'); | ||||
|         $rates       = $this->repository->getRates($from, $to); | ||||
|         $count       = $rates->count(); | ||||
|         $rates       = $rates->slice(($page - 1) * $pageSize, $pageSize); | ||||
|         $paginator   = new LengthAwarePaginator($rates, $count, $pageSize, $page); | ||||
| 
 | ||||
|         $transformer = new ExchangeRateTransformer(); | ||||
|         $transformer->setParameters($this->parameters); // give params to transformer
 | ||||
|   | ||||
| @@ -35,9 +35,8 @@ use Illuminate\Pagination\LengthAwarePaginator; | ||||
| class IndexController extends Controller | ||||
| { | ||||
|     public const string RESOURCE_KEY                   = 'transaction-currencies'; | ||||
| 
 | ||||
|     private CurrencyRepositoryInterface $repository; | ||||
|     protected array                     $acceptedRoles = [UserRoleEnum::READ_ONLY]; | ||||
|     private CurrencyRepositoryInterface $repository; | ||||
| 
 | ||||
|     public function __construct() | ||||
|     { | ||||
|   | ||||
| @@ -179,7 +179,7 @@ class BasicController extends Controller | ||||
|             $return[]     = [ | ||||
|                 'key'                     => sprintf('bills-paid-in-%s', $info['currency_code']), | ||||
|                 'value'                   => $amount, | ||||
|                 'currency_id'             => (string)$info['currency_id'], | ||||
|                 'currency_id'             => (string) $info['currency_id'], | ||||
|                 'currency_code'           => $info['currency_code'], | ||||
|                 'currency_symbol'         => $info['currency_symbol'], | ||||
|                 'currency_decimal_places' => $info['currency_decimal_places'], | ||||
| @@ -187,7 +187,7 @@ class BasicController extends Controller | ||||
|             $return[]     = [ | ||||
|                 'key'                     => 'bills-paid-in-native', | ||||
|                 'value'                   => $nativeAmount, | ||||
|                 'currency_id'             => (string)$info['native_currency_id'], | ||||
|                 'currency_id'             => (string) $info['native_currency_id'], | ||||
|                 'currency_code'           => $info['native_currency_code'], | ||||
|                 'currency_symbol'         => $info['native_currency_symbol'], | ||||
|                 'currency_decimal_places' => $info['native_currency_decimal_places'], | ||||
| @@ -203,7 +203,7 @@ class BasicController extends Controller | ||||
|             $return[]     = [ | ||||
|                 'key'                     => sprintf('bills-unpaid-in-%s', $info['currency_code']), | ||||
|                 'value'                   => $amount, | ||||
|                 'currency_id'             => (string)$info['currency_id'], | ||||
|                 'currency_id'             => (string) $info['currency_id'], | ||||
|                 'currency_code'           => $info['currency_code'], | ||||
|                 'currency_symbol'         => $info['currency_symbol'], | ||||
|                 'currency_decimal_places' => $info['currency_decimal_places'], | ||||
| @@ -211,7 +211,7 @@ class BasicController extends Controller | ||||
|             $return[]     = [ | ||||
|                 'key'                     => 'bills-unpaid-in-native', | ||||
|                 'value'                   => $nativeAmount, | ||||
|                 'currency_id'             => (string)$info['native_currency_id'], | ||||
|                 'currency_id'             => (string) $info['native_currency_id'], | ||||
|                 'currency_code'           => $info['native_currency_code'], | ||||
|                 'currency_symbol'         => $info['native_currency_symbol'], | ||||
|                 'currency_decimal_places' => $info['native_currency_decimal_places'], | ||||
| @@ -241,7 +241,7 @@ class BasicController extends Controller | ||||
|         $nativeLeft   = [ | ||||
|             'key'                     => 'left-to-spend-in-native', | ||||
|             'value'                   => '0', | ||||
|             'currency_id'             => (string)$default->id, | ||||
|             'currency_id'             => (string) $default->id, | ||||
|             'currency_code'           => $default->code, | ||||
|             'currency_symbol'         => $default->symbol, | ||||
|             'currency_decimal_places' => $default->decimal_places, | ||||
| @@ -249,7 +249,7 @@ class BasicController extends Controller | ||||
|         $nativePerDay = [ | ||||
|             'key'                     => 'left-per-day-to-spend-in-native', | ||||
|             'value'                   => '0', | ||||
|             'currency_id'             => (string)$default->id, | ||||
|             'currency_id'             => (string) $default->id, | ||||
|             'currency_code'           => $default->code, | ||||
|             'currency_symbol'         => $default->symbol, | ||||
|             'currency_decimal_places' => $default->decimal_places, | ||||
| @@ -276,7 +276,7 @@ class BasicController extends Controller | ||||
|                     $currencies[$currencyId] = $currency; | ||||
|                     $amount                  = app('steam')->negative($journal['amount']); | ||||
|                     $amountNative            = $converter->convert($default, $currency, $start, $amount); | ||||
|                     if ((int)$journal['foreign_currency_id'] === $default->id) { | ||||
|                     if ((int) $journal['foreign_currency_id'] === $default->id) { | ||||
|                         $amountNative = $journal['foreign_amount']; | ||||
|                     } | ||||
|                     $spent                   = bcadd($spent, $amount); | ||||
| @@ -296,24 +296,24 @@ class BasicController extends Controller | ||||
|             app('log')->debug(sprintf('Amount left is %s', $left)); | ||||
| 
 | ||||
|             // how much left per day?
 | ||||
|             $days                    = (int)$today->diffInDays($end, true) + 1; | ||||
|             $days                    = (int) $today->diffInDays($end, true) + 1; | ||||
|             $perDay                  = '0'; | ||||
|             $perDayNative            = '0'; | ||||
|             if (0 !== $days && bccomp($left, '0') > -1) { | ||||
|                 $perDay = bcdiv($left, (string)$days); | ||||
|                 $perDay = bcdiv($left, (string) $days); | ||||
|             } | ||||
|             if (0 !== $days && bccomp($leftNative, '0') > -1) { | ||||
|                 $perDayNative = bcdiv($leftNative, (string)$days); | ||||
|                 $perDayNative = bcdiv($leftNative, (string) $days); | ||||
|             } | ||||
| 
 | ||||
|             // left
 | ||||
|             $return[]                = [ | ||||
|                 'key'                     => sprintf('left-to-spend-in-%s', $row['currency_code']), | ||||
|                 'value'                   => $left, | ||||
|                 'currency_id'             => (string)$row['currency_id'], | ||||
|                 'currency_id'             => (string) $row['currency_id'], | ||||
|                 'currency_code'           => $row['currency_code'], | ||||
|                 'currency_symbol'         => $row['currency_symbol'], | ||||
|                 'currency_decimal_places' => (int)$row['currency_decimal_places'], | ||||
|                 'currency_decimal_places' => (int) $row['currency_decimal_places'], | ||||
|             ]; | ||||
|             // left (native)
 | ||||
|             $nativeLeft['value']     = $leftNative; | ||||
| @@ -322,10 +322,10 @@ class BasicController extends Controller | ||||
|             $return[]                = [ | ||||
|                 'key'                     => sprintf('left-per-day-to-spend-in-%s', $row['currency_code']), | ||||
|                 'value'                   => $perDay, | ||||
|                 'currency_id'             => (string)$row['currency_id'], | ||||
|                 'currency_id'             => (string) $row['currency_id'], | ||||
|                 'currency_code'           => $row['currency_code'], | ||||
|                 'currency_symbol'         => $row['currency_symbol'], | ||||
|                 'currency_decimal_places' => (int)$row['currency_decimal_places'], | ||||
|                 'currency_decimal_places' => (int) $row['currency_decimal_places'], | ||||
|             ]; | ||||
| 
 | ||||
|             // left per day (native)
 | ||||
| @@ -371,7 +371,7 @@ class BasicController extends Controller | ||||
|         $return[]       = [ | ||||
|             'key'                     => 'net-worth-in-native', | ||||
|             'value'                   => $netWorthSet['native']['balance'], | ||||
|             'currency_id'             => (string)$netWorthSet['native']['currency_id'], | ||||
|             'currency_id'             => (string) $netWorthSet['native']['currency_id'], | ||||
|             'currency_code'           => $netWorthSet['native']['currency_code'], | ||||
|             'currency_symbol'         => $netWorthSet['native']['currency_symbol'], | ||||
|             'currency_decimal_places' => $netWorthSet['native']['currency_decimal_places'], | ||||
| @@ -383,7 +383,7 @@ class BasicController extends Controller | ||||
|             $return[] = [ | ||||
|                 'key'                     => sprintf('net-worth-in-%s', $data['currency_code']), | ||||
|                 'value'                   => $data['balance'], | ||||
|                 'currency_id'             => (string)$data['currency_id'], | ||||
|                 'currency_id'             => (string) $data['currency_id'], | ||||
|                 'currency_code'           => $data['currency_code'], | ||||
|                 'currency_symbol'         => $data['currency_symbol'], | ||||
|                 'currency_decimal_places' => $data['currency_decimal_places'], | ||||
|   | ||||
| @@ -73,6 +73,16 @@ class AutocompleteRequest extends FormRequest | ||||
|         return $array; | ||||
|     } | ||||
| 
 | ||||
|     private function getAccountTypeParameter(array $types): array | ||||
|     { | ||||
|         $return = []; | ||||
|         foreach ($types as $type) { | ||||
|             $return = array_merge($return, $this->mapAccountTypes($type)); | ||||
|         } | ||||
| 
 | ||||
|         return array_unique($return); | ||||
|     } | ||||
| 
 | ||||
|     public function rules(): array | ||||
|     { | ||||
|         $valid = array_keys($this->types); | ||||
| @@ -86,14 +96,4 @@ class AutocompleteRequest extends FormRequest | ||||
|             'transaction_types' => 'nullable|in:todo', | ||||
|         ]; | ||||
|     } | ||||
| 
 | ||||
|     private function getAccountTypeParameter(array $types): array | ||||
|     { | ||||
|         $return = []; | ||||
|         foreach ($types as $type) { | ||||
|             $return = array_merge($return, $this->mapAccountTypes($type)); | ||||
|         } | ||||
| 
 | ||||
|         return array_unique($return); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -40,7 +40,8 @@ class BalanceChartRequest extends FormRequest | ||||
|     use ChecksLogin; | ||||
|     use ConvertsDataTypes; | ||||
|     use ValidatesUserGroupTrait; | ||||
|     protected array                    $acceptedRoles = [UserRoleEnum::READ_ONLY]; | ||||
| 
 | ||||
|     protected array $acceptedRoles = [UserRoleEnum::READ_ONLY]; | ||||
| 
 | ||||
|     /** | ||||
|      * Get all data from the request. | ||||
|   | ||||
| @@ -87,7 +87,7 @@ class InfiniteListRequest extends FormRequest | ||||
| 
 | ||||
|     public function getAccountTypes(): array | ||||
|     { | ||||
|         $type = (string)$this->get('type', 'default'); | ||||
|         $type = (string) $this->get('type', 'default'); | ||||
| 
 | ||||
|         return $this->mapAccountTypes($type); | ||||
|     } | ||||
| @@ -101,7 +101,7 @@ class InfiniteListRequest extends FormRequest | ||||
| 
 | ||||
|     public function getTransactionTypes(): array | ||||
|     { | ||||
|         $type = (string)$this->get('type', 'default'); | ||||
|         $type = (string) $this->get('type', 'default'); | ||||
| 
 | ||||
|         return $this->mapTransactionTypes($type); | ||||
|     } | ||||
|   | ||||
| @@ -76,7 +76,7 @@ class ListRequest extends FormRequest | ||||
| 
 | ||||
|     public function getTransactionTypes(): array | ||||
|     { | ||||
|         $type = (string)$this->get('type', 'default'); | ||||
|         $type = (string) $this->get('type', 'default'); | ||||
| 
 | ||||
|         return $this->mapTransactionTypes($type); | ||||
|     } | ||||
|   | ||||
| @@ -94,73 +94,73 @@ class StoreRequest extends FormRequest | ||||
|             $result   = [ | ||||
|                 'type'                  => $this->clearString($object['type']), | ||||
|                 'date'                  => $this->dateFromValue($object['date']), | ||||
|                 'order'                 => $this->integerFromValue((string)$object['order']), | ||||
|                 'order'                 => $this->integerFromValue((string) $object['order']), | ||||
| 
 | ||||
|                 'currency_id'           => $this->integerFromValue((string)$object['currency_id']), | ||||
|                 'currency_code'         => $this->clearString((string)$object['currency_code']), | ||||
|                 'currency_id'           => $this->integerFromValue((string) $object['currency_id']), | ||||
|                 'currency_code'         => $this->clearString((string) $object['currency_code']), | ||||
| 
 | ||||
|                 // foreign currency info:
 | ||||
|                 'foreign_currency_id'   => $this->integerFromValue((string)$object['foreign_currency_id']), | ||||
|                 'foreign_currency_code' => $this->clearString((string)$object['foreign_currency_code']), | ||||
|                 'foreign_currency_id'   => $this->integerFromValue((string) $object['foreign_currency_id']), | ||||
|                 'foreign_currency_code' => $this->clearString((string) $object['foreign_currency_code']), | ||||
| 
 | ||||
|                 // amount and foreign amount. Cannot be 0.
 | ||||
|                 'amount'                => $this->clearString((string)$object['amount']), | ||||
|                 'foreign_amount'        => $this->clearString((string)$object['foreign_amount']), | ||||
|                 'amount'                => $this->clearString((string) $object['amount']), | ||||
|                 'foreign_amount'        => $this->clearString((string) $object['foreign_amount']), | ||||
| 
 | ||||
|                 // description.
 | ||||
|                 'description'           => $this->clearString($object['description']), | ||||
| 
 | ||||
|                 // source of transaction. If everything is null, assume cash account.
 | ||||
|                 'source_id'             => $this->integerFromValue((string)$object['source_id']), | ||||
|                 'source_name'           => $this->clearString((string)$object['source_name']), | ||||
|                 'source_iban'           => $this->clearString((string)$object['source_iban']), | ||||
|                 'source_number'         => $this->clearString((string)$object['source_number']), | ||||
|                 'source_bic'            => $this->clearString((string)$object['source_bic']), | ||||
|                 'source_id'             => $this->integerFromValue((string) $object['source_id']), | ||||
|                 'source_name'           => $this->clearString((string) $object['source_name']), | ||||
|                 'source_iban'           => $this->clearString((string) $object['source_iban']), | ||||
|                 'source_number'         => $this->clearString((string) $object['source_number']), | ||||
|                 'source_bic'            => $this->clearString((string) $object['source_bic']), | ||||
| 
 | ||||
|                 // destination of transaction. If everything is null, assume cash account.
 | ||||
|                 'destination_id'        => $this->integerFromValue((string)$object['destination_id']), | ||||
|                 'destination_name'      => $this->clearString((string)$object['destination_name']), | ||||
|                 'destination_iban'      => $this->clearString((string)$object['destination_iban']), | ||||
|                 'destination_number'    => $this->clearString((string)$object['destination_number']), | ||||
|                 'destination_bic'       => $this->clearString((string)$object['destination_bic']), | ||||
|                 'destination_id'        => $this->integerFromValue((string) $object['destination_id']), | ||||
|                 'destination_name'      => $this->clearString((string) $object['destination_name']), | ||||
|                 'destination_iban'      => $this->clearString((string) $object['destination_iban']), | ||||
|                 'destination_number'    => $this->clearString((string) $object['destination_number']), | ||||
|                 'destination_bic'       => $this->clearString((string) $object['destination_bic']), | ||||
| 
 | ||||
|                 // budget info
 | ||||
|                 'budget_id'             => $this->integerFromValue((string)$object['budget_id']), | ||||
|                 'budget_name'           => $this->clearString((string)$object['budget_name']), | ||||
|                 'budget_id'             => $this->integerFromValue((string) $object['budget_id']), | ||||
|                 'budget_name'           => $this->clearString((string) $object['budget_name']), | ||||
| 
 | ||||
|                 // category info
 | ||||
|                 'category_id'           => $this->integerFromValue((string)$object['category_id']), | ||||
|                 'category_name'         => $this->clearString((string)$object['category_name']), | ||||
|                 'category_id'           => $this->integerFromValue((string) $object['category_id']), | ||||
|                 'category_name'         => $this->clearString((string) $object['category_name']), | ||||
| 
 | ||||
|                 // journal bill reference. Optional. Will only work for withdrawals
 | ||||
|                 'bill_id'               => $this->integerFromValue((string)$object['bill_id']), | ||||
|                 'bill_name'             => $this->clearString((string)$object['bill_name']), | ||||
|                 'bill_id'               => $this->integerFromValue((string) $object['bill_id']), | ||||
|                 'bill_name'             => $this->clearString((string) $object['bill_name']), | ||||
| 
 | ||||
|                 // piggy bank reference. Optional. Will only work for transfers
 | ||||
|                 'piggy_bank_id'         => $this->integerFromValue((string)$object['piggy_bank_id']), | ||||
|                 'piggy_bank_name'       => $this->clearString((string)$object['piggy_bank_name']), | ||||
|                 'piggy_bank_id'         => $this->integerFromValue((string) $object['piggy_bank_id']), | ||||
|                 'piggy_bank_name'       => $this->clearString((string) $object['piggy_bank_name']), | ||||
| 
 | ||||
|                 // some other interesting properties
 | ||||
|                 'reconciled'            => $this->convertBoolean((string)$object['reconciled']), | ||||
|                 'notes'                 => $this->clearStringKeepNewlines((string)$object['notes']), | ||||
|                 'reconciled'            => $this->convertBoolean((string) $object['reconciled']), | ||||
|                 'notes'                 => $this->clearStringKeepNewlines((string) $object['notes']), | ||||
|                 'tags'                  => $this->arrayFromValue($object['tags']), | ||||
| 
 | ||||
|                 // all custom fields:
 | ||||
|                 'internal_reference'    => $this->clearString((string)$object['internal_reference']), | ||||
|                 'external_id'           => $this->clearString((string)$object['external_id']), | ||||
|                 'internal_reference'    => $this->clearString((string) $object['internal_reference']), | ||||
|                 'external_id'           => $this->clearString((string) $object['external_id']), | ||||
|                 'original_source'       => sprintf('ff3-v%s', config('firefly.version')), | ||||
|                 'recurrence_id'         => $this->integerFromValue($object['recurrence_id']), | ||||
|                 'bunq_payment_id'       => $this->clearString((string)$object['bunq_payment_id']), | ||||
|                 'external_url'          => $this->clearString((string)$object['external_url']), | ||||
|                 'bunq_payment_id'       => $this->clearString((string) $object['bunq_payment_id']), | ||||
|                 'external_url'          => $this->clearString((string) $object['external_url']), | ||||
| 
 | ||||
|                 'sepa_cc'               => $this->clearString((string)$object['sepa_cc']), | ||||
|                 'sepa_ct_op'            => $this->clearString((string)$object['sepa_ct_op']), | ||||
|                 'sepa_ct_id'            => $this->clearString((string)$object['sepa_ct_id']), | ||||
|                 'sepa_db'               => $this->clearString((string)$object['sepa_db']), | ||||
|                 'sepa_country'          => $this->clearString((string)$object['sepa_country']), | ||||
|                 'sepa_ep'               => $this->clearString((string)$object['sepa_ep']), | ||||
|                 'sepa_ci'               => $this->clearString((string)$object['sepa_ci']), | ||||
|                 'sepa_batch_id'         => $this->clearString((string)$object['sepa_batch_id']), | ||||
|                 'sepa_cc'               => $this->clearString((string) $object['sepa_cc']), | ||||
|                 'sepa_ct_op'            => $this->clearString((string) $object['sepa_ct_op']), | ||||
|                 'sepa_ct_id'            => $this->clearString((string) $object['sepa_ct_id']), | ||||
|                 'sepa_db'               => $this->clearString((string) $object['sepa_db']), | ||||
|                 'sepa_country'          => $this->clearString((string) $object['sepa_country']), | ||||
|                 'sepa_ep'               => $this->clearString((string) $object['sepa_ep']), | ||||
|                 'sepa_ci'               => $this->clearString((string) $object['sepa_ci']), | ||||
|                 'sepa_batch_id'         => $this->clearString((string) $object['sepa_batch_id']), | ||||
|                 // custom date fields. Must be Carbon objects. Presence is optional.
 | ||||
|                 'interest_date'         => $this->dateFromValue($object['interest_date']), | ||||
|                 'book_date'             => $this->dateFromValue($object['book_date']), | ||||
|   | ||||
| @@ -139,7 +139,7 @@ class UpdateRequest extends Request | ||||
|     { | ||||
|         foreach ($this->integerFields as $fieldName) { | ||||
|             if (array_key_exists($fieldName, $transaction)) { | ||||
|                 $current[$fieldName] = $this->integerFromValue((string)$transaction[$fieldName]); | ||||
|                 $current[$fieldName] = $this->integerFromValue((string) $transaction[$fieldName]); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| @@ -154,7 +154,7 @@ class UpdateRequest extends Request | ||||
|     { | ||||
|         foreach ($this->stringFields as $fieldName) { | ||||
|             if (array_key_exists($fieldName, $transaction)) { | ||||
|                 $current[$fieldName] = $this->clearString((string)$transaction[$fieldName]); | ||||
|                 $current[$fieldName] = $this->clearString((string) $transaction[$fieldName]); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| @@ -169,7 +169,7 @@ class UpdateRequest extends Request | ||||
|     { | ||||
|         foreach ($this->textareaFields as $fieldName) { | ||||
|             if (array_key_exists($fieldName, $transaction)) { | ||||
|                 $current[$fieldName] = $this->clearStringKeepNewlines((string)$transaction[$fieldName]); // keep newlines
 | ||||
|                 $current[$fieldName] = $this->clearStringKeepNewlines((string) $transaction[$fieldName]); // keep newlines
 | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| @@ -185,8 +185,8 @@ class UpdateRequest extends Request | ||||
|         foreach ($this->dateFields as $fieldName) { | ||||
|             app('log')->debug(sprintf('Now at date field %s', $fieldName)); | ||||
|             if (array_key_exists($fieldName, $transaction)) { | ||||
|                 app('log')->debug(sprintf('New value: "%s"', (string)$transaction[$fieldName])); | ||||
|                 $current[$fieldName] = $this->dateFromValue((string)$transaction[$fieldName]); | ||||
|                 app('log')->debug(sprintf('New value: "%s"', (string) $transaction[$fieldName])); | ||||
|                 $current[$fieldName] = $this->dateFromValue((string) $transaction[$fieldName]); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| @@ -201,7 +201,7 @@ class UpdateRequest extends Request | ||||
|     { | ||||
|         foreach ($this->booleanFields as $fieldName) { | ||||
|             if (array_key_exists($fieldName, $transaction)) { | ||||
|                 $current[$fieldName] = $this->convertBoolean((string)$transaction[$fieldName]); | ||||
|                 $current[$fieldName] = $this->convertBoolean((string) $transaction[$fieldName]); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| @@ -236,7 +236,7 @@ class UpdateRequest extends Request | ||||
|                     $current[$fieldName] = sprintf('%.12f', $value); | ||||
|                 } | ||||
|                 if (!is_float($value)) { | ||||
|                     $current[$fieldName] = (string)$value; | ||||
|                     $current[$fieldName] = (string) $value; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|   | ||||
| @@ -52,7 +52,7 @@ class AutoSum | ||||
|             $amount                       = $getSum($object); | ||||
| 
 | ||||
|             $return[$currency->id] ??= [ | ||||
|                 'id'             => (string)$currency->id, | ||||
|                 'id'             => (string) $currency->id, | ||||
|                 'name'           => $currency->name, | ||||
|                 'symbol'         => $currency->symbol, | ||||
|                 'code'           => $currency->code, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user