예제 #1
0
 /**
  * @param null|string $username
  */
 public function __construct($serviceLocator)
 {
     parent::__construct('userManageFilter');
     $this->setServiceLocator($serviceLocator);
     $this->setAttribute('method', 'GET');
     $filter = $this->getInputFilter();
     $companyId = $this->addElementCompany('companyId', null, ['required' => false]);
     $departmentId = new Select('departmentId');
     $departmentId->setValueOptions(['' => '- Phòng ban -']);
     $this->add($departmentId);
     $this->loadDepartments($departmentId, $companyId);
     $filter->add(array('name' => 'departmentId', 'required' => false, 'filters' => array(array('name' => 'StringTrim'))));
     $id = new Text('id');
     $id->setAttributes(['maxlength' => 255, 'placeholder' => 'ID']);
     $this->add($id);
     $filter->add(array('name' => 'id', 'required' => false, 'filters' => array(array('name' => 'StringTrim'))));
     $username = new Text('username');
     $username->setAttributes(['maxlength' => 255, 'placeholder' => 'Họ tên']);
     $this->add($username);
     $filter->add(array('name' => 'username', 'required' => false, 'filters' => array(array('name' => 'StringTrim'))));
     $email = new Text('email');
     $email->setAttributes(['maxlength' => 255, 'placeholder' => 'Email']);
     $this->add($email);
     $filter->add(array('name' => 'email', 'required' => false, 'filters' => array(array('name' => 'StringTrim'))));
     //phân quyền riêng
     $hasPrivateRole = new Select('hasPrivateRole');
     $hasPrivateRole->setValueOptions(array('' => '- Phân quyền riêng -', '1' => 'Có ', '-1' => 'Không '));
     $this->add($hasPrivateRole);
     $filter->add(array('name' => 'hasPrivateRole', 'required' => false));
     $user = new \User\Model\User();
     $roleValues = array('' => '- Quyền hạn -') + $user->getRoleDisplays();
     unset($roleValues[$user::ROLE_SUPERADMIN]);
     $role = new Select('role');
     $role->setValueOptions($roleValues);
     $this->add($role);
     $filter->add(array('name' => 'role', 'required' => false, 'filters' => array(array('name' => 'StringTrim'), array('name' => 'Digits'))));
     $roleCompany = new Select('roleCompany');
     $roleCompany->setValueOptions(['' => '- Nhóm quyền -']);
     $this->add($roleCompany);
     $this->loadRole($roleCompany, $companyId);
     $filter->add(array('name' => 'roleCompany', 'required' => false, 'filters' => array(array('name' => 'StringTrim'))));
     $active = new Select('active');
     $active->setValueOptions(array('' => '- Kích hoạt', '1' => 'Đã kích hoạt', '-1' => 'Chưa kích hoạt'));
     $this->add($active);
     $filter->add(array('name' => 'active', 'required' => false, 'filters' => array(array('name' => 'StringTrim'))));
     $locked = new Select('locked');
     $locked->setValueOptions(array('' => '- Khóa -', '1' => 'Đã khóa', '-1' => 'Chưa khóa'));
     $this->add($locked);
     $filter->add(array('name' => 'locked', 'required' => false, 'filters' => array(array('name' => 'StringTrim'))));
     $this->add(array('name' => 'submit', 'options' => array(), 'attributes' => array('type' => 'submit', 'value' => 'Lọc', 'id' => 'btnFilterCrmContact', 'class' => 'btn btn-primary')));
 }
 /**
  * @author KienNN
  * @param \Accounting\Model\Transaction $item
  * @param unknown $options
  */
 public function searchCrmContract($item, $options)
 {
     $select = $this->getDbSql()->select(['t' => self::TABLE_NAME]);
     $select->join(['c' => \Crm\Model\ContractMapper::TABLE_NAME], 't.itemId=c.id', []);
     $select->where(['t.itemType' => \Accounting\Model\Transaction::ITEM_TYPE_CRM_CONTRACT]);
     if ($item->getCompanyId()) {
         $select->where(['t.companyId' => $item->getCompanyId()]);
     }
     if ($item->getOption('companyIds')) {
         $select->where(['t.companyId' => $item->getOption('companyIds')]);
     }
     if ($item->getOption('userIds')) {
         $select->join(['lu' => \Crm\Model\Lead\UserMapper::TABLE_NAME], new Expression('lu.accountId=c.accountId OR lu.leadId=c.leadId'), []);
         $select->where(['lu.userId' => $item->getOption('userIds')]);
     }
     if ($item->getId()) {
         $select->where(['t.id' => $item->getId()]);
     }
     if ($item->getStatus()) {
         $select->where(['t.status' => $item->getStatus()]);
     }
     if ($item->getType()) {
         $select->where(['t.type' => $item->getType()]);
     }
     if ($item->getCreatedById()) {
         $select->where(['t.createdById' => $item->getCreatedById()]);
     }
     if ($item->getOption('departmentId')) {
         $select->where(['c.departmentId' => $item->getOption('departmentId')]);
     }
     if ($item->getOption('contractId')) {
         $select->where(['t.itemId' => $item->getOption('contractId')]);
     }
     if ($item->getOption('productId')) {
         $select->join(['cp' => \Crm\Model\Contract\ProductMapper::TABLE_NAME], 'cp.contractId=t.itemId', []);
         $select->where(['cp.productId' => $item->getOption('productId')]);
     }
     if ($item->getOption('accountingType')) {
         $select->join(['i' => \Accounting\Model\Transaction\ItemMapper::TABLE_NAME], 'i.transactionId=t.id', []);
         $condition = new Expression('i.creditAccountId=ac.id OR i.debitAccountId=ac.id');
         $select->join(['ac' => \Accounting\Model\AccountMapper::TABLE_NAME], $condition, []);
         $select->where(['ac.type' => $item->getOption('accountingType')]);
     }
     if ($item->getOption('accountId')) {
         $select->where(['c.accountId' => $item->getOption('accountId')]);
     }
     if ($item->getOption('leadId')) {
         $select->where(['c.leadId' => $item->getOption('leadId')]);
     }
     if ($item->getOption('fromApplyDate')) {
         $select->where(['t.applyDate >= ?' => $item->getOption('fromApplyDate')]);
         $select->where(['t.accountingById IS NOT NULL']);
     }
     if ($item->getOption('toApplyDate')) {
         $select->where(['t.applyDate <= ?' => $item->getOption('toApplyDate')]);
         $select->where(['t.accountingById IS NOT NULL']);
     }
     if ($item->getOption('fromCreatedDate')) {
         $select->where(['t.createdDate >= ?' => $item->getOption('fromCreatedDate')]);
     }
     if ($item->getOption('toCreatedDate')) {
         $select->where(['t.createdDate <= ?' => $item->getOption('toCreatedDate')]);
     }
     if ($item->getCreatedById()) {
         $select->where(['t.createdById' => $item->getCreatedById()]);
     }
     if ($item->getAccountingById()) {
         $select->where(['t.accountingById' => $item->getAccountingById()]);
     }
     if ($item->getOption('commisstionToEmployeeId')) {
         $select->join(['com' => \Crm\Model\Contract\CommissionMapper::TABLE_NAME], 't.itemId=com.contractId', []);
         $select->where(['com.employeeId' => $item->getOption('commisstionToEmployeeId')]);
     }
     $select->group(['t.id']);
     $select->order([new Expression('IFNULL(t.applyDate, t.createdDate) DESC'), 't.id DESC']);
     $paginator = $this->preparePaginator($select, $options, new \Accounting\Model\Transaction());
     $contractIds = [];
     $userIds = [];
     $transactionIds = [];
     foreach ($paginator as $transaction) {
         if ($transaction->getItemId()) {
             $contractIds[$transaction->getItemId()] = $transaction->getItemId();
         }
         if ($transaction->getCreatedById()) {
             $userIds[$transaction->getCreatedById()] = $transaction->getCreatedById();
         }
         if ($transaction->getApprovedById()) {
             $userIds[$transaction->getApprovedById()] = $transaction->getApprovedById();
         }
         if ($transaction->getAccountingById()) {
             $userIds[$transaction->getAccountingById()] = $transaction->getAccountingById();
         }
         if ($transaction->getPaymentById()) {
             $userIds[$transaction->getPaymentById()] = $transaction->getPaymentById();
         }
         $transactionIds[$transaction->getId()] = $transaction->getId();
     }
     $crmAccounts = [];
     $crmLeads = [];
     $contractValues = [];
     $contractPaids = [];
     if (count($contractIds)) {
         if ($item->getOption('loadCustomer')) {
             $select = $this->getDbSql()->select(['a' => \Crm\Model\AccountMapper::TABLE_NAME]);
             $select->join(['c' => \Crm\Model\ContractMapper::TABLE_NAME], 'c.accountId=a.id', ['contractId' => 'id']);
             $select->where(['c.id' => $contractIds]);
             $rows = $this->getDbAdapter()->query($this->getDbSql()->buildSqlString($select), Adapter::QUERY_MODE_EXECUTE);
             if ($rows->count()) {
                 foreach ($rows->toArray() as $row) {
                     $account = new \Crm\Model\Account();
                     $account->exchangeArray($row);
                     $crmAccounts[$row['contractId']] = $account;
                 }
             }
             $select = $this->getDbSql()->select(['l' => \Crm\Model\LeadMapper::TABLE_NAME]);
             $select->join(['c' => \Crm\Model\ContractMapper::TABLE_NAME], 'c.leadId=l.id', ['contractId' => 'id']);
             $select->where(['c.id' => $contractIds]);
             $rows = $this->getDbAdapter()->query($this->getDbSql()->buildSqlString($select), Adapter::QUERY_MODE_EXECUTE);
             if ($rows->count()) {
                 foreach ($rows->toArray() as $row) {
                     $lead = new \Crm\Model\Lead();
                     $lead->exchangeArray($row);
                     $crmLeads[$row['contractId']] = $lead;
                 }
             }
         }
         if ($item->getOption('loadContractValue')) {
             $select = $this->getDbSql()->select(['p' => \Crm\Model\Contract\ProductMapper::TABLE_NAME]);
             $select->where(['contractId' => $contractIds]);
             $rows = $this->getDbAdapter()->query($this->getDbSql()->buildSqlString($select), Adapter::QUERY_MODE_EXECUTE);
             if ($rows->count()) {
                 foreach ($rows->toArray() as $row) {
                     $product = new \Crm\Model\Contract\Product($row);
                     $value = $product->calculateValue();
                     if (isset($contractValues[$product->getContractId()])) {
                         $contractValues[$product->getContractId()] += $value;
                     } else {
                         $contractValues[$product->getContractId()] = $value;
                     }
                 }
             }
         }
         if ($item->getOption('loadContractPaid')) {
             $select = $this->getDbSql()->select(['t' => self::TABLE_NAME]);
             $select->where(['itemType' => \Accounting\Model\Transaction::ITEM_TYPE_CRM_CONTRACT]);
             $select->where(['itemId' => $contractIds]);
             $select->where(['status' => [\Accounting\Model\Transaction::STATUS_ACCOUNTING, \Accounting\Model\Transaction::STATUS_PAYMENT]]);
             $rows = $this->getDbAdapter()->query($this->getDbSql()->buildSqlString($select), Adapter::QUERY_MODE_EXECUTE);
             if ($rows->count()) {
                 foreach ($rows->toArray() as $row) {
                     if (isset($contractPaids[$row['itemId']])) {
                         $contractPaids[$row['itemId']] += $row['amount'];
                     } else {
                         $contractPaids[$row['itemId']] = $row['amount'];
                     }
                 }
             }
         }
     }
     $accountingAccounts = [];
     if ($item->getOption('loadAccountingAccount') && count($transactionIds)) {
         $select = $this->getDbSql()->select(['a' => \Accounting\Model\AccountMapper::TABLE_NAME]);
         $select->join(['i' => \Accounting\Model\Transaction\ItemMapper::TABLE_NAME], new Expression('i.creditAccountId=a.id OR i.debitAccountId=a.id'), ['transactionId' => 'transactionId']);
         $select->where(['i.transactionId' => $transactionIds]);
         $select->group(['i.transactionId']);
         $rows = $this->getDbAdapter()->query($this->getDbSql()->buildSqlString($select), Adapter::QUERY_MODE_EXECUTE);
         if ($rows->count()) {
             foreach ($rows->toArray() as $row) {
                 $accountingAccount = new \Accounting\Model\Account();
                 $accountingAccount->exchangeArray($row);
                 $accountingAccounts[$row['transactionId']] = $accountingAccount;
             }
         }
     }
     $users = [];
     if ($item->getOption('loadUsers') && count($userIds)) {
         $select = $this->getDbSql()->select(['u' => \User\Model\UserMapper::TABLE_NAME]);
         $select->where(['id' => $userIds]);
         $rows = $this->getDbAdapter()->query($this->getDbSql()->buildSqlString($select), Adapter::QUERY_MODE_EXECUTE);
         if ($rows->count()) {
             foreach ($rows->toArray() as $row) {
                 $user = new \User\Model\User();
                 $user->exchangeArray($row);
                 $users[$user->getId()] = $user;
             }
         }
     }
     if ($paginator->getCurrentModels()) {
         foreach ($paginator->getCurrentModels() as $transaction) {
             if ($transaction->getItemId() && isset($crmAccounts[$transaction->getItemId()])) {
                 $transaction->addOption('crmAccount', $crmAccounts[$transaction->getItemId()]);
             }
             if ($transaction->getItemId() && isset($crmLeads[$transaction->getItemId()])) {
                 $transaction->addOption('crmLead', $crmLeads[$transaction->getItemId()]);
             }
             if (isset($accountingAccounts[$transaction->getId()])) {
                 $transaction->addOption('accountingAccount', $accountingAccounts[$transaction->getId()]);
             }
             if ($transaction->getCreatedById() && isset($users[$transaction->getCreatedById()])) {
                 $transaction->addOption('createdBy', $users[$transaction->getCreatedById()]);
             }
             if ($transaction->getAccountingById() && isset($users[$transaction->getAccountingById()])) {
                 $transaction->addOption('accountingBy', $users[$transaction->getAccountingById()]);
             }
             if ($transaction->getPaymentById() && isset($users[$transaction->getPaymentById()])) {
                 $transaction->addOption('paymentBy', $users[$transaction->getCreatedById()]);
             }
             if (isset($contractValues[$transaction->getItemId()])) {
                 $transaction->addOption('contractValue', $contractValues[$transaction->getItemId()]);
             }
             if (isset($contractPaids[$transaction->getItemId()])) {
                 $transaction->addOption('contractPaid', $contractPaids[$transaction->getItemId()]);
             }
         }
     }
     return $paginator;
 }
