예제 #1
0
 public function officebncuserAction()
 {
     list($officeAdapter, $officeSql) = $this->createOfficeBNCAdapter();
     $dbSql = $this->getServiceLocator()->get('dbSql');
     $dbAdapter = $this->getServiceLocator()->get('dbAdapter');
     // lấy danh sach user có personel_id
     $select = $officeSql->select(['u' => 'users']);
     $select->where(['personnel_id IS NOT NULL']);
     $select->order(['id ASC']);
     $paginatorAdapter = new \Zend\Paginator\Adapter\DbSelect($select, $officeAdapter);
     $paginator = new \Zend\Paginator\Paginator($paginatorAdapter);
     $paginator->setItemCountPerPage(50);
     $page = $this->getRequest()->getQuery('page', 1);
     $totalUpdate = $this->getRequest()->getQuery('totalUpdate', 0);
     $totalInsert = $this->getRequest()->getQuery('totalInsert', 0);
     $paginator->setCurrentPageNumber($page);
     $employeeMapper = $this->getServiceLocator()->get('\\Hrm\\Model\\EmployeeMapper');
     foreach ($paginator as $row) {
         $row = (array) $row;
         // dùng personelId tham chiếu với bảng employee, lấy ra employee
         $employee = new \Hrm\Model\Employee();
         $employee->setOneofficeId($row['personnel_id']);
         $employee->setPrivateSource(\Home\Model\Consts::PRIVATE_SOURCE_OFFICEBNC);
         if (!$employeeMapper->isExistedOneofficeId($employee)) {
             continue;
         }
         // xem nếu employee đó đã có user thì bỏ qua
         if ($employee->getUserId()) {
             continue;
         }
         if (!$row['email']) {
             continue;
         }
         // nếu employee chưa gắn với user thfi tạo user
         $user = new \User\Model\User();
         $userMapper = $this->getServiceLocator()->get('\\User\\Model\\UserMapper');
         // lấy thông tin email, check user đã  tồn tại chưa
         $user = $userMapper->get(null, null, $row['email']);
         if ($user) {
             // nếu đã tồn tại, check xem user đó đã gắn với employee nào chưa
             $select = $dbSql->select(['e' => \Hrm\Model\EmployeeMapper::TABLE_NAME]);
             $select->where(['userId' => $user->getId()]);
             $rowEmployee = $dbAdapter->query($dbSql->buildSqlString($select), Adapter::QUERY_MODE_EXECUTE);
             // nếu đã tôn tại, continue
             if ($rowEmployee->count()) {
                 continue;
             }
             //nếu chưa thì gắn luôn với employee
             $employee->setUserId($user->getId());
             $employeeMapper->save($employee);
             $user->setOneofficeId($row['ID']);
             $userMapper->save($user);
             $totalUpdate++;
         } else {
             // nếu chưa tồn tại user, tạo mới rồi gắn với employee
             $user = new \User\Model\User();
             $username = $this->getValidUsername($row['username']);
             $user->setUsername($username);
             $user->setFullName($employee->getFullName());
             $user->setEmail($row['email']);
             $user->setRole(\User\Model\User::ROLE_MEMBER);
             $user->setGender($employee->getGender());
             $user->setFullName($employee->getFullName());
             $user->setBirthdate($employee->getBirthdate());
             $user->setActive(1);
             $user->setSalt($user->generateSalt());
             $user->setPassword($user->createPassword('vatgia.com'));
             if ($row['is_deleted'] == 'yes') {
                 $user->setLocked(1);
             }
             if ($row['date_created'] && $row['date_created'] != '0000-00-00 00:00:00') {
                 $user->setCreatedDateTime($row['date_created']);
                 $user->setCreatedDate(DateBase::toFormat($row['date_created'], DateBase::COMMON_DATE_FORMAT));
             } else {
                 $user->setCreatedDateTime(DateBase::getCurrentDateTime());
                 $user->setCreatedDate(DateBase::getCurrentDate());
             }
             $user->setCreatedById(1);
             $user->setEmployeeCode($employee->getCode());
             $user->setOneofficeId($row['ID']);
             $userMapper->save($user);
             $employee->setUserId($user->getId());
             $employeeMapper->save($employee);
             $totalInsert++;
         }
     }
     $this->getViewModel()->setTerminal(true);
     $this->getViewModel()->setVariable('paginator', $paginator);
     $this->getViewModel()->setVariable('page', $page);
     $this->getViewModel()->setVariable('totalPages', $paginator->count() + 1);
     $this->getViewModel()->setVariable('totalInsert', $totalInsert);
     $this->getViewModel()->setVariable('totalUpdate', $totalUpdate);
     if ($page <= $paginator->count()) {
         $this->getViewModel()->setVariable('redirectUri', Uri::build('/system/tool/officebncuser', ['page' => $page + 1, 'totalInsert' => $totalInsert, 'totalUpdate' => $totalUpdate]));
     }
     return $this->getViewModel();
 }