App\services\BankAccountService::parseTransactions PHP Method

parseTransactions() private method

private parseTransactions ( $account, $data, $expenses, $vendorMap ) : mixed
$account
$data
$expenses
$vendorMap
return mixed
    private function parseTransactions($account, $data, $expenses, $vendorMap)
    {
        $ofxParser = new \OfxParser\Parser();
        $ofx = $ofxParser->loadFromString($data);
        $account->start_date = $ofx->BankAccount->Statement->startDate;
        $account->end_date = $ofx->BankAccount->Statement->endDate;
        $account->transactions = [];
        foreach ($ofx->BankAccount->Statement->transactions as $transaction) {
            // ensure transactions aren't imported as expenses twice
            if (isset($expenses[$transaction->uniqueId])) {
                continue;
            }
            if ($transaction->amount >= 0) {
                continue;
            }
            // if vendor has already been imported use current name
            $vendorName = trim(substr($transaction->name, 0, 20));
            $key = strtolower($vendorName);
            $vendor = isset($vendorMap[$key]) ? $vendorMap[$key] : null;
            $transaction->vendor = $vendor ? $vendor->name : $this->prepareValue($vendorName);
            $transaction->info = $this->prepareValue(substr($transaction->name, 20));
            $transaction->memo = $this->prepareValue($transaction->memo);
            $transaction->date = \Auth::user()->account->formatDate($transaction->date);
            $transaction->amount *= -1;
            $account->transactions[] = $transaction;
        }
        return $account;
    }