mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-05 04:03:26 +00:00
Simplify transformer.
This commit is contained in:
@@ -42,12 +42,9 @@ use Log;
|
||||
*/
|
||||
class TransactionGroupTransformer extends AbstractTransformer
|
||||
{
|
||||
/** @var TransactionGroupRepositoryInterface */
|
||||
private $groupRepos;
|
||||
/** @var array Array with meta date fields. */
|
||||
private $metaDateFields;
|
||||
/** @var array Array with meta fields. */
|
||||
private $metaFields;
|
||||
private TransactionGroupRepositoryInterface $groupRepos;
|
||||
private array $metaDateFields;
|
||||
private array $metaFields;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
@@ -437,10 +434,21 @@ class TransactionGroupTransformer extends AbstractTransformer
|
||||
$result = [];
|
||||
$transactions = $data['transactions'] ?? [];
|
||||
foreach ($transactions as $transaction) {
|
||||
$result[] = $this->transformTransaction($transaction);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $transaction
|
||||
* @return array
|
||||
*/
|
||||
private function transformTransaction(array $transaction): array
|
||||
{
|
||||
$row = new NullArrayObject($transaction);
|
||||
|
||||
// amount:
|
||||
$type = $row['transaction_type_type'] ?? TransactionType::WITHDRAWAL;
|
||||
$type = $this->stringFromArray($transaction, 'transaction_type_type', TransactionType::WITHDRAWAL);
|
||||
$amount = app('steam')->positive($row['amount'] ?? '0');
|
||||
$foreignAmount = null;
|
||||
if (null !== $row['foreign_amount']) {
|
||||
@@ -463,7 +471,7 @@ class TransactionGroupTransformer extends AbstractTransformer
|
||||
'currency_symbol' => $row['currency_symbol'],
|
||||
'currency_decimal_places' => (int) $row['currency_decimal_places'],
|
||||
|
||||
'foreign_currency_id' => $row['foreign_currency_id'] ? (int) $row['foreign_currency_id'] : null,
|
||||
'foreign_currency_id' => $this->integerFromArray($transaction, 'foreign_currency_id'),
|
||||
'foreign_currency_code' => $row['foreign_currency_code'],
|
||||
'foreign_currency_symbol' => $row['foreign_currency_symbol'],
|
||||
'foreign_currency_decimal_places' => $row['foreign_currency_decimal_places'],
|
||||
@@ -483,13 +491,13 @@ class TransactionGroupTransformer extends AbstractTransformer
|
||||
'destination_iban' => $row['destination_account_iban'],
|
||||
'destination_type' => $row['destination_account_type'],
|
||||
|
||||
'budget_id' => $row['budget_id'] ? (int) $row['budget_id'] : null,
|
||||
'budget_id' => $this->integerFromArray($transaction, 'budget_id'),
|
||||
'budget_name' => $row['budget_name'],
|
||||
|
||||
'category_id' => $row['category_id'] ? (int) $row['category_id'] : null,
|
||||
'category_id' => $this->integerFromArray($transaction, 'category_id'),
|
||||
'category_name' => $row['category_name'],
|
||||
|
||||
'bill_id' => $row['bill_id'] ? (int) $row['bill_id'] : null,
|
||||
'bill_id' => $this->integerFromArray($transaction, 'bill_id'),
|
||||
'bill_name' => $row['bill_name'],
|
||||
|
||||
'reconciled' => $row['reconciled'],
|
||||
@@ -499,9 +507,9 @@ class TransactionGroupTransformer extends AbstractTransformer
|
||||
'internal_reference' => $metaFieldData['internal_reference'],
|
||||
'external_id' => $metaFieldData['external_id'],
|
||||
'original_source' => $metaFieldData['original_source'],
|
||||
'recurrence_id' => null !== $metaFieldData['recurrence_id'] ? (int) $metaFieldData['recurrence_id'] : null,
|
||||
'recurrence_total' => null !== $metaFieldData['recurrence_total'] ? (int) $metaFieldData['recurrence_total'] : null,
|
||||
'recurrence_count' => null !== $metaFieldData['recurrence_count'] ? (int) $metaFieldData['recurrence_count'] : null,
|
||||
'recurrence_id' => $this->integerFromArray($metaFieldData->getArrayCopy(), 'recurrence_id'),
|
||||
'recurrence_total' => $this->integerFromArray($metaFieldData->getArrayCopy(), 'recurrence_total'),
|
||||
'recurrence_count' => $this->integerFromArray($metaFieldData->getArrayCopy(), 'recurrence_count'),
|
||||
'bunq_payment_id' => $metaFieldData['bunq_payment_id'],
|
||||
'external_uri' => $metaFieldData['external_uri'],
|
||||
'import_hash_v2' => $metaFieldData['import_hash_v2'],
|
||||
@@ -515,14 +523,57 @@ class TransactionGroupTransformer extends AbstractTransformer
|
||||
'sepa_ci' => $metaFieldData['sepa_ci'],
|
||||
'sepa_batch_id' => $metaFieldData['sepa_batch_id'],
|
||||
|
||||
'interest_date' => $metaDateData['interest_date'] ? $metaDateData['interest_date']->toAtomString() : null,
|
||||
'book_date' => $metaDateData['book_date'] ? $metaDateData['book_date']->toAtomString() : null,
|
||||
'process_date' => $metaDateData['process_date'] ? $metaDateData['process_date']->toAtomString() : null,
|
||||
'due_date' => $metaDateData['due_date'] ? $metaDateData['due_date']->toAtomString() : null,
|
||||
'payment_date' => $metaDateData['payment_date'] ? $metaDateData['payment_date']->toAtomString() : null,
|
||||
'invoice_date' => $metaDateData['invoice_date'] ? $metaDateData['invoice_date']->toAtomString() : null,
|
||||
'interest_date' => $this->dateFromArray($metaDateData, 'interest_date'),
|
||||
'book_date' => $this->dateFromArray($metaDateData, 'book_date'),
|
||||
'process_date' => $this->dateFromArray($metaDateData, 'process_date'),
|
||||
'due_date' => $this->dateFromArray($metaDateData, 'due_date'),
|
||||
'payment_date' => $this->dateFromArray($metaDateData, 'payment_date'),
|
||||
'invoice_date' => $this->dateFromArray($metaDateData, 'invoice_date'),
|
||||
];
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $array
|
||||
* @param string $key
|
||||
* @param string|null $default
|
||||
* @return string|null
|
||||
*/
|
||||
private function stringFromArray(array $array, string $key, ?string $default): ?string
|
||||
{
|
||||
if (array_key_exists($key, $array)) {
|
||||
return $array[$key];
|
||||
}
|
||||
if (null !== $default) {
|
||||
return $default;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $array
|
||||
* @param string $key
|
||||
* @return int|null
|
||||
*/
|
||||
private function integerFromArray(array $array, string $key): ?int
|
||||
{
|
||||
if (array_key_exists($key, $array)) {
|
||||
return (int) $array[$key];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param NullArrayObject $object
|
||||
* @param string $key
|
||||
* @return string|null
|
||||
*/
|
||||
private function dateFromArray(NullArrayObject $object, string $key): ?string
|
||||
{
|
||||
if (null === $object[$key]) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $object['interest_date']->toAtomString();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user