예제 #3
0
 public function getUsers($options = null)
 {
     $mapper = $this->getServiceLocator()->get('User\\Model\\UserMapper');
     $user = new \User\Model\User();
     if ($options['id']) {
         $user->setId($options['id']);
     }
     return $mapper->fetchAll($user);
 }
예제 #4
0
 /**
  * Hàm này đăng nhập người dùng dựa trên 1 SignInToken
  *
  * @param string $token SignInToken được truyền sang từ id.vatgia.com
  */
 function signInByToken($token)
 {
     $config = $this->getServiceLocator()->get('Config');
     $secretKey = $config['sso']['id.vatgia.com_IKI']['secretKey'];
     $publicKey = $config['oauths']['id.vatgia.com']['publicKey'];
     $s = new SignInToken(array(), $secretKey, $publicKey);
     if (SSOHelper::isRefererValid() && ($signinErr = $s->decrypt($token)) == SignInToken::ERROR_NONE) {
         // Header này chỉ định dành cho IE, để cho phép cross domain cookie
         header('P3P: CP="CAO PSA OUR"');
         $data = $s->getData();
         // dữ liệu của SignInToken
         $info = $data['info'];
         // Vì id.vatgia.com chỉ cung cấp Họ Đệm và Tên, bạn có thể lấy tên đầy đủ như dưới đây
         $info['name'] = trim($info['first_name'] . ' ' . $info['last_name']);
         /* @var $userMapper \User\Model\UserMapper */
         $userMapper = $this->getServiceLocator()->get('User\\Model\\UserMapper');
         if (($user = $userMapper->get(null, null, $info['email'])) == null) {
             $user = new \User\Model\User();
             $user->setEmail($info['email']);
             $user->setFullName($info['name']);
             $user->setAddress($info['address']);
             $user->setBirthday($info['dob']);
             $user->setMobile($info['phone']);
             $user->setActive(1);
             $user->setRegisteredDate(date('Y-m-d H:i:s'));
             $userMapper->save($user);
         }
         // TODO lưu lại thông tin OAuth2 Access Token dùng để xác thực tài khoản trước khi lấy thông tin bảo kim...
         //$this->setState('oauth2_access_token', $data['oauth2_access_token']);
         // hoặc : $_SESSION['oauth2_access_token'] = $data['oauth2_access_token'];
         // Lưu lại gsn vào cookie
         SSOHelper::saveGSN($data['gsn'], $data['expired_time']);
         return $user;
     } else {
         echo $signinErr;
     }
     return null;
 }
