/** * @param $bankId * @param $username * @param $password * @param bool $includeTransactions * @return array|bool */ public function loadBankAccounts($bankId, $username, $password, $includeTransactions = true) { if (!$bankId || !$username || !$password) { return false; } $expenses = $this->getExpenses(); $vendorMap = $this->createVendorMap(); $bankAccounts = BankSubaccount::scope()->whereHas('bank_account', function ($query) use($bankId) { $query->where('bank_id', '=', $bankId); })->get(); $bank = Utils::getFromCache($bankId, 'banks'); $data = []; // load OFX trnansactions try { $finance = new Finance(); $finance->banks[$bankId] = $bank->getOFXBank($finance); $finance->banks[$bankId]->logins[] = new Login($finance->banks[$bankId], $username, $password); foreach ($finance->banks as $bank) { foreach ($bank->logins as $login) { $login->setup(); foreach ($login->accounts as $account) { $account->setup($includeTransactions); if ($account = $this->parseBankAccount($account, $bankAccounts, $expenses, $includeTransactions, $vendorMap)) { $data[] = $account; } } } } return $data; } catch (\Exception $e) { return false; } }
public function loadBankAccounts($bankId, $username, $password, $includeTransactions = true) { if (!$bankId || !$username || !$password) { return false; } $expenses = Expense::scope()->whereBankId($bankId)->where('transaction_id', '!=', '')->withTrashed()->get(['transaction_id'])->toArray(); $expenses = array_flip(array_map(function ($val) { return $val['transaction_id']; }, $expenses)); $bankAccounts = BankSubaccount::scope()->whereHas('bank_account', function ($query) use($bankId) { $query->where('bank_id', '=', $bankId); })->get(); $bank = Utils::getFromCache($bankId, 'banks'); $data = []; // load OFX trnansactions try { $finance = new Finance(); $finance->banks[$bankId] = $bank->getOFXBank($finance); $finance->banks[$bankId]->logins[] = new Login($finance->banks[$bankId], $username, $password); foreach ($finance->banks as $bank) { foreach ($bank->logins as $login) { $login->setup(); foreach ($login->accounts as $account) { $account->setup($includeTransactions); if ($account = $this->parseBankAccount($account, $bankAccounts, $expenses, $includeTransactions)) { $data[] = $account; } } } } return $data; } catch (\Exception $e) { return false; } }
public function save($input) { $bankAccount = BankAccount::createNew(); $bankAccount->bank_id = $input['bank_id']; $bankAccount->username = Crypt::encrypt(trim($input['bank_username'])); $account = \Auth::user()->account; $account->bank_accounts()->save($bankAccount); foreach ($input['bank_accounts'] as $data) { if (!isset($data['include']) || !filter_var($data['include'], FILTER_VALIDATE_BOOLEAN)) { continue; } $subaccount = BankSubaccount::createNew(); $subaccount->account_name = trim($data['account_name']); $subaccount->account_number = trim($data['hashed_account_number']); $bankAccount->bank_subaccounts()->save($subaccount); } return $bankAccount; }