private function insertaccount($accounts, $companyId, $parentId = null)
 {
     if (!$accounts || !count($accounts)) {
         return null;
     }
     $accountMapper = $this->getServiceLocator()->get('\\Accounting\\Model\\AccountMapper');
     foreach ($accounts as $accountArray) {
         $account = new \Accounting\Model\Account();
         $account->setCode($accountArray['code']);
         $account->setName($accountArray['name']);
         $account->setParentId($parentId);
         $account->setCompanyId($companyId);
         if (!$accountMapper->isExisted($account)) {
             $account->setStatus(\Accounting\Model\Account::STATUS_ACTIVE);
             $account->setCreatedById($this->user()->getIdentity());
             $account->setCreatedDateTime(DateBase::getCurrentDateTime());
             $accountMapper->save($account);
         }
         if (isset($accountArray['childs']) && count($accountArray['childs'])) {
             $this->insertaccount($accountArray['childs'], $companyId, $account->getId());
         }
     }
 }
 public function suggestAction()
 {
     $q = $this->getRequest()->getPost('q');
     //$q = $this->params()->fromQuery('q');
     $account = new Account();
     $account->setName($q);
     $jsonModel = new JsonModel();
     if (!$q) {
         $jsonModel->setVariables(['code' => 1, 'data' => []]);
         return $jsonModel;
     }
     $accountMapper = $this->getServiceLocator()->get('Accounting\\Model\\AccountMapper');
     $jsonModel->setVariables(['code' => 1, 'data' => $accountMapper->suggest($account)]);
     return $jsonModel;
 }