예제 #5
0
파일: User.php 프로젝트: venril/blogger3
 /**
  * Création d'un objet user
  * 
  * $data == $_POST
  * $data == $_GET
  */
 public function getUser(array $data)
 {
     $user = new \User\Model\User();
     $user->setEmail($data['email'])->setFirstname($data['firstname'])->setLastname($data['lastname'])->setUsername($data['username'])->setPassword($data['password'])->setIsActive($data['isActive'])->setBirthdate(new \DateTime($data['birthdate']));
     return $user;
 }
예제 #6
0
 public function isValid()
 {
     $isVaild = parent::isValid();
     if ($isVaild) {
         $user = new \User\Model\User();
         $user->exchangeArray($this->getData());
         $userMapper = $this->getServiceLocator()->get('\\User\\Model\\UserMapper');
         if ($userMapper->isExisted($user)) {
             $this->get('username')->setMessages(['Tên tài khoản hoặc email này đã được sử dụng']);
             $isVaild = false;
         }
     }
     return $isVaild;
 }
예제 #7
0
 public function recreatepasswordAction()
 {
     list($officeAdapter, $officeSql) = $this->createOfficeAdapter();
     $dbAdapter = $this->getServiceLocator()->get('dbAdapter');
     $dbSql = $this->getServiceLocator()->get('dbSql');
     $select = $dbSql->select(['u' => \User\Model\UserMapper::TABLE_NAME]);
     $select->where(['createdById' => 1]);
     $select->where(['oneofficeId IS NOT NULL']);
     $select->where(['salt IS NULL']);
     $paginatorAdapter = new \Zend\Paginator\Adapter\DbSelect($select, $dbAdapter);
     $paginator = new \Zend\Paginator\Paginator($paginatorAdapter);
     $paginator->setItemCountPerPage(50);
     $page = $this->getRequest()->getQuery('page', 1);
     $totalUpdate = $this->getRequest()->getQuery('totalUpdate', 0);
     $paginator->setCurrentPageNumber($page);
     $userMapper = $this->getServiceLocator()->get('\\User\\Model\\UserMapper');
     foreach ($paginator as $row) {
         $row = (array) $row;
         $user = new \User\Model\User();
         $user->exchangeArray($row);
         $user->setSalt($user->generateSalt());
         $user->setPassword($user->createPassword('vatgia.com'));
         $select = $officeSql->select(['u' => 'users']);
         $select->where(['ID' => $user->getOneofficeId()]);
         $select->where(['is_deleted' => 'no']);
         $check = $officeAdapter->query($officeSql->buildSqlString($select), $officeAdapter::QUERY_MODE_EXECUTE);
         if ($check->count()) {
             $user->setLocked(null);
         } else {
             $user->setLocked(1);
         }
         $userMapper->save($user);
         $totalUpdate++;
     }
     $this->getViewModel()->setTerminal(true);
     $this->getViewModel()->setVariable('paginator', $paginator);
     $this->getViewModel()->setVariable('page', $page);
     $this->getViewModel()->setVariable('totalPages', $paginator->count() + 1);
     $this->getViewModel()->setVariable('totalUpdate', $totalUpdate);
     if ($paginator->count()) {
         $this->getViewModel()->setVariable('redirectUri', Uri::build('/system/tool/recreatepassword', ['page' => $page + 1, 'totalUpdate' => $totalUpdate]));
     }
     return $this->getViewModel();
 }
예제 #8
0
 public function isValid()
 {
     $isVaild = parent::isValid();
     if ($isVaild) {
         $data = parent::getData();
         if ($data['password']) {
             if ($data['password'] != $data['rePassword']) {
                 $this->get('rePassword')->setMessages(['Password nhập lại phải giống password']);
                 $isVaild = false;
             }
         }
         $userMapper = $this->getServiceLocator()->get('\\User\\Model\\UserMapper');
         if ($data['username']) {
             $user = new \User\Model\User();
             $user->setUsername($data['username']);
             $user->setId($data['id']);
             if ($userMapper->isExistedUserName($user)) {
                 $this->get('username')->setMessages(['Tên tài khoản này đã được sử dụng']);
                 $isVaild = false;
             }
         }
         if ($data['email']) {
             $user = new \User\Model\User();
             $user->setEmail($data['email']);
             $user->setId($data['id']);
             if ($userMapper->isExistedEmail($user)) {
                 $this->get('email')->setMessages(['email này đã được sử dụng']);
                 $isVaild = false;
             }
         }
     }
     return $isVaild;
 }
예제 #9
0
 /**
  * @author KienNN
  */
 public function getCompanyRole()
 {
     if ($this->companyRole) {
         return $this->companyRole;
     }
     $result = $this->getRoleName();
     $user = new \User\Model\User();
     if ($this->getRoleName() && !in_array($this->getRoleName(), array($user->getRoleName(\User\Model\User::ROLE_ADMIN), $user->getRoleName(\User\Model\User::ROLE_SUPERADMIN), $user->getRoleName(\User\Model\User::ROLE_GUEST)))) {
     }
     $this->companyRole = $result;
     return $this->companyRole;
 }