Simplify transformer.

This commit is contained in:
James Cole
2020-10-18 17:44:30 +02:00
parent 3cd331062d
commit 198c79c048

View File

@@ -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();
}
}