diff --git a/app/Helpers/Bank/Nordigen/Transformer/TransactionTransformer.php b/app/Helpers/Bank/Nordigen/Transformer/TransactionTransformer.php index 4e5a8e3be887..1e43fbd3b724 100644 --- a/app/Helpers/Bank/Nordigen/Transformer/TransactionTransformer.php +++ b/app/Helpers/Bank/Nordigen/Transformer/TransactionTransformer.php @@ -64,85 +64,85 @@ use Log; class TransactionTransformer implements BankRevenueInterface { - use AppSetup; + use AppSetup; - public function transform($transactionResponse) - { - $data = []; + public function transform($transactionResponse) + { + $data = []; - if (!array_key_exists('transactions', $transactionResponse) || !array_key_exists('booked', $transactionResponse["transactions"])) - throw new \Exception('invalid dataset'); + if (!array_key_exists('transactions', $transactionResponse) || !array_key_exists('booked', $transactionResponse["transactions"])) + throw new \Exception('invalid dataset'); - foreach ($transactionResponse["transactions"]["booked"] as $transaction) { - $data[] = $this->transformTransaction($transaction); - } - - return $data; + foreach ($transactionResponse["transactions"]["booked"] as $transaction) { + $data[] = $this->transformTransaction($transaction); } - public function transformTransaction($transaction) - { + return $data; + } - if (!array_key_exists('transactionId', $transaction) || !array_key_exists('transactionAmount', $transaction)) - throw new \Exception('invalid dataset'); + public function transformTransaction($transaction) + { - // description could be in varios places - $description = ''; - if (array_key_exists('remittanceInformationStructured', $transaction)) - $description = $transaction["remittanceInformationStructured"]; - else if (array_key_exists('remittanceInformationStructuredArray', $transaction)) - $description = implode('\n', $transaction["remittanceInformationStructuredArray"]); - else if (array_key_exists('remittanceInformationUnstructured', $transaction)) - $description = $transaction["remittanceInformationUnstructured"]; - else if (array_key_exists('remittanceInformationUnstructuredArray', $transaction)) - $description = implode('\n', $transaction["remittanceInformationUnstructuredArray"]); - else - Log::warning("Missing description for the following transaction: " . json_encode($transaction)); + if (!array_key_exists('transactionId', $transaction) || !array_key_exists('transactionAmount', $transaction)) + throw new \Exception('invalid dataset'); - // participant - $participant = array_key_exists('debtorAccount', $transaction) && array_key_exists('iban', $transaction["debtorAccount"]) ? - $transaction['debtorAccount']['iban'] : - (array_key_exists('creditorAccount', $transaction) && array_key_exists('iban', $transaction["creditorAccount"]) ? - $transaction['creditorAccount']['iban'] : null); - $participant_name = array_key_exists('debtorName', $transaction) ? - $transaction['debtorName'] : - (array_key_exists('creditorName', $transaction) ? - $transaction['creditorName'] : null); + // description could be in varios places + $description = ''; + if (array_key_exists('remittanceInformationStructured', $transaction)) + $description = $transaction["remittanceInformationStructured"]; + else if (array_key_exists('remittanceInformationStructuredArray', $transaction)) + $description = implode('\n', $transaction["remittanceInformationStructuredArray"]); + else if (array_key_exists('remittanceInformationUnstructured', $transaction)) + $description = $transaction["remittanceInformationUnstructured"]; + else if (array_key_exists('remittanceInformationUnstructuredArray', $transaction)) + $description = implode('\n', $transaction["remittanceInformationUnstructuredArray"]); + else + Log::warning("Missing description for the following transaction: " . json_encode($transaction)); - return [ - 'nordigen_transaction_id' => $transaction["transactionId"], - 'amount' => abs((int) $transaction["transactionAmount"]["amount"]), - 'currency_id' => $this->convertCurrency($transaction["transactionAmount"]["currency"]), - 'category_id' => null, - 'category_type' => array_key_exists('additionalInformation', $transaction) ? $transaction["additionalInformation"] : '', - 'date' => $transaction["bookingDate"], - 'description' => $description, - 'participant' => $participant, - 'participant_name' => $participant_name, - 'base_type' => (int) $transaction["transactionAmount"]["amount"] <= 0 ? 'DEBIT' : 'CREDIT', - ]; + // participant + $participant = array_key_exists('debtorAccount', $transaction) && array_key_exists('iban', $transaction["debtorAccount"]) ? + $transaction['debtorAccount']['iban'] : + (array_key_exists('creditorAccount', $transaction) && array_key_exists('iban', $transaction["creditorAccount"]) ? + $transaction['creditorAccount']['iban'] : null); + $participant_name = array_key_exists('debtorName', $transaction) ? + $transaction['debtorName'] : + (array_key_exists('creditorName', $transaction) ? + $transaction['creditorName'] : null); + return [ + 'transaction_id' => $transaction["transactionId"], + 'amount' => (float) $transaction["transactionAmount"]["amount"], + 'currency_id' => $this->convertCurrency($transaction["transactionAmount"]["currency"]), + 'category_id' => null, + 'category_type' => array_key_exists('additionalInformation', $transaction) ? $transaction["additionalInformation"] : '', + 'date' => $transaction["bookingDate"], + 'description' => $description, + 'participant' => $participant, + 'participant_name' => $participant_name, + 'base_type' => (int) $transaction["transactionAmount"]["amount"] <= 0 ? 'DEBIT' : 'CREDIT', + ]; + + } + + private function convertCurrency(string $code) + { + + $currencies = Cache::get('currencies'); + + if (!$currencies) { + $this->buildCache(true); } - private function convertCurrency(string $code) - { + $currency = $currencies->filter(function ($item) use ($code) { + return $item->code == $code; + })->first(); - $currencies = Cache::get('currencies'); + if ($currency) + return $currency->id; - if (!$currencies) { - $this->buildCache(true); - } + return 1; - $currency = $currencies->filter(function ($item) use ($code) { - return $item->code == $code; - })->first(); - - if ($currency) - return $currency->id; - - return 1; - - } + } }