public function revertleaduserAction() { $dbSql = $this->getServiceLocator()->get('dbSql'); $dbAdapter = $this->getServiceLocator()->get('dbAdapter'); $select = $dbSql->select(['lc' => \Crm\Model\Lead\CompanyMapper::TABLE_NAME]); $select->join(['a' => \Crm\Model\ActivityMapper::TABLE_NAME], new Expression('a.companyId=lc.companyId AND a.leadId=lc.leadId'), ['relatedUserId', 'a.createdDateTime' => 'createdDateTime']); //$select->where(['lc.accountId IS NOT NULL']); $select->where(['a.type' => \Crm\Model\Activity::TYPE_AUTO_FREE]); $select->where(['a.createdDate' => '2015-05-29']); $select->order(['a.id DESC']); $paginatorAdapter = new \Zend\Paginator\Adapter\DbSelect($select, $dbAdapter); $paginator = new \Zend\Paginator\Paginator($paginatorAdapter); $paginator->setItemCountPerPage(300); $page = $this->getRequest()->getQuery('page', 1); $paginator->setCurrentPageNumber($page); $leadUserMapper = $this->getServiceLocator()->get('\\Crm\\Model\\Lead\\UserMapper'); $leadCompanyMapper = $this->getServiceLocator()->get('\\Crm\\Model\\Lead\\CompanyMapper'); $currentDateTime = DateBase::getCurrentDateTime(); $totalUser = $this->getRequest()->getQuery('totalUser') ?: 0; // Xóa các người dùng dc gắn sau thời điểm lỗi $result = []; foreach ($paginator as $row) { $row = (array) $row; $leadCompany = new \Crm\Model\Lead\Company($row); $delete = $dbSql->delete(\Crm\Model\Lead\UserMapper::TABLE_NAME); $delete->where(['createdDateTime > ?' => $row['a.createdDateTime']]); $delete->where(['companyId' => $leadCompany->getCompanyId()]); $delete->where(['leadId' => $leadCompany->getLeadId()]); $query = $dbSql->buildSqlString($delete); $dbAdapter->query($query, $dbAdapter::QUERY_MODE_EXECUTE); $result[] = $row; } foreach ($result as $row) { $leadCompany = new \Crm\Model\Lead\Company($row); $totalUser++; //update laij last activities về trước khi xóa $select = $dbSql->select(['a' => \Crm\Model\ActivityMapper::TABLE_NAME]); $select->where(['companyId' => $leadCompany->getCompanyId()]); $select->where(['leadId' => $leadCompany->getLeadId()]); $select->where(['createdDateTime < ?' => $row['a.createdDateTime']]); $select->order(['a.createdDateTime DESC']); $select->limit(1); $query = $dbSql->buildSqlString($select); $row2 = $dbAdapter->query($query, $dbAdapter::QUERY_MODE_EXECUTE); if ($row2->count()) { $row2 = (array) $row2->current(); $leadCompanyMapper->updateColumns(['status' => \Crm\Model\Lead\Company::STATUS_BELONG, 'lastActivityDateTime' => $row2['createdDateTime']], $leadCompany); } // set lại user như trước khi xóa $leadUser = new \Crm\Model\Lead\User(); $leadUser->setLeadId($leadCompany->getLeadId()); $leadUser->setAccountId($leadCompany->getAccountId()); $leadUser->setCompanyId($leadCompany->getCompanyId()); $leadUser->setType(\Crm\Model\Lead\User::TYPE_SALE); $leadUser->setUserId($row['relatedUserId']); if (!$leadUserMapper->isExisted($leadUser)) { $leadUser->setCreatedById(1); $leadUser->setCreatedDateTime('2015-05-29 14:00:00'); $leadUserMapper->save($leadUser); } } $this->getViewModel()->setTerminal(true); $this->getViewModel()->setVariable('page', $page); $this->getViewModel()->setVariable('totalPages', $paginator->count() + 1); if ($page <= $paginator->count()) { $this->getViewModel()->setVariable('redirectUri', '/system/tool/revertleaduser?page=' . ($page + 1) . '&totalUser='******'totalUser', $totalUser); return $this->getViewModel(); }