public function findmentorAction() { if (!$this->getRequest()->isPost()) { return $this->page404(); } $data = $this->getRequest()->getPost(); $form = new SearchDetail($this->getServiceLocator()); $form->setData($data); if ($form->isValid()) { $user = new User(); $user->setEmail($data['email']); $activeKey = md5($user->getEmail() . DateBase::getCurrentDateTime()); $user->setActiveKey($activeKey); $user->setRole(User::ROLE_MEMBER); $user->setCreatedDateTime(DateBase::getCurrentDateTime()); $user->setCreatedDate(DateBase::getCurrentDate()); /** @var \User\Model\UserMapper $userMapper */ $userMapper = $this->getServiceLocator()->get('User\\Model\\UserMapper'); if (!$userMapper->isExistedEmail($user)) { $userMapper->save($user); Uri::autoLink('/user/user/sendemail', ['email' => $data['email'], 'activeKey' => $user->getActiveKey()]); $this->getJsonModel()->setVariables(['code' => 2, 'data' => 'Email kích hoạt tài khoản đã được gửi đến địa chỉ email của bạn. Kiểm tra hòm thư và làm theo hướng dẫn đễ kích hoạt tài khoản.']); return $this->getJsonModel(); } return $this->getViewModel(); } else { $this->getJsonModel()->setVariables(['code' => 1, 'data' => $form->getErrorMessagesList()]); } return $this->getJsonModel(); }
public function addAction() { $form = new \Admin\Form\Expert\Expert($this->getServiceLocator()); if ($this->getRequest()->isPost()) { $form->setData($this->getRequest()->getPost()); if ($form->isValid()) { $data = $form->getData(); /** @var \Expert\Model\Expert $expert */ $expert = new Expert(); $expert->exchangeArray($data); $expert->setCreatedById($this->user()->getIdentity()); $expert->setCreatedDateTime(DateBase::getCurrentDateTime()); $expert->setExtracontent(json_encode($data['subjectName'])); $user = new User(); /** @var \User\Model\UserMapper $userMapper */ $userMapper = $this->getServiceLocator()->get('User\\Model\\UserMapper'); $user = $userMapper->get($expert->getUserId()); $user->setRole(User::ROLE_MENTOR); $userMapper->updateUser($user); /** @var \Expert\Model\ExpertMapper $expertMapper */ $expertMapper = $this->getServiceLocator()->get('Expert\\Model\\ExpertMapper'); /** @var \Subject\Model\SubjectMapper $subjectMapper */ $subjectMapper = $this->getServiceLocator()->get('Subject\\Model\\SubjectMapper'); $expert = $expertMapper->save($expert); $subjectIds = explode(',', $data['subjectId']); foreach ($subjectIds as $subjectId) { $subject = new Subject(); $subject->setId($subjectId); if ($subjectMapper->get($subject)) { $subjectNames[] = $subject->getName(); $expertSubject = new Expert\Subject(); $expertSubject->setExpertId($expert->getId()); $expertSubject->setSubjectId($subjectId); $expertSubject->setCreatedById($this->user()->getIdentity()); $expertSubject->setCreatedDateTime(DateBase::getCurrentDateTime()); /** @var \Expert\Model\Expert\SubjectMapper $expertSubjectMapper */ $expertSubjectMapper = $this->getServiceLocator()->get('Expert\\Model\\Expert\\SubjectMapper'); $expertSubjectMapper->save($expertSubject); } } $expert->setExtracontent(json_encode(implode(',', $subjectNames))); $expertMapper->save($expert); if ($form->get('afterSubmit')->getValue()) { return $this->redirect()->toUrl($form->get('afterSubmit')->getValue()); } } } $this->getViewModel()->setVariable('form', $form); return $this->getViewModel(); }
public function addcategoryAction() { $form = new \Accounting\Form\ExpenseCategory($this->getServiceLocator()); if ($this->getRequest()->isPost()) { $form->setData($this->getRequest()->getPost()); if ($form->isValid()) { $data = $form->getData(); $expenseCategory = new ExpenseCategory(); $expenseCategory->exchangeArray($data); $expenseCategory->setCreatedById($this->user()->getIdentity()); $expenseCategory->setCreatedDateTime(DateBase::getCurrentDateTime()); $expenseCategory->setStatus($expenseCategory::STATUS_ACTIVE); $expenseCategoryMapper = $this->getServiceLocator()->get('Accounting\\Model\\ExpenseCategoryMapper'); $expenseCategoryMapper->save($expenseCategory); if ($form->get('afterSubmit')->getValue()) { return $this->redirect()->toUrl($form->get('afterSubmit')->getValue()); } } } $this->getViewModel()->setVariable('form', $form); return $this->getViewModel(); }
/** * @param null|string $name */ public function __construct($serviceLocator, $options = null) { parent::__construct('taskRequirement'); $this->setServiceLocator($serviceLocator); $this->setAttribute('method', 'post'); $filter = $this->getInputFilter(); if ($options && isset($options['id']) && $options['id']) { $this->id = $options['id']; } $taskFile = new \Work\Model\TaskFile(); $taskFile->setTaskId($this->id); $taskFile->setCreatedDateTime(DateBase::getCurrentDateTime()); $targetFolder = Uri::getSavePath($taskFile); if (!file_exists($targetFolder)) { $oldmask = umask(0); mkdir($targetFolder, 0777, true); umask($oldmask); } $task = new Task(); $fileUpload = new File('fileUpload'); $this->add($fileUpload); $filter->add(array('name' => 'fileUpload', 'type' => '\\Zend\\InputFilter\\FileInput', 'required' => true, 'allowEmpty' => true, 'filters' => array(new \Zend\Filter\File\RenameUpload(array('target' => $targetFolder, 'use_upload_name' => true, 'overwrite' => true))), 'validators' => array(array('name' => 'NotEmpty', 'break_chain_on_failure' => true, 'options' => array('messages' => array('isEmpty' => 'Bạn chưa chọn file'))), array('name' => 'File\\Size', 'break_chain_on_failure' => true, 'options' => array('max' => Task::MAX_FILE_SIZE . 'MB', 'messages' => array(\Zend\Validator\File\Size::TOO_BIG => 'File upload phải < 100Mb'))), array('name' => 'File\\Extension', 'break_chain_on_failure' => true, 'options' => array('extension' => $task->getAllowExtension(), 'messages' => array(\Zend\Validator\File\Extension::FALSE_EXTENSION => 'File upload phải là file ảnh, excel, hoặc msword,pds,pdf')))))); }
public function addAction() { $jsonModel = new JsonModel(); $name = $this->getRequest()->getPost('name'); if (!$name) { $jsonModel->setVariables(['code' => 0, 'messages' => ['Dữ liệu không hợp lệ']]); return $jsonModel; } $role = new \System\Model\Role(); $role->setName(trim($name)); $roleMapper = $this->getServiceLocator()->get('\\System\\Model\\RoleMapper'); if ($roleMapper->isExisted($role)) { $jsonModel->setVariables(['code' => 0, 'messages' => ['Tên này đã tồn tại']]); return $jsonModel; } $role->setCreatedById($this->user()->getIdentity()); $role->setCreatedDateTime(DateBase::getCurrentDateTime()); $roleMapper->save($role); $jsonModel->setVariable('code', 1); $data = array('id' => $role->getId(), 'name' => $role->getName(), 'order' => ''); $jsonModel->setVariable('data', $data); return $jsonModel; }
private function uploadDocumentFile() { $documentId = $this->getRequest()->getPost('documentId'); if (!$documentId) { return $this->getJsonModel()->setVariables(array('code' => 0, 'messages' => ['Dữ liệu không hợp lệ'])); } $document = new \Document\Model\Document(); $document->setId($documentId); $documentMapper = $this->getServiceLocator()->get('\\Document\\Model\\DocumentMapper'); /* @var $documentMapper \Document\Model\DocumentMapper */ if (!$documentMapper->get($document)) { return $this->getJsonModel()->setVariables(array('code' => 0, 'messages' => ['Dữ liệu không hợp lệ'])); } $form = new \Home\Form\Media\DocumentFile($this->getServiceLocator(), ['id' => $document->getId()]); $dataPopulate = array_merge_recursive($this->getRequest()->getPost()->toArray(), $this->getRequest()->getQuery()->toArray(), $this->getRequest()->getFiles()->toArray()); $dataPopulate['fileUpload']['name'] = Format::removeSigns($dataPopulate['fileUpload']['name']); $form->setData($dataPopulate); if ($form->isValid()) { $formData = $form->getData(); $file = new \Document\Model\DocumentFile(); $file->setFileName($formData['fileUpload']['name']); $file->setFileSize($formData['fileUpload']['size']); $file->setDocumentId($document->getId()); $file->setCreatedById($this->user()->getIdentity()); $file->setCreatedDateTime(DateBase::getCurrentDateTime()); $fileMapper = $this->getServiceLocator()->get('\\Document\\Model\\DocumentFileMapper'); /* @var $fileMapper \Document\Model\DocumentFileMapper */ $fileMapper->save($file); return $this->getJsonModel()->setVariables(array('code' => 1, 'messages' => $formData)); } else { return $this->getJsonModel()->setVariables(array('code' => 0, 'messages' => $form->getErrorMessagesList())); } }
public function editAction() { $id = $this->params()->fromQuery('id'); $user = new User(); $user->setId($id); $user->setRole(User::ROLE_MENTOR); /** @var \User\Model\UserMapper $userMapper */ $userMapper = $this->getServiceLocator()->get('User\\Model\\UserMapper'); if (!$user->getId() || !$userMapper->getUser($user)) { return $this->page404(); } $form = new \Admin\Form\Expert\Expert($this->getServiceLocator(), 'edit'); $form->remove('afterSubmit'); $form->setData($user->toFormValues()); $expertsubject = new Expert\Subject(); $expertsubject->setExpertId($user->getId()); /** @var \Expert\Model\Expert\SubjectMapper $subjectExpertmapper */ $subjectExpertmapper = $this->getServiceLocator()->get('Expert\\Model\\Expert\\SubjectMapper'); $subjects = $subjectExpertmapper->fetchAllSubject($expertsubject); $subjectIdbs = []; if ($subjects) { $subjectIdbs = array_keys($subjects[$user->getId()]); } $form->get('subjectId')->setValue(implode(',', $subjectIdbs)); $form->get('userId')->setValue($user->getId()); $userName = $user->getFullName() ? $user->getUsername() . ' - ' . $user->getFullName() : $user->getUsername(); $form->get('userName')->setValue($userName); if ($this->getRequest()->isPost()) { $form->setData($this->getRequest()->getPost()); if ($form->isValid()) { $data = $form->getData(); $user->setDescription($data['description']); if (!$data['subjectId']) { $es = new Expert\Subject(); $es->setExpertId($user->getId()); $subjectExpertmapper->delete($es); } if ($data['subjectId']) { $subjectIdas = explode(',', $data['subjectId']); $subjectIdns = array_diff($subjectIdas, $subjectIdbs); foreach ($subjectIdns as $subjId) { $es = new Expert\Subject(); $es->setExpertId($user->getId()); $es->setSubjectId($subjId); $es->setCreatedById($this->user()->getIdentity()); $es->setCreatedDateTime(DateBase::getCurrentDateTime()); $subjectExpertmapper->save($es); } $subjectIdds = array_diff($subjectIdbs, $subjectIdas); foreach ($subjectIdds as $subjId) { $es = new Expert\Subject(); $es->setExpertId($user->getId()); $es->setSubjectId($subjId); $subjectExpertmapper->delete($es); } } $userMapper->updateUser($user); return $this->redirect()->toUrl('/admin/expert'); } } $this->getViewModel()->setVariables(['form' => $form]); return $this->getViewModel(); }
/** * Giải phóng các lead quá 3 ngày mà chưa hẹn gặp dc */ public function freelead3Action() { //tạm ko dùng nữa echo 'Tạm không dùng nữa'; die; $dbAdapter = $this->getServiceLocator()->get('dbAdapter'); /* @var $dbAdapter \Zend\Db\Adapter\Adapter */ $dbSql = $this->getServiceLocator()->get('dbSql'); /* @var $dbSql \Zend\Db\Sql\Sql */ $date = new \DateTime(); $date->setTime(0, 0, 0); $date->sub(new \DateInterval('P' . \Crm\Model\Lead::MAXIMUM_NOT_MEETING_KEEP_DAY . 'D')); $date = $date->format(DateBase::COMMON_DATETIME_FORMAT); $select = $dbSql->select(['lu' => \Crm\Model\Lead\UserMapper::TABLE_NAME]); $select->join(['a' => \Crm\Model\ActivityMapper::TABLE_NAME], new Expression('lu.companyId=a.companyId AND lu.leadId=a.leadId AND a.type=' . \Crm\Model\Activity::TYPE_MEETING), [], $select::JOIN_LEFT); $select->where(['a.id IS NULL']); $select->where(['lu.accountId IS NULL']); $select->where(['lu.createdDateTime <= ?' => $date]); $query = $dbSql->buildSqlString($select); $rows = $dbAdapter->query($query, $dbAdapter::QUERY_MODE_EXECUTE); $leadUserMapper = $this->getServiceLocator()->get('\\Crm\\Model\\Lead\\UserMapper'); $activityMapper = $this->getServiceLocator()->get('\\Crm\\Model\\ActivityMapper'); $leadCompanyMapper = $this->getServiceLocator()->get('\\Crm\\Model\\Lead\\CompanyMapper'); if ($rows->count()) { foreach ($rows as $row) { $row = (array) $row; $leadUser = new \Crm\Model\Lead\User($row); $activity = new \Crm\Model\Activity(); $activity->setType(\Crm\Model\Activity::TYPE_AUTO_FREE); $activity->setCompanyId($leadUser->getCompanyId()); $activity->setLeadId($leadUser->getLeadId()); $activity->setAccountId($leadUser->getAccountId()); $activity->setTitle('Tự giải phóng sau ' . \Crm\Model\Lead::MAXIMUM_NOT_MEETING_KEEP_DAY . ' ngày bàn giao mà không có được cuộc gặp'); $activity->setRelatedUserId($leadUser->getUserId()); $activity->setCreatedById(1); $activity->setCreatedDate(DateBase::getCurrentDate()); $activity->setCreatedDateTime(DateBase::getCurrentDateTime()); $activity->setStatus(\Crm\Model\Activity::STATUS_SUCCESS); $activityMapper->save($activity); $leadUserMapper->delete($leadUser); $leadCompany = new \Crm\Model\Lead\Company(); $leadCompany->setCompanyId($leadUser->getCompanyId()); $leadCompany->setLeadId($leadUser->getLeadId()); $leadCompanyMapper->updateStatus($leadCompany); } } echo $query; die; }
public function updaterolefeatureAction() { $actionId = $this->getRequest()->getPost('actionId'); $roleId = $this->getRequest()->getPost('roleId'); $value = $this->getRequest()->getPost('value'); $jsonModel = new JsonModel(); if (in_array($roleId, array(\User\Model\User::ROLE_ADMIN, \User\Model\User::ROLE_SUPERADMIN, \User\Model\User::ROLE_MEMBER, \User\Model\User::ROLE_GUEST))) { $jsonModel->setVariables(array('code' => 0, 'messages' => ['Không thể điều chỉnh quyền này của nhóm người dùng này'])); return $jsonModel; } $role = new \System\Model\Role(); $role->setId($roleId); $roleMapper = $this->getServiceLocator()->get('\\System\\Model\\RoleMapper'); if (!$roleMapper->get($role)) { $jsonModel->setVariables(array('code' => 0, 'messages' => ['Không tìm thấy quyền này'])); return $jsonModel; } $action = new Action(); $action->setId($actionId); $actionMapper = $this->getServiceLocator()->get('\\System\\Model\\ActionMapper'); if (!$actionMapper->get($action)) { $jsonModel->setVariables(array('code' => 0, 'messages' => ['Không tìm thấy action này'])); return $jsonModel; } $roleFeature = new \System\Model\Role\Feature(); $roleFeature->setActionId($actionId); $roleFeature->setRoleId($roleId); $roleFeatureMapper = $this->getServiceLocator()->get('\\System\\Model\\Role\\FeatureMapper'); if ($value) { if (!$roleFeatureMapper->isExisted($roleFeature)) { $roleFeature->setCreatedById($this->user()->getIdentity()); $roleFeature->setCreatedDateTime(DateBase::getCurrentDateTime()); $roleFeatureMapper->save($roleFeature); } } else { if ($roleFeatureMapper->isExisted($roleFeature)) { $roleFeatureMapper->delete($roleFeature); } } $jsonModel->setVariable('code', 1); return $jsonModel; }
/** * @param \User\Model\User $user */ public function signup(\User\Model\User $user) { $user->setSalt(substr(md5(time() . rand(2000, 5000)), 0, 20)); $user->setCreatedDate(DateBase::getCurrentDate()); $user->setCreatedDateTime(DateBase::getCurrentDateTime()); $user->setPassword(md5($user->getSalt() . $user->getPassword())); $user->setRegisteredDate(date('Y-m-d')); $user->setRegisteredFrom(str_replace('www.', '', strtolower($_SERVER['HTTP_HOST']))); $user->setActiveKey(md5($user->getUsername() . $user->getPassword() . time())); $user->setActiveLink('http://' . $_SERVER['HTTP_HOST'] . '/user/active?u=' . $user->getUsername() . '&c=' . $user->getActiveKey()); $user->setRole(\User\Model\User::ROLE_MEMBER); $sl = $this->getServiceLocator(); $translator = $this->getServiceLocator()->get('translator'); /** @var $mapper \User\Model\UserMapper */ $mapper = $sl->get('User\\Model\\Usermapper'); $mapper->save($user); }
public function paymentAction() { $id = $this->getRequest()->getQuery('id'); if (!$id) { return $this->getViewModel()->setVariable('errorMsg', ['Không tìm thấy phiếu thu chi']); } $transaction = new \Accounting\Model\Transaction(); $transaction->setId($id); $transactionMapper = $this->getServiceLocator()->get('\\Accounting\\Model\\TransactionMapper'); if (!$transactionMapper->get($transaction)) { return $this->getViewModel()->setVariable('errorMsg', ['Không tìm thấy phiếu thu chi']); } if (!in_array($transaction->getStatus(), [\Accounting\Model\Transaction::STATUS_ACCOUNTING])) { return $this->getViewModel()->setVariable('errorMsg', ['Phiếu chưa được hạch toán, không thể kí chi thu']); } $form = new \Accounting\Form\Transaction\ApproveReq($this->getServiceLocator()); $form->setData($transaction->toFormValue()); $form->setCompanyId($transaction->getCompanyId()); $form->setId($transaction->getId()); $this->getViewModel()->setVariable('form', $form); if ($this->getRequest()->isPost()) { $form->setData($this->getRequest()->getPost()); if ($form->isValid()) { $formData = $form->getData(); $transaction->exchangeArray($formData); $transaction->setPaymentById($this->user()->getIdentity()); $transaction->setPaymentDateTime(DateBase::getCurrentDateTime()); $transaction->setStatus(\Accounting\Model\Transaction::STATUS_PAYMENT); $transactionMapper->save($transaction); if (isset($formData['itemData']) && count($formData['itemData'])) { $transactionItemMapper = $this->getServiceLocator()->get('\\Accounting\\Model\\Transaction\\ItemMapper'); foreach ($formData['itemData'] as $itemData) { $transactionItem = new \Accounting\Model\Transaction\Item(); $transactionItem->exchangeArray($itemData); $transactionItem->setTransactionDate($transaction->getApplyDate()); $transactionItem->setTransactionId($transaction->getId()); $transactionItem->setStatus($transaction->getStatus()); $transactionItemMapper->save($transactionItem); } } return $this->redirect()->toUrl('/accounting/transaction/index?id=' . $transaction->getId()); } } $this->getViewModel()->setVariable('transaction', $transaction); $transactionItem = new \Accounting\Model\Transaction\Item(); $transactionItem->setTransactionId($transaction->getId()); $transactionItem->addOption('loadAccountId', true); $transactionItem->addOption('loadExpenseCategory', true); $transactionItemMapper = $this->getServiceLocator()->get('\\Accounting\\Model\\Transaction\\ItemMapper'); $items = $transactionItemMapper->fetchAll($transactionItem); $this->getViewModel()->setVariable('items', $items); $company = new \Company\Model\Company(); $company->setId($transaction->getCompanyId()); $companyMapper = $this->getServiceLocator()->get('\\Company\\Model\\CompanyMapper'); if ($companyMapper->get($company)) { $this->getViewModel()->setVariable('company', $company); } $userMapper = $this->getServiceLocator()->get('\\User\\Model\\UserMapper'); $this->getViewModel()->setVariable('createdBy', $userMapper->get($transaction->getCreatedById())); if ($transaction->getApprovedById()) { $this->getViewModel()->setVariable('approveBy', $userMapper->get($transaction->getApprovedById())); } if ($transaction->getAccountingById()) { $this->getViewModel()->setVariable('accountingBy', $userMapper->get($transaction->getAccountingById())); } $expenseCategory = new \Accounting\Model\ExpenseCategory(); $expenseCategory->setCompanyId($transaction->getCompanyId()); $expenseCategoryMapper = $this->getServiceLocator()->get('\\Accounting\\Model\\ExpenseCategoryMapper'); $tree = new \Home\Model\Tree(); $this->getViewModel()->setVariable('categories', $tree->toArrayRecusived($expenseCategoryMapper->fetchAll($expenseCategory))); $account = new \Accounting\Model\Account(); $account->setCompanyId($transaction->getCompanyId()); $account->addOption('sort', ['sort' => 'c.id', 'dir' => 'ASC']); $accountMapper = $this->getServiceLocator()->get('\\Accounting\\Model\\AccountMapper'); $this->getViewModel()->setVariable('accounts', $tree->toArrayRecusived($accountMapper->fetchAll($account))); return $this->getViewModel(); }
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 fixaddlead20150630Action() { $fromDateTime = '2015-06-26 00:00:00'; $toDateTime = '2015-06-29 00:00:00'; //@TODO fix cung nguoi dc yeu cau laf Thanh Lan $relatedUserId = 21; if ($this->getRequest()->isPost()) { $formValidate = new \System\Form\Api\LeadValidate($this->getServiceLocator()); $dataToPopulate = $this->getRequest()->getPost(); //@TODO: fix cứng cho nhanh đã $dataToPopulate['companyId'] = 1; $formValidate->setData($dataToPopulate); if ($formValidate->isValid()) { $formData = $formValidate->getData(); $isNew = true; $accountId = null; $campaignId = null; $createdDateTime = $this->getRequest()->getPost('createdDateTime'); //Tạo mới thông tin nếu chưa có $lead = new \Crm\Model\Lead(); $lead->exchangeArray($formData); $lead->setSource(\Crm\Model\Lead::SOURCE_WEB); if ($lead->getSourceReference()) { $lead->setSourceReference(substr($lead->getSourceReference(), 0, 220)); } $lead->setCreatedById(1); $lead->setCreatedDate(DateBase::getCurrentDate()); $lead->setCreatedDateTime(DateBase::getCurrentDateTime()); $lead->setDescription('Khách hàng tự đăng kí dùng thử trên nhanh.vn'); $leadMapper = $this->getServiceLocator()->get('\\Crm\\Model\\LeadMapper'); if (!$leadMapper->isExisted($lead)) { $referSource = []; $content = []; $isVaild = false; if (isset($formData['utm_source']) && $formData['utm_source']) { $referSource[] = $formData['utm_source']; $content[] = '<b>utm_source: </b>' . $formData['utm_source']; $isVaild = true; } else { $referSource[] = ''; $content[] = '<b>utm_source: </b>'; } if (isset($formData['utm_medium']) && $formData['utm_medium']) { $referSource[] = $formData['utm_medium']; $content[] = '<b>utm_medium: </b>' . $formData['utm_medium']; $isVaild = true; } else { $referSource[] = ''; $content[] = '<b>utm_medium: </b>'; } if (isset($formData['utm_campaign']) && $formData['utm_campaign']) { $referSource[] = $formData['utm_campaign']; $content[] = '<b>utm_campaign: </b>' . $formData['utm_campaign']; $isVaild = true; } else { $referSource[] = ''; $content[] = '<b>utm_campaign: </b>'; } if (isset($formData['utm_term']) && $formData['utm_term']) { $content[] = '<b>utm_term: </b>' . $formData['utm_term']; } else { $content[] = '<b>utm_term: </b>'; } if (isset($formData['utm_content']) && $formData['utm_content']) { $content[] = '<b>utm_content: </b>' . $formData['utm_content']; } else { $content[] = '<b>utm_content: </b>'; } if ($isVaild) { $campaign = new \Crm\Model\Campaign(); $campaign->setCode(implode('_', $referSource)); $campaign->setCompanyId($lead->getCompanyId()); $campaignMapper = $this->getServiceLocator()->get('\\Crm\\Model\\CampaignMapper'); if ($campaignMapper->isExistedCode($campaign) === false) { $campaign->setStartDate(DateBase::getCurrentDate()); $today = new \DateTime(); $today->add(new \DateInterval('P12M')); $campaign->setEndDate($today->format(DateBase::COMMON_DATE_FORMAT)); $campaign->setName($campaign->getCode()); $campaign->setContent(implode('<br/>', $content)); $campaign->setCreatedById(1); $campaign->setCreatedDateTime(DateBase::getCurrentDateTime()); $campaignMapper->save($campaign); } $campaignId = $campaign->getId(); $lead->setSource(\Crm\Model\Lead::SOURCE_MARKETING_CAMPAIGN); $lead->setDescription(implode('<br/>', $content)); $lead->setCampaignId($campaignId); } $leadMapper->save($lead); } else { if ($lead->getOption('tableExisted') == 'lead') { $dbAdapter = $this->getServiceLocator()->get('dbAdapter'); /* @var $dbSql \Zend\Db\Sql\Sql */ $dbSql = $this->getServiceLocator()->get('dbSql'); // check nếu đã tồn tại yêu cầu dùng thử trong khoảng thời gian cần check thì sẽ kiểm tra lại // nếu có hành động bàn giao cho người khác Lan nhưng ko có bất kì hành động j sau đó thì xóa đi $select = $dbSql->select(['a' => \Crm\Model\ActivityMapper::TABLE_NAME]); $select->where(['leadId' => $lead->getId()]); $select->where(['companyId' => $lead->getCompanyId()]); $select->where(['type' => [\Crm\Model\Activity::TYPE_CUSTOMER_REQUEST, \Crm\Model\Activity::TYPE_REGISTER_FOR_TRIAL]]); $select->where(['createdDateTime >= ?' => $fromDateTime]); $select->where(['createdDateTime >= ?' => $createdDateTime]); //$select->where(['createdDateTime <= ?' => $toDateTime]); $query = $dbSql->buildSqlString($select); $rows = $dbAdapter->query($query, $dbAdapter::QUERY_MODE_EXECUTE); if ($rows->count()) { return $this->getJsonModel()->setVariables(['code' => 1, 'messages' => 'sended']); } //check thông tin có dc ai nhận sau thời điểm bắn về ko $select = $dbSql->select(['a' => \Crm\Model\ActivityMapper::TABLE_NAME]); $select->where(['leadId' => $lead->getId()]); $select->where(['companyId' => $lead->getCompanyId()]); $select->where(['type' => [\Crm\Model\Activity::TYPE_ASSIGN_LEAD, \Crm\Model\Activity::TYPE_SELF_ASSIGN_LEAD]]); $select->where(['createdById != ?' => $relatedUserId]); $select->where(['createdDateTime >= ?' => $fromDateTime]); $select->where(['createdDateTime >= ?' => $createdDateTime]); //$select->where(['createdDateTime <= ?' => $toDateTime]); $select->order(['createdDateTime ASC']); $select->limit(1); $query = $dbSql->buildSqlString($select); $rows = $dbAdapter->query($query, $dbAdapter::QUERY_MODE_EXECUTE); if ($rows->count()) { // nếu có, check tiếp có hành động nào sau đấy ko $row = (array) $rows->current(); $select = $dbSql->select(['a' => \Crm\Model\ActivityMapper::TABLE_NAME]); $select->where(['leadId' => $lead->getId()]); $select->where(['companyId' => $lead->getCompanyId()]); $select->where(new NotIn('type', ['\\Crm\\Model\\Activity::TYPE_ASSIGN_LEAD, \\Crm\\Model\\Activity::TYPE_SELF_ASSIGN_LEAD'])); $select->where(['createdDateTime > ?' => $row['createdDateTime']]); $select->limit(1); $query = $dbSql->buildSqlString($select); $row2 = $dbAdapter->query($query, $dbAdapter::QUERY_MODE_EXECUTE); if (!$row2->count()) { // nếu chỉ nhận về mà ko có bất kì hành động j, // Xóa các lead user dc tạo trong khoảng thời gian từ lúc bắn về đến hết thời điểm check $delete = $dbSql->delete(\Crm\Model\Lead\UserMapper::TABLE_NAME); $delete->where(['leadId' => $lead->getId()]); $delete->where(['companyId' => $lead->getCompanyId()]); $delete->where(['userId != ?' => $relatedUserId]); $delete->where(['createdDateTime > ?' => $createdDateTime]); $delete->where(['createdDateTime <= ?' => $toDateTime]); $query = $dbSql->buildSqlString($delete); $dbAdapter->query($query, $dbAdapter::QUERY_MODE_EXECUTE); // xóa các activities nhận chăm sóc $delete = $dbSql->delete(\Crm\Model\ActivityMapper::TABLE_NAME); $delete->where(['leadId' => $lead->getId()]); $delete->where(['companyId' => $lead->getCompanyId()]); $delete->where(['createdById != ?' => $relatedUserId]); $delete->where(['type' => [\Crm\Model\Activity::TYPE_ASSIGN_LEAD, \Crm\Model\Activity::TYPE_SELF_ASSIGN_LEAD]]); $delete->where(['createdDateTime > ?' => $createdDateTime]); $delete->where(['createdDateTime <= ?' => $toDateTime]); $query = $dbSql->buildSqlString($delete); $dbAdapter->query($query, $dbAdapter::QUERY_MODE_EXECUTE); } } } $isNew = false; if ($lead->getOption('tableExisted') == 'account') { $accountId = $lead->getOption('accountId'); } } //Update nguồn cho leadCompany $leadCompany = new \Crm\Model\Lead\Company(); $leadCompany->setCompanyId($lead->getCompanyId()); $leadCompany->setLeadId($lead->getId()); $leadCompany->setAccountId($accountId); if ($campaignId) { $leadCompany->setSource(\Crm\Model\Lead::SOURCE_MARKETING_CAMPAIGN); $leadCompany->setSourceCampaignId($campaignId); $leadCompany->setSourceReference($lead->getSourceReference()); } elseif ($isNew) { $leadCompany->setSource(\Crm\Model\Lead::SOURCE_WEB); if ($lead->getSourceReference()) { $leadCompany->setSourceReference($lead->getSourceReference()); } else { $leadCompany->setSourceReference('nhanh.vn'); } } $leadCompany->setStatus(\Crm\Model\Lead\Company::STATUS_FREE); $leadCompanyMapper = $this->getServiceLocator()->get('\\Crm\\Model\\Lead\\CompanyMapper'); //Nếu leadCompany đã tồn tại (thông tin đã được sử dụng với cty đang check) thì chỉ update lastActivityDateTime $leadCompanyMapper->isExisted($leadCompany); $leadCompany->setLastActivityDateTime(DateBase::getCurrentDateTime()); $leadCompanyMapper->save($leadCompany); //Log hành động yêu cầu dùng thử của khách hàng $activity = new \Crm\Model\Activity(); $activity->setLeadId($lead->getId()); $activity->setAccountId($accountId); $activity->setCompanyId($lead->getCompanyId()); $activity->setType(\Crm\Model\Activity::TYPE_REGISTER_FOR_TRIAL); $activity->setStatus(\Crm\Model\Activity::STATUS_SUCCESS); //$activity->setTitle('Đăng kí dùng thử '.$formData['service']) ; $activity->setTitle($formData['title'] ?: 'Đăng kí dùng thử ' . $formData['service']); $activity->setContent($formData['note'] ?: null); $activity->setCreatedById(1); $activity->setCreatedDate(DateBase::toFormat($createdDateTime, DateBase::COMMON_DATE_FORMAT)); $activity->setCreatedDateTime($createdDateTime); $activityMapper = $this->getServiceLocator()->get('\\Crm\\Model\\ActivityMapper'); $activityMapper->save($activity); $activityMapper->updateLeadId($activity); //Check lại 1 lần nữa trạng thái của leadCompany là thả nổi hay đã có KD $leadCompanyMapper->updateStatus($leadCompany); //Nếu là thả nổi (tức là vừa dc tạo hoặc đang thả nổi) thì tạo 1 yêu cầu gọi cho chăm sóc mặc định và gắn cho cham sóc mặc định if ($leadCompany->getStatus() == \Crm\Model\Lead\Company::STATUS_FREE) { $activity = new \Crm\Model\Activity(); $activity->setLeadId($lead->getId()); $activity->setAccountId($accountId); $activity->setCompanyId($lead->getCompanyId()); $activity->setType(\Crm\Model\Activity::TYPE_REQUEST_PHONECALL); $activity->setStatus(\Crm\Model\Activity::STATUS_SUCCESS); $activity->setTitle('Gọi xác nhận yêu cầu dùng thử'); $activity->setCreatedById(1); $activity->setCreatedDate(DateBase::toFormat($createdDateTime, DateBase::COMMON_DATE_FORMAT)); $activity->setCreatedDateTime($createdDateTime); $activity->setRelatedUserId($relatedUserId); $activityMapper->save($activity); $leadUser = new \Crm\Model\Lead\User(); $leadUser->setLeadId($lead->getId()); $leadUser->setAccountId($accountId); $leadUser->setCompanyId($lead->getCompanyId()); $leadUser->setType(\Crm\Model\Lead\User::TYPE_SALE); $leadUser->setUserId($relatedUserId); $leadUser->setCreatedById(1); $leadUser->setCreatedDateTime(DateBase::getCurrentDateTime()); $leadUserMapper = $this->getServiceLocator()->get('\\Crm\\Model\\Lead\\UserMapper'); if (!$leadUserMapper->isExisted($leadUser)) { $leadUserMapper->save($leadUser); } $leadCompanyMapper->updateColumns(['status' => \Crm\Model\Lead\Company::STATUS_BELONG], $leadCompany); } return $this->getJsonModel()->setVariable('code', 1); } return $this->getJsonModel()->setVariables(['code' => 0, 'messages' => [$formValidate->getMessages()]]); } return $this->getJsonModel()->setVariables(['code' => 0, 'messages' => ['']]); }
public function signupemailAction() { $viewModels = new ViewModel(); if (!$this->getRequest()->isPost()) { $viewModels->setTemplate('error/404'); return $viewModels; } if ($this->getRequest()->isPost()) { $email = $this->getRequest()->getPost('email'); $user = new User(); $user->setEmail($email); $activeKey = md5($user->getEmail() . DateBase::getCurrentDateTime()); $user->setActiveKey($activeKey); $user->setRole(User::ROLE_MEMBER); $user->setCreatedDateTime(DateBase::getCurrentDateTime()); $user->setCreatedDate(DateBase::getCurrentDate()); /** @var \User\Model\UserMapper $userMapper */ $userMapper = $this->getServiceLocator()->get('User\\Model\\UserMapper'); $jsonModel = new JsonModel(); if (!$userMapper->isExistedEmail($user)) { $userMapper->save($user); Uri::autoLink('/user/user/sendemail', ['email' => $email, 'activeKey' => $user->getActiveKey()]); $jsonModel->setVariables(['code' => 2, 'data' => 'Email kích hoạt tài khoản đã được gửi đến địa chỉ email của bạn. Kiểm tra hòm thư và làm theo hướng dẫn đễ kích hoạt tài khoản.']); } else { $jsonModel->setVariables(['code' => 1, 'data' => 'Email này đã được đăng ký, bạn vui lòng đăng nhập.']); } } return $jsonModel; }
public function covertaccountAction() { set_time_limit(300); $dbAdapter = $this->getServiceLocator()->get('dbAdapter'); $dbSql = $this->getServiceLocator()->get('dbSql'); $totalConvert = $this->getRequest()->getQuery('totalConvert'); $select = $dbSql->select(['a' => \Crm\Model\AccountMapper::TABLE_NAME]); $select->order(['id DESC']); $paginatorAdapter = new \Zend\Paginator\Adapter\DbSelect($select, $dbAdapter); $paginator = new \Zend\Paginator\Paginator($paginatorAdapter); $paginator->setItemCountPerPage(100); $page = $this->getRequest()->getQuery('page', 1); $paginator->setCurrentPageNumber($page); $inforMapper = $this->getServiceLocator()->get('\\Contact\\Model\\Contact\\InformationMapper'); $currentDateTime = DateBase::getCurrentDateTime(); foreach ($paginator as $row) { $row = (array) $row; $accountId = $row['id']; $select = $dbSql->select(['ci' => \Contact\Model\Contact\InformationMapper::TABLE_NAME]); $select->where(['type' => \Contact\Model\Contact\Information::TYPE_CRM_ACCOUNT, 'itemId' => $row['id']]); $select->limit(1); $rowCheck = $dbAdapter->query($dbSql->buildSqlString($select), Adapter::QUERY_MODE_EXECUTE); if ($rowCheck->count()) { continue; } unset($rowCheck); // mobile if ($row['mobile']) { $infor = new \Contact\Model\Contact\Information(); $infor->setCompanyId($row['companyId']); $infor->setType(\Contact\Model\Contact\Information::TYPE_CRM_ACCOUNT); $infor->setItemType(\Contact\Model\Contact\Information::ITEM_TYPE_MOBILE); $infor->setItemId($accountId); $infor->setContent($row['mobile']); if (!$inforMapper->isExisted($infor)) { $infor->setCreatedById(1); $infor->setCreatedDateTime($currentDateTime); $inforMapper->save($infor); } } // mobile2 if ($row['mobile2']) { $infor = new \Contact\Model\Contact\Information(); $infor->setCompanyId($row['companyId']); $infor->setType(\Contact\Model\Contact\Information::TYPE_CRM_ACCOUNT); $infor->setItemType(\Contact\Model\Contact\Information::ITEM_TYPE_MOBILE); $infor->setItemId($accountId); $infor->setContent($row['mobile2']); if (!$inforMapper->isExisted($infor)) { $infor->setCreatedById(1); $infor->setCreatedDateTime($currentDateTime); $inforMapper->save($infor); } } // phone if ($row['phone']) { $infor = new \Contact\Model\Contact\Information(); $infor->setCompanyId($row['companyId']); $infor->setType(\Contact\Model\Contact\Information::TYPE_CRM_ACCOUNT); $infor->setItemType(\Contact\Model\Contact\Information::ITEM_TYPE_MOBILE); $infor->setItemId($accountId); $infor->setContent($row['phone']); if (!$inforMapper->isExisted($infor)) { $infor->setCreatedById(1); $infor->setCreatedDateTime($currentDateTime); $inforMapper->save($infor); } } // phone2 if ($row['phone2']) { $infor = new \Contact\Model\Contact\Information(); $infor->setCompanyId($row['companyId']); $infor->setType(\Contact\Model\Contact\Information::TYPE_CRM_ACCOUNT); $infor->setItemType(\Contact\Model\Contact\Information::ITEM_TYPE_MOBILE); $infor->setItemId($accountId); $infor->setContent($row['phone2']); if (!$inforMapper->isExisted($infor)) { $infor->setCreatedById(1); $infor->setCreatedDateTime($currentDateTime); $inforMapper->save($infor); } } // alternativePhone if ($row['alternativePhone']) { $infor = new \Contact\Model\Contact\Information(); $infor->setCompanyId($row['companyId']); $infor->setType(\Contact\Model\Contact\Information::TYPE_CRM_ACCOUNT); $infor->setItemType(\Contact\Model\Contact\Information::ITEM_TYPE_MOBILE); $infor->setItemId($accountId); $infor->setContent($row['alternativePhone']); if (!$inforMapper->isExisted($infor)) { $infor->setCreatedById(1); $infor->setCreatedDateTime($currentDateTime); $inforMapper->save($infor); } } // email if ($row['email']) { $infor = new \Contact\Model\Contact\Information(); $infor->setCompanyId($row['companyId']); $infor->setType(\Contact\Model\Contact\Information::TYPE_CRM_ACCOUNT); $infor->setItemType(\Contact\Model\Contact\Information::ITEM_TYPE_EMAIL); $infor->setItemId($accountId); $infor->setContent($row['email']); if (!$inforMapper->isExisted($infor)) { $infor->setCreatedById(1); $infor->setCreatedDateTime($currentDateTime); $inforMapper->save($infor); } } // website if ($row['website']) { $infor = new \Contact\Model\Contact\Information(); $infor->setCompanyId($row['companyId']); $infor->setType(\Contact\Model\Contact\Information::TYPE_CRM_ACCOUNT); $infor->setItemType(\Contact\Model\Contact\Information::ITEM_TYPE_WEBSITE); $infor->setItemId($accountId); $infor->setContent($row['website']); if (!$inforMapper->isExisted($infor)) { $infor->setCreatedById(1); $infor->setCreatedDateTime($currentDateTime); $inforMapper->save($infor); } } // fax if ($row['fax']) { $infor = new \Contact\Model\Contact\Information(); $infor->setCompanyId($row['companyId']); $infor->setType(\Contact\Model\Contact\Information::TYPE_CRM_ACCOUNT); $infor->setItemType(\Contact\Model\Contact\Information::ITEM_TYPE_WEBSITE); $infor->setItemId($accountId); $infor->setContent($row['fax']); if (!$inforMapper->isExisted($infor)) { $infor->setCreatedById(1); $infor->setCreatedDateTime($currentDateTime); $inforMapper->save($infor); } } $totalConvert++; } $this->getViewModel()->setTerminal(true); $this->getViewModel()->setVariable('paginator', $paginator); $this->getViewModel()->setVariable('page', $page); $this->getViewModel()->setVariable('totalPages', $paginator->count() + 1); $this->getViewModel()->setVariable('totalConvert', $totalConvert); if ($page <= $paginator->count()) { $this->getViewModel()->setVariable('redirectUri', Uri::build('/system/tool/covertaccount', ['page' => $page + 1, 'totalConvert' => $totalConvert])); } return $this->getViewModel(); }
public function addAction() { /** @var \Zend\Http\Request $request */ $request = $this->getRequest(); $sl = $this->getServiceLocator(); /* @var $cityMapper \Address\Model\CityMapper */ $cityMapper = $sl->get('Address\\Model\\CityMapper'); $city = new \Address\Model\City(); /* @var $districtMapper \Address\Model\DistrictMapper */ $districtMapper = $sl->get('Address\\Model\\DistrictMapper'); $district = new \Address\Model\District(); $districts = array(); if (!!($cityId = $request->getPost('cityId'))) { $district->setCityId($cityId); $districts = $districtMapper->fetchAll($district); } $form = new \System\Form\User\Add($this->getServiceLocator()); $form->setCities($city->toSelectBoxArray($cityMapper->fetchAll())); $form->setDistricts($district->toSelectBoxArray($districts)); if ($this->getRequest()->isPost()) { $data = $this->getRequest()->getPost(); $form->setData($data); if ($form->isValid()) { $user = new User(); $user->exchangeArray($form->getData()); $user->setSalt($user->generateSalt()); $user->setPassword($user->createPassword()); if (!$user->getRole()) { $user->setRole(User::ROLE_GUEST); } if ($user->getBirthdate()) { $user->setBirthdate(DateBase::toCommonDate($user->getBirthdate())); } $user->setActive(1); $user->setCreatedById($this->user()->getIdentity()); $user->setCreatedDate(DateBase::getCurrentDate()); $user->setCreatedDateTime(DateBase::getCurrentDateTime()); $userMapper = $this->getServiceLocator()->get('\\User\\Model\\UserMapper'); $userMapper->save($user); if ($form->get('afterSubmit')->getValue()) { return $this->redirect()->toUrl($form->get('afterSubmit')->getValue()); } } } $viewModel = new ViewModel(); $viewModel->setVariable('form', $form); return $viewModel; }
public function mcaAction() { $dbSql = $this->getServiceLocator()->get('dbSql'); $dbAdapter = $this->getServiceLocator()->get('dbAdapter'); /* @var $dbSql \Zend\Db\Sql\Sql */ $update = $dbSql->update(\System\Model\ModuleMapper::TABLE_NAME); $update->set(['updatedDateTime' => null]); $query = $dbSql->buildSqlString($update); $results = $dbAdapter->query($query, $dbAdapter::QUERY_MODE_EXECUTE); $update = $dbSql->update(\System\Model\ControllerMapper::TABLE_NAME); $update->set(['updatedDateTime' => null]); $query = $dbSql->buildSqlString($update); $results = $dbAdapter->query($query, $dbAdapter::QUERY_MODE_EXECUTE); $update = $dbSql->update(\System\Model\ActionMapper::TABLE_NAME); $update->set(['updatedDateTime' => null]); $query = $dbSql->buildSqlString($update); $results = $dbAdapter->query($query, $dbAdapter::QUERY_MODE_EXECUTE); $updatedDateTime = DateBase::getCurrentDateTime(); $dir = realpath(BASE_PATH . '/module') . '/'; $modules = scandir($dir); $total = 0; $moduleMapper = $this->getServiceLocator()->get('\\System\\Model\\ModuleMapper'); $controllerMapper = $this->getServiceLocator()->get('\\System\\Model\\ControllerMapper'); $actionMapper = $this->getServiceLocator()->get('\\System\\Model\\ActionMapper'); foreach ($modules as $moduleName) { if ($moduleName != '.' && $moduleName != '..' && !strpos($moduleName, 'svn')) { //$moduleName = strtolower($moduleName); $module = new \System\Model\Module(); $module->setName(strtolower($moduleName)); $module->setCreatedById($this->user()->getIdentity()); $module->setStatus(\System\Model\Action::STATUS_ACTIVE); $module->setCreatedDateTime($updatedDateTime); $module->setUpdatedDateTime($updatedDateTime); if ($moduleMapper->isExisted($module)) { echo "<b>{$module->getName()} ==========================</b><br>"; $module->setUpdatedDateTime($updatedDateTime); } else { echo "<b style='color:blue'>{$module->getName()} ==========================</b><br>"; } $moduleMapper->save($module); $controllerDir = @scandir($dir . $moduleName . '/src/' . $moduleName . '/Controller/'); if ($controllerDir) { foreach ($controllerDir as $controllerFile) { if ($controllerFile != '.' && $controllerFile != '..' && !strpos($controllerFile, 'svn') && is_file($dir . $moduleName . '/src/' . $moduleName . '/Controller/' . $controllerFile)) { $controllerName = trim(strtolower(str_replace("Controller.php", "", $controllerFile))); $controller = new \System\Model\Controller(); $controller->setModuleId($module->getId()); $controller->setName($controllerName); $controller->setStatus(\System\Model\Action::STATUS_ACTIVE); $controller->setCreatedById($this->user()->getIdentity()); $controller->setCreatedDateTime($updatedDateTime); $controller->setUpdatedDateTime($updatedDateTime); if ($controllerMapper->isExisted($controller)) { echo "<b>{$controllerName} ---------------------------------</b><br>"; $controller->setUpdatedDateTime($updatedDateTime); } else { echo "<b style='color:blue'>{$controllerName} ---------------------------------</b><br>"; } $controllerMapper->save($controller); require_once $dir . $moduleName . '/src/' . $moduleName . '/Controller/' . $controllerFile; $actions = get_class_methods("\\" . $moduleName . "\\Controller\\" . $controllerName . "Controller"); if (is_array($actions)) { foreach ($actions as $actionName) { if (strpos($actionName, 'Action') && !in_array($actionName, ['getMethodFromAction', 'notFoundAction'])) { $actionName = str_replace('Action', '', $actionName); $action = new \System\Model\Action(); $action->setControllerId($controller->getId()); $action->setName($actionName); $action->setStatus(\System\Model\Action::STATUS_ACTIVE); $action->setDisplay(\System\Model\Action::DISPLAY_INACTIVE); $action->setCreatedById($this->user()->getIdentity()); $action->setCreatedDateTime($updatedDateTime); $action->setUpdatedDateTime($updatedDateTime); if ($actionMapper->isExisted($action)) { $action->setUpdatedDateTime($updatedDateTime); } else { echo ++$total . ": <b style='color:blue'>{$actionName}</b><br>"; } $actionMapper->save($action); } } } else { echo '<b style="color:red">' . ucfirst($moduleName) . '_' . ucfirst($controllerName) . 'Controller </b> has no actions<br>'; } } } } } } die; }
public function googleAction() { $request = $this->getRequest(); if (trim($request->getQuery('redirect'))) { $_SESSION['redirect'] = trim($request->getQuery('redirect')); } $viewModel = new ViewModel(); $viewModel->setTerminal(true); $response = $this->getResponse(); /* @var $googleLogin \User\Service\GoogleLogin */ require_once 'Google/Client.php'; require_once 'Google/Service/Oauth2.php'; require_once 'Google/Http/REST.php'; require_once 'Google/Http/Request.php'; require_once 'Google/Service/Resource.php'; require_once 'Google/Auth/OAuth2.php'; $config = $this->getServiceLocator()->get('Config'); $clientId = $config['login']['google']['clientId']; $clientSecret = $config['login']['google']['clientSecret']; $url = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://'; $url .= $_SERVER['HTTP_HOST'] . '/user/signin/google'; $client = new \Google_Client(); $client->setApplicationName('MyFirstTest'); $client->setClientId($clientId); $client->setClientSecret($clientSecret); $client->setRedirectUri($url); $client->setScopes(array('https://www.googleapis.com/auth/userinfo.email', 'https://www.googleapis.com/auth/plus.me')); $error = $this->getRequest()->getQuery('error'); if ($error) { echo '<script>window.close()</script>'; } $code = $this->getRequest()->getQuery('code'); if ($code) { $client->authenticate($code); $_SESSION['access_token'] = $client->getAccessToken(); $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL)); } else { $authUrl = $client->createAuthUrl(); return $this->redirect()->toUrl(filter_var($authUrl, FILTER_SANITIZE_URL)); } //TODO: xoa vi cam giac dau co can if (isset($_SESSION['access_token'])) { $client->setAccessToken($_SESSION['access_token']); } if ($client->isAccessTokenExpired()) { $authUrl = $client->createAuthUrl(); return $this->redirect()->toUrl(filter_var($authUrl, FILTER_SANITIZE_URL)); } //End TODO if ($client->getAccessToken()) { $oauth2 = new \Google_Service_Oauth2($client); $userInfoPlus = $oauth2->userinfo->get(); $_SESSION['access_token'] = $client->getAccessToken(); if (!$userInfoPlus->getEmail()) { echo '<script>window.opener.alert("Không tồn tại thông tin Email của tài khoản trên");window.close()</script>'; } $arrResponse = array('email' => $userInfoPlus->getEmail(), 'name' => $userInfoPlus->getName()); $user = new User(); $userMapper = $this->getServiceLocator()->get('User\\Model\\UserMapper'); $serviceUser = $this->getServiceLocator()->get('User\\Service\\User'); if (!$serviceUser->authenticateGoogle($arrResponse['email'])) { $user->setActive('1'); $user->setEmail($arrResponse['email']); $user->setRole(\User\Model\User::ROLE_MEMBER); $user->setFullName($arrResponse['name']); $user->setCreatedDate(DateBase::getCurrentDate()); $user->setCreatedDateTime(DateBase::getCurrentDateTime()); $userMapper->save($user); // check nếu user đó đã dc mời tham gia dự án sẽ gắn luôn nó với dự án $projectUser = new \Work\Model\ProjectUser(); $projectUser->setUserEmail($user->getEmail()); $projectUser->setUserId($user->getId()); $projectUserMapper = $this->getServiceLocator()->get('\\Work\\Model\\ProjectUserMapper'); $projectUserMapper->updateUserId($projectUser); $this->redirect()->toUrl($url); } else { // check nếu user đó đã dc mời tham gia dự án sẽ gắn luôn nó với dự án $projectUser = new \Work\Model\ProjectUser(); $projectUser->setUserEmail($serviceUser->getUser()->getEmail()); $projectUser->setUserId($serviceUser->getUser()->getId()); $projectUserMapper = $this->getServiceLocator()->get('\\Work\\Model\\ProjectUserMapper'); $projectUserMapper->updateUserId($projectUser); if (!$_SESSION['redirect']) { return $this->redirect()->toUrl('/'); } else { $redirect = $_SESSION['redirect']; unset($_SESSION['redirect']); return $this->redirect()->toUrl($redirect); } } } else { $this->redirect()->toUrl($client->createAuthUrl()); } return $response; }
/** * get password */ public function getpasswordAction() { $viewModel = new ViewModel(); /** @var \Zend\Http\Request $request */ $request = $this->getRequest(); $sl = $this->getServiceLocator(); $translator = $sl->get('translator'); /* @var $userMapper \User\Model\UserMapper() */ $userMapper = $sl->get('User\\Model\\UserMapper'); /* @var $userService \User\Service\User() */ $userService = $sl->get('User\\Service\\User'); /* @var $form \User\Form\GetActiveCode() */ $form = new \User\Form\Password\Forgot($this->getServiceLocator()); $message = ''; $viewModel->setVariable('form', $form); if ($request->isPost()) { $form->setData($request->getPost()); if ($form->isValid()) { $formData = $form->getData(); $user = $userMapper->get(null, null, $formData['email']); $resetKey = md5($user->getEmail() . strtotime(DateBase::getCurrentDateTime()) . rand(1, 100)); $user->setResetKey($resetKey); $userMapper->updateColumns(['resetKey' => $resetKey], $user); $userService->resetPassword($user); $viewModel->setVariable('successMessage', 'Yêu cầu đổi mật khẩu của bạn đã được thực hiện. Vui lòng kiểm tra mail và thực hiện theo các bước hướng dẫn.'); } } return $viewModel; }