/** * @return JsonModel */ public function ajaxMoneyAccountListAction() { /** @var BackofficeAuthenticationService $auth */ $auth = $this->getServiceLocator()->get('library_backoffice_auth'); /** @var MoneyAccountService $moneyAccountService */ $moneyAccountService = $this->getServiceLocator()->get('service_money_account'); $params = $this->params(); /** @var \DDD\Domain\MoneyAccount\MoneyAccount[]|ResultSet $moneyAccounts */ $moneyAccounts = $moneyAccountService->moneyAccountList((int) $params->fromQuery('iDisplayStart'), (int) $params->fromQuery('iDisplayLength'), (int) $params->fromQuery('iSortCol_0'), $params->fromQuery('sSortDir_0'), $params->fromQuery('sSearch'), $params->fromQuery('all', '1'), $auth->getIdentity()->id); $tableData = []; if ($moneyAccounts->count()) { foreach ($moneyAccounts as $moneyAccount) { $router = $this->getEvent()->getRouter(); $editUrl = $router->assemble(['controller' => 'money-account', 'action' => 'edit', 'id' => $moneyAccount->getId()], ['name' => 'finance/default']); $transactionsUrl = $router->assemble(['controller' => 'money-account', 'action' => 'transactions', 'id' => $moneyAccount->getId()], ['name' => 'finance/default']); $editBtn = ''; $transactionsBtn = ''; if ($auth->hasRole(Roles::ROLE_MONEY_ACCOUNT_GLOBAL_MANAGER) || $moneyAccount->isManager()) { $editBtn = '<a class="btn btn-xs btn-primary" href="' . $editUrl . '" target="_blank" data-html-content="Edit"></a>'; $transactionsBtn = '<a class="btn btn-xs btn-primary" href="' . $transactionsUrl . '" target="_blank">Transactions</a>'; } else { if ($auth->hasRole(Roles::ROLE_MONEY_ACCOUNT_GLOBAL_MANAGER) || $moneyAccount->hasTransactionsView()) { $transactionsBtn = '<a class="btn btn-xs btn-primary" href="' . $transactionsUrl . '" target="_blank">Transactions</a>'; } else { continue; } } $status = $moneyAccount->getActive() ? '<span class="label label-success">Active</span>' : '<span class="label label-default">Inactive</span>'; array_push($tableData, ['<div class="text-center">' . $status . '</div>', $moneyAccount->getName(), MoneyAccountService::getMoneyAccountTypeById($moneyAccount->getType()), number_format($moneyAccount->getBalance(), 2), $moneyAccount->getCurrencyName(), $editBtn, $transactionsBtn]); } } $moneyAccountCount = $moneyAccountService->moneyAccountCount($params->fromQuery('sSearch'), $params->fromQuery('all', '1')); $resultArray = ['sEcho' => $params->fromQuery('sEcho'), 'iTotalRecords' => count($tableData), 'iTotalDisplayRecords' => count($tableData), 'iDisplayStart' => $params->fromQuery('iDisplayStart'), 'iDisplayLength' => (int) $params->fromQuery('iDisplayLength'), 'aaData' => $tableData]; return new JsonModel($resultArray